Enjoying programming again
I've been a (Software) Engineering Manager now for around 18 months and in that time, I've not been particularly hands on with actual code at work. Most of the hands on work I've done has been limited to terraform/AWS stuff - particularly early on where I was filling in a skills gap in the team.
I sometimes worried about my hands on programming skills atrophying - and they have somewhat. The muscle memory isn't there like it used to be where I was writing code every day for work. But, as I'll come to later on, I'm confident that can come back after a little more practice.
But something I had not admitted to myself until recently, is that in the 1-2 years prior to becoming an EM, I was becoming a little burned out on writing code professionally, it wasn't as interesting to me anymore and it was becoming a bit tedious. As a Senior Software Engineer at that time, a good part of my role was a level of technical leadership and mentorship, I enjoyed that more than I enjoyed writing the code.
I was happy to provide guidance, reviews and technical direction for other members of the team. I enjoyed the higher level problem solving and architectural design decision - which was one of the reasons I gravitated towards the EM role, where my position is split between:
- People management
- Delivery management
- Technical management
I have an excellent team that I can rely on for the core technical implementation, and I can contribute and help provide overall technical direction. It's a role I enjoy.
My time at the moment has meant I haven't been able to get hands on with the core codebase by any real amount, although I do look over what changes go into the codebase fairly frequently. I do want to get hands on more often, but I'm also conscious of dropping in for only short periods of time and being more of a hinderance than a help - given I can't dedicate the same amount of time as the engineers on my team.
I don't want to join, make a mess, then leave them to sort it out - the reality is I'm nowhere near as familiar with the codebase as the engineers are - so my level of contributions when only dedicating a small amount of time to it is never going to be at their level.
The core point of this though, is that I did step into a different role for a reason: I wasn't enjoying writing code professionally as much as I used to and had found more enjoyment in other areas, particularly in leadership and architecture.
Return of a hobby
What I have found in recent months though, is that I have been writing a lot more code for my own personal use and hobbies than I have done in years. I'm enjoying it, and I'm enjoying it a lot. It always felt like a shame that after writing code professionally for a few years, my enthusiasm for going home and doing the same thing began to wane. I still did bits here and there, but it was never big projects that I worked on for weeks/months.
For the first time in probably years, I've been hammering away at personal projects for hours at a time and struggling to put a problem down. It feels like I've rediscovered my enjoyment of programming again.
I rediscovered this in part because I wanted to brush up on my C# .NET skills, as I mentioned in this post here. Whenever I've wanted to write any new non-web code recently, I've deliberately done it in C# .NET 7 - so that I can improve my skills around that and hopefully get a bit more hands on with the team I lead.
It's probably never going to be my preferred language or platform, but it's decent, and I've always held the opinion that the most interesting parts of software engineering for me is less so the languages, frameworks or technology and more the enjoyment of solving a problem. I do enjoy using good languages and tech, but I can still get a lot of enjoyment even when the language or technology isn't my favourite.
The upside of me rediscovering enjoyment for writing code is that I do feel those aforementioned atrophied muscles rejuvenating. It's a confidence booster that I can still get back into the swing of things if I wanted to, even if I do still want to progress my career in another direction.
One more thing I'll mention that I think has helped: GPT/Github Copilot. I'm currently working on a financial tool for my own personal use using the Open Banking APIs I mentioned in this post, and one of the things that often saps my enthusiasm for such projects is that I don't really enjoy pulling together even basic UIs whilst I'm in the prototyping stage.
Being able to tell copilot: "I've developed these APIs, they do x, y and z, this is what the response looks like, and I want a UI that does <things>" and it run off and provide a perfectly usable UI for me to continue developing the core functionality of my application is great. It keeps the momentum going and gets me much further into personal projects on average than before.
I'll definitely be going back and revisiting/rewriting a lot of the front end stuff - it is very much hacked together through copilot and not ideal - but it does the job well enough that I can progress for now. This is one of the big advantages of Copilot for me.