Senior Software Engineer

I'm a senior software engineer with 11 years of industry experience who is passionate about using software to solve real problems. I have a history of finding challenges that can be assisted with automation and building tools that do just that.

In my career I have touched a range of problem areas including data pipelines, simple Web services, performance profiling and optimisation of high load services, tooling used by warehouse workers, asynchronously interacting with IoT hardware over local and remote networks; and creation and maintenance of an internal portal for user information. As well as interacting with third party developers, infrastructure and tooling for testing, application deployment, and cloud sysadmin activities.

I have also developed a focus on how I work to ensure what I build matches the constraints of the problems they aim to help with; and also don't lead to a maintenance burden over time. I am comfortable spreading these techniques to my colleagues so we can all benefit from thinking about software in a way that lets us have confidence in our changes.

I'm interested in finding a work environment that encourages pragmatism when it comes to how we work, what we work on, and how technical debt is bought, managed, and paid back.


In Short

  • Over 16 years experience with Python as of 2022
  • Over 11 years industry experience as of 2022
  • Over 8 years focus on server/cloud operations
  • Extremely comfortable with Git and scripting
  • Experience with AWS and GCE cloud environments
  • Experience in a microsystem environment backed by GCE managed K8S
  • History and interest in building tools that become invaluable to my colleagues
  • Approachable, available, honest and helpful
  • Highly pragmatic and understands when compromises need to be made
  • Ready and willing to call out concerns early so we can avoid problems

Approach

I'm very quick at creating solutions and part of that is understanding what should be built.

I make a conscious effort to be available, approachable and honest. Creating a good experience is not limited to creating magic code and throwing it over the fence! Effectively helping users involves being able to offer guidance through debugging strange behaviour with the product and knowing who in the business is appropriate to ask when more insight is required.

I have strong opinions about how to make software and try my best to cater my methods to the way my autistic brain works. I believe that agile rituals are useful tools that should be adjusted to better suit the team rather than the team changed to better suit the rituals. Context of a situation will always be the most important factor in deciding how a team should operate, and a foundation of openness, honesty and good faith combined with a desire to reflect and improve will always lead to a productive and happy team.

I also advocate for approaches to describing and deploying software changes that let us ship quality code faster and with confidence.

Learning Style

I have found that I learn best when I have a need for the skill or technology that I'm trying to gain. This means I tend not to dedicate time to research just for the sake of knowledge. For example I attempted to learn Rust but because I had no need for it I couldn't find the motivation to continue that. It did seem interesting though!

In the Photons framework I mention below, it was very clear very early on that using Python async/await would be very useful and this is around the time that Python 3.5 just came out. And so over those 5 years I created a number of patterns and utilities for working with await/async and how it behaves. This knowledge was not only fun and interesting to learn but enabled me to write Photons in a way that is maintainable and scales at run time.

My understanding of Redux Saga comes from finding Redux Thunk difficult to scale and in my search for an alternative I decided Saga would be much better and incorporated that into those projects instead.

I learnt TypeScript and modern PHP as part of uplifting old code at Papercut and along with learning type hints in Python I have a large appreciation for type annotations helping us clarify the code for humans and the computer.

I find this approach lets me to get the most out of the skills I pick up; and for the technologies I don't personally know it's usually easy to find someone who can provide opinion or guidance.