This article has always stuck with me:
It's an interesting read about a woman in the late 70s/early 80s, who enrolled in a COBOL bootcamp, became a programmer, and eventually found herself promoted out of programming. Obviously a lot has changed since then, but I think this is still how it generally works.
Have you been promoted out of programming? Or avoided a promotion because you want to continue programming? I'm curious how everyone feels about this.
Top comments (20)
I've been a team lead and I'd do that again, but I've turned down invitations to interview for higher-level roles because I prefer to stay directly involved with architecture and development. You can always try to go home again -- I've seen it attempted -- but somewhere around the VP level at a stable, established company, if you're contributing code daily or involving yourself closely in the design process, you're doing it at the expense of your real responsibilities. I don't like having to decide between what I want to be doing and what I'm supposed to be doing.
This is incredibly true, and I have seen a CIO fired for, in part, exactly what you mention above. I also once had a manager who, as it turns out was also an amazing manager, but clearly had a nagging feeling every day that he didn't get to do network admin.
I've had chances to apply to team lead role, but I didn't consider it as an option. I like tech more than I like people.
I go in and out of programming as my core responsibility in phases. Sometimes those phases are day-to-day and sometimes week-to-week or otherwise. I have no idea what the future holds, but I plan to keep coding most days forever.
I have only changed jobs a couple of times since I started programming professionally. But each time I made it clear that I was not interested in management positions. I enjoy getting my hands on the code. One of the benefits I bring to my team is trail-blazing unfamiliar tech to provide a path forward.
Plus I just do not like how most large corporations are setup in terms of management. It has never sat right with me that managers make (sometimes significantly) more than the people they manage. They are serving a necessary function in the organization just like everyone else. I think in many cases it is a payoff for becoming an agent of the company instead of a supporter of their people. IOW, they get paid more to be the ones who inflicts the will of the company onto the company's employees. And the will of the company may at times be different even from the best interests of the company, depending on who is currently in charge. In such a place, I would not make it as a manager anyway.
I'm willing to take on additional responsibilities up to the role of a team lead, but at this point I have zero interest in a role in which my primary tasks are not coding. Maybe someday that will change, but I currently love writing code too much to consider a position where I don't get to do that.
I went back straight to programming from being "software architect" in big companies —something I found in Mexico to be mostly managing and not actually programming or sometimes even creating architectures.
It was hard because I also decided to be independent, but when I got used to not having a regular paycheck and struggling for good projects, (less and less, but still)… in the end I do what I like, and that is soo much rewarding.
When I work with people, they are successful senior peer programmers who LOVE to code like me, and we share expertise, solve problems, create stuff… It's really fun.
And I get to make music in my free time :)
I think being promoted out of programming is often because people have a too narrow definition of what programming is. If you consider coding to be the job, then yes, it's easy to be promoted out of it. But's it definitely possible to "rise" all the way up to a CTO level and still be a programmer.
Programming is about finding technical solutions to problems. This includes the code, the people, the processes around it. Programming is centered on the technical part, but it isn't necessarily the dominant part. People will have comfort zones, and promotions often risk disrupting them, but it doesn't necessarily mean it's not programming anymore.
Done it as a team lead for a period of time. May do it again with the right people. I enjoy the requirement gathering sort of stuff with design and programming and I like getting to know the users in the business and how that functions.
I consider the role of a team lead to always help out your team in an intangible function or being the one to advocate for something your team needs and to guide for them to learn. If I have to be management management I have no idea how that would play out.
And the risk is .. if your tech skills become rusty, middle-management is a soft target for downsizing.
Exactly. Right on the nail. I keep myself also coding/design/requirements quite a bit so I don't rust out. Also I just want to change it up.
I never actually got promoted, just had more responsibilities piled on to me with no actual change in title. At some point, I found myself being a team lead on a production support team, sitting in meetings all the time, deploying fixes, and troubleshooting a lot, but rarely being the person to implement a fix.
Note that this was in a more old school environment (no devops, failed attempts at actual agile, weird proprietary dev. tools/language), so any of the usual challenges that would have come with that role were intensified. I liked the parts where I did some work with customers, liasioned to the network folks, BI team, etc. and to some extent the architectural pieces. What I hated though, was being officially responsible for others performance, having to deal with headbutting personalities, etc.
I'm thrilled to mentor juniors, help facilitate, give feedback, etc., but when it became my primary job and my personal failures to keep up with everything led to others getting bad reviews, project failing, etc., I hated it. Granted, again, it was a bad situation on many levels, and I'd consider stepping up to a little more leadership again, but not for a while. I quit that job, went back to being an individual contributor -- this time at a consulting company, so I can actually leave projects eventually -- and then did a 90 degree turn into data engineering. I've got some time before I need to worry about the promotion past code bit again.
That said, it is a concern I have with not only our industry, but our culture in general. Why does everyone need to only be on this path of "move up or out!"? Why can't we accept that some people just want to be good at their day job, stay in their day job and share that expertise, and then go home at the end of the day? Management (people or projects) is a completely different skillset, and on some level so are some of the other high level IT jobs that don't involve code. I've learned enough languages that jumping into, say Python, isn't a stretch for me. Swapping out all the coding to a leadership or high level tech role is not the same -- it's at least as hard as going from front end to trying to run a server room (that's like a locally hosted miniature version of the cloud for the kids out there) or dumping any of us into an embedded system or something similarly different from web. Come to think of it, I'd have an easier time jumping on to a mainframe project than I did that role.
Currently I'm a in a management position, but just half of my time is people management, and the other half is coding. Until now it has been a great trade off, I wanted to learn an entirely new set of skills, but without leaving all my coding tasks. I'm also able to be involved in more projects than before, through my team, but what I'm personally coding is no more than fixes and small features. Being in position to help others develop is what really makes the people management enjoyable, but I'm sure I wouldn't leave my tech half anytime soon, if ever.