In our organization, like a lot of others, we have three levels of programmers: developers, senior developers, and lead developers. I am one of the lead developers, and in that capacity I am responsible for divvying up tasks amongst my team of eight developers, conducting code reviews, implementing team standards, etc. I do not do any hiring or firing and I can't help you if you need a day off; you need to go to my boss for that. My title mearly means that I am in charge of projects, and not people.
Earlier today I went to our floor's breakroom to eat my lunch (barbecue shortribs and mashed potatoes, yum!) today and overheard some of my fellow developers (we'll call them Terry, Mitch, and Evan) talking. The conversation went something like this:
TERRY: So, wait, are any of us senior developers?
MITCH: I am.
EVAN: I think he's the only one.
TERRY: So no leads here?
MITCH: Nope, don't think so.
TERRY: What's it like being a senior?
MITCH: Not a whole lot different, I still just write code.
EVAN: Yeah, that's what I was wondering. I know becoming a lead means you have to do a lot more paperwork and all, but I wasn't sure if that was true of the seniors.
TERRY: I don't think I want to be a lead. I'll just be a senior. Being a lead just seems so....
(All three notice me walking past them)
TERRY: No offense, Matt. (I'm not sure why she thought I would take offense)
ME: None taken. But why don't you want to be lead? I rather enjoy it.
TERRY: ...Because, really, I don't want to manage, I just want to write code.
It took me a few seconds to digest that response, because I still feel that way. I didn't ever want to be a manager, I wanted to be a developer. I want to make things, understand things, write code, and solve problems. I've never thought of myself as a manager, but that's what Terry thought my job was, and she probably wasn't the only one.
We got to talking a little more about what our individual jobs actually entailed, and I got to thinking about why I so enjoy having this lead position, even though I do less coding than I used to. They asked if my job entailed managing people, and I told them that I really only manage projects and workloads. Terry reiterated that she didn't want to manage at all, she just wanted to write code and solve problems. I told her, straight up, that this was perfect if that's what suited her. She should do what she likes, and if she likes to be head-down in the code, great! Mitch and Evan agreed with Terry, and we parted ways amicably.
The whole conversation prompted me to examine why I like my current position so much, and see if there was a possible reason I could find why I loved it so much while others simply didn't. Obviously, it could just be that that's what they like, and this is what I like. However, it felt like something more than that, like some greater fear was attaching itself to this problem. I've had this particular fear before, and while it probably doesn't affect everyone, I've needed to come to terms with it. I wonder if any part of this "I just want to code" mentality could arise from the fear of losing control.
IMHO we programmers are accustomed to being in control. We write software, and that software does exactly what we tell it to exactly when we tell it to in excruciating and exacting detail. We have to think in very literal and controlling terms, because the computer that will execute our software is a demanding heartless little bugger who will throw a tantrum if one of the bits are even slightly out of place. We have to consider every detail, every possibility, every eventuality, and occasionally we get good enough at it that we can almost predict what's going to happen before it happens. In this way, we try to control for every possible outcome. It's my opinion that good programmers need to be control freaks to a certain extent to be effective at their jobs.
What I'm finding is that the more I move up the ranks, the less direct control I actually have. When I was working at my first job I was in complete control of everything, a consequence of being the only programmer on the team. As I switched to different jobs, I also moved up the corporate ladder, from developer to senior developer to my current position of lead developer. At my current position, I've had to devote some of my time to paperwork and planning, and that takes away from my coding time. In a very real way, it feels like I've had to give up control, as much of the code I am responsible for is now written by other people, and I don't have a direct hand in its creation.
At the same time, though, the position I have allows me to tackle larger, more complex, more interesting problems. At my current position I can plan for entire projects, build rules and guidelines and help my team follow them, and generally help solve problems in ways I couldn't before. I don't just get tasks and then go do them, I create the tasks and weave them together so that the pattern that results is more beautiful than the parts.
I've come to the realization that what I actually like to do is solve problems, and being a lead lends me access to information at a higher level that I can use to solve bigger and more complex issues. I can solve problems now by planning, by researching, by learning, and finally by coding. I have another set of tools in my toolbox, ones that will serve me for the rest of my career, and I couldn't be happier about where it's taking me.
Terry's response took me aback because she saw me as a manager, when I see myself as a planner. I lay out the pieces of the puzzle and put a few together to form a framework, and let my team fill in the gaps and complete the picture. Even though it means giving up some control, I'm happy to do that, because I now have a fuller, more complete understanding of how software development actually happens, and what I can do as a lead to ensure the process goes as smoothly as possible.
I don't know if I really have a conclusion for this post; I mostly wrote it down to get my thoughts on paper, as it were. I don't even know if the fear of the loss of control is an issue for everyone, but it's one I've encountered before and one I've dealt with myself. What I do know is that I love being a lead developer because of the perspective it provides me and the problem-solving knowledge I have gained from being in this position. Others don't see this job the way I do, and that's perfectly fine. They may just want to be head-down coders, and there's nothing wrong with that. But if you were bitten by the same bug that got me and you want to move up the ranks, you're going to have to accept losing some direct control over the code being written. The more I think about that, the more I realize I'm OK with it.