Senior Software DevEx Engineer

I'm a senior software developer experience engineer with over 13 years of industry experience (as of 2024) who is passionate about writing software that ages well.

My career has been defined by two tracks: the day to day tasks that I'm assigned; and improving the technical productivity of my colleagues.

Over this time I have worked as a Software developer before embarking on a detour into the sysadmin/cloud operations space for nearly a decade before returning as a developer and moving towards the devEx space.

In my career I have touched a range of problem areas including data pipelines, Web services, tooling used by warehouse workers, interacting with IoT hardware over local and remote networks, creation and maintenance of web-based internal portals for user information, activities around bringing software into deployed environments, interacting with third party developers, and paying back technical debt in large codebases.

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 have reached a level of seniority where I enjoy and seek out opportunities to pass on these techniques and attitudes to others to increase the quality of the software we are all working on.

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 18 years experience with Python as of 2024
  • Over 13 years industry experience as of 2024
  • Over 8 years focus on server/cloud operations
  • Extremely comfortable with Git and scripting
  • Experience with AWS and GCE cloud environments
  • Well defined software philosophy and approach
  • History and interest in building tools/processes 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.

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.

I learnt TypeScript and modern PHP as part of uplifting old code at Papercut.

And my efforts to improve the static typing maturity at Octopus/Kraken has given me a deep understanding of how to use mypy effectively. 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.