Being a single guy was fun. I could stay up all night programming, sleep in on weekends, hang out with friends, go to bars and clubs, hop on a plane on short notice and disappear on vacation for a week or five. I’d go out to a movie or restaurant without a second thought. I lived overseas for a couple of years. Sure, there were parts of it that were tremendously stressful (Does she like me? She doesn’t like me. Maybe she does like me! Or maybe not…), but overall it was a fun, carefree time.
Being married with kids is different. It’s impossible for someone without kids to understand just how all-consuming it is to be responsible for someone else’s well-being for every moment of every day, but suffice it to say that it’s a complicated mess of experiences divided into 5 minute chunks: mind-numbing boredom, excitement, rage, joy, fascination, heart-melting love, abject terror, pride… Everything is tremendously intense, and your day can turn on a dime, usually for reasons completely beyond your control. Being a parent can give you a tremendous feeling of satisfaction, but it frequently isn’t fun.
I sometimes think about this when thinking about management vs. individual contributor roles. I love to code. I love the sense of the keyboard under my fingers, writing boilerplate for loop code while thinking ahead to the next line, thinking through interfaces, database schemata, class structure. I love optimizing code, and snapping a UI together with visual tools. I love the feeling of being up at 2 am, drunk on caffeine and junk food, cranking through huge swaths of functionality. Coding is fun.
I don’t code professionally any more. Sure, I occasionally put together a couple of Python scripts to do some reporting, run some SQL queries, grep some logs, but it isn’t the real deal. Last year I had a blast putting together an iPhone app at home (including coding the API on the backend servers), but being a parent means you can only have one hobby at a time, and something far more important came along.
Managing just isn’t the same as coding. On good days you can accomplish a lot, or recognize that a lot of past work (and/or risks taken) have turned out well. On bad days it can be incredibly tedious, and you might wonder what you’re being paid for. At best, you can make other people’s lives better – giving them exciting projects to work on, helping them toward success, pushing them to grow, looking for opportunities to help them forward in their careers. Sometimes you’re able to help defuse a crisis. Or mentor someone through a difficult problem. Or advocate for someone who’s doing a great job. Or use rusty debugging skills to help someone figure out why their code isn’t working. All of which is incredibly satisfying.
But it isn’t always fun.
And that’s OK. As a parent, I might want a vacation from my kids from time to time, but the satisfaction of this life is worth the cost. Likewise, though management can’t compete with the visceral enjoyment of coding, it has its own set of satisfactions and attendant pride that are an entirely different kind of reward. I won’t say that they’re comparable – they aren’t. They’re different, and for different types of people. The me who could be successful as an individual contributor, focusing entirely on code, pulling the occasional allnighter, and ignoring the larger business context, was a different kind of person (and one who didn’t have to get home early to help feed the kids!). I envy him, sometimes. But in the same way that a desire for a vacation from my kids doesn’t mean that I want to be out from under the yoke of that responsibility, envying the coders their tasks doesn’t mean that I want to trade. Satisfaction might not be as much fun, but fun isn’t always as satisfying.
I think individual contributors can also grow into more satisfying but ‘less fun’ roles. A mature coder doesn’t pull all-nighters, understands the business context, and requires very little management beyond a direction. Unfortunately, many organisations do not provide an environment for Individual Contributors to thrive – ICs in these organisations are expected them to pull all-nighters (or at least work long hours), are kept in the dark about business decisions, and are micro- or overly- managed.
Many of the most successful tech companies (Microsoft, Google, for example) provide excellent non-managerial career paths for ICs, keeping people doing what they’re good at. And there are even companies that avoid having almost any management at all (Valve).
An organization that can’t keep its high-caliber ICs satisfied, without having them change tracts to a management career, should take a look at why that is the case. It might be a more successful organization afterwards.