Every single day before I became an engineering manager, all I wanted to do was become one. In this dream role, I would have agency to make the right decisions for the team instead of squawking about everything that could be better. I’m currently three years into the manager role that I desperately wanted to achieve, ample time to fairly assess each role in its own right.
Reminiscing on being an individual contributor is likened to adults wistfully recounting their youthful days. For a second, I close my eyes amidst the Slack messages from cross-functional department leads. I take a break from planning the roadmap, planning the project, planning the offsite, planning sprint planning. I let myself dream of the life of no plans, of plans being put in front of me.
Sometimes when I was in the coding flow (that blissful state equated to runner’s high where it feels painless and so right), I felt like a brilliant wizard - creating something from nothing, where letters and words become delightful user interfaces. I often admired my code for itself - its composability, efficiency and readability. I would high-five each little function for taking in parameters, gently massaging them and plating them nicely for the next function. Hell, I even miss putting print statements everywhere, and I mean everywhere, only to realize that some cell reuse problem was mangling my values.
I definitely do not miss spending four hours on a bug that turned out to be a compiler optimization flag. I do not miss feeling like a cog in the wheel. But I deeply, deeply miss turning off my notifications and architecting elegant solutions to features that millions of people would use.
When I examine myself as an asset to a company, there’s no doubt that my value comes from enabling engineering teams to execute large projects and keeping everyone happy through the process. But if I let myself for a second disregard this drive to fulfill my own sense of career accomplishment, I cannot wait to get back into my little code world.