Alternatively titled "There and Back Again...and maybe one more time for shits and giggles"
As a young developer, my career path was fairly straightforward. As a Junior Dev, I wanted to become a full-fledged Developer. From there it was on to Senior Developer, Lead Developer, and various flavors of Architect. The titles varied from place to place, but the progression was there - a progression driven by my desire to "do things my way."
Yes - shocker - I have opinions on how software should be written and the best way to get those opinions turned into ones and zeros is to be in charge. For better or worse, I have a knack for pitching my ideas and convincing people to take them seriously. A few successful ideas later, and inevitably, I would be tapped to take on a new role or responsibility.
There comes a time, however, when the way up is no longer clear. As an Architect or Team Lead, you've usually peaked, depending on the size of the company. The only place to turn is Management.
Over the years, my opinions of code have evolved. What started as fighting over a sort routine, morphed into a choice of frameworks, and later system-wide deployment strategies. As my responsibilities changed, the issues I fought grew and changed as well. The problems that concerned me had little to do with coding. They revolved around the developer's ecosystem - how do we best interface with our departments or how do we ensure quality with understaffed teams. Meta issues related more to how than what.
Eventually, I was offered the opportunity to formally manage a team. I had been the Lead Developer for the firm's enterprise application offering and the former boss was snatched up by Apple.
At first, I was thrilled. Now, finally, I would get a chance to work on the issues that interested me. I also was able to continue developing and play a hand in shaping our deliverables.
"When the Gods wish to punish us, they answer our prayers" - Oscar Wilde
I quickly learned that management, especially engineering management, is not the natural step above a technical leadership rule. The skill set needed to succeed as a good manager is distinct from the skills needed to be a good developer. This is not meant to imply that they are mutually exclusive, but they often do not go hand in hand.
At the time, I lacked some of those critical skills. I was a hacker. I wrote code. I solved problems. Unfortunately, when you are managing people, they tend not to like being thought of as problems that need solving. I butted heads with others when they just couldn't see how wrong they were. Issues that were black and white to me weren't so clear to Marketing or Sales.
So after a couple of years, I did the only sane thing I could. I accepted an offer to manage a bigger team with more autonomy at another firm. Out of the frying pan...
This decision was a horrible mistake and was evident nearly immediately. The staff was sorely underpaid and their skill levels showed it. The technology stack was outdated and, unfortunately, in languages/frameworks that I had little hands-on experience with. My authority was undermined by the President of the firm who allowed my staff to do end runs around me and go to him with their problems. And the biggest negative for me? I was a hands-off manager. I wasn't writing code.
After six months, I threw in the towel. I took the summer off to reflect on what it is I really wanted to do with my career and what my next move would be. The one thing I was fairly certain of was that I needed to be involved technically. If I had to spend 8 hours a day in Jira I would probably go crazy.
Interestingly, as I interviewed, there were numerous people who questioned my desire to code after having managed. I was asked, point-blank, if I would be able to follow someone else's designs and not assume a leadership role. I assured them that that was exactly the role I was looking for.
And it was. I focused on doing a good thorough job with the directions I was given. Sure, I had opinions about how things were done, and shared them, but I made a conscious effort to be more of a mentor than a leader. And you know what? It is satisfying. It feels good to be a part of a team again.
"The only thing that is constant is change" - Heraclitus
And here we are now - I've been asked to once again step into a Technical Lead role. I'm looking forward to it. I've learned a lot over the past three years about myself, how to interact efficiently with my team mates, how to be a leader. And really, that's what it's all been about. Managing is about budgets and approving vacations. Leadership is about motivating and teaching and producing a quality product. Ultimately, I want to grow as a leader. If there is a management title attached to it, so be it.