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 worked under people like that before, where a techie moves into management but clearly can't let go of the low-level details. Instead of finding a suitable outlet in their free time, they meddle with the code/database, and everyone reporting to them suffers for it.
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.
At least you know yourself well enough to acknowledge that. It seems like some people figure, how hard can leading/managing people be, I'll just do everything. I think each role takes a certain set of talents/interests. But maybe someday those of us who are techies will find we want to mentor other people and move into the leadership roles.
Yep, management needs a different type of skill compared to development. I feel confident mentoring my colleagues, but that's just a tip of the iceberg.
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 :)
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 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.
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.
It all depends on your experiences in a professional programming environment.
Programmers who like what they do, will probably turn down these kind of promotions if it means they won't get to do what they like anymore.
If you don't like what you do, you'll probably accept any promotion just to get away from what you're doing now.
During my 5+ years programming career, I've done mostly bug fixing and very few features. It's so depressing that I can't wait to be promoted out of programming.
I've gone in and out of roles that required hands-on coding. One thing I think has helped me during those periods where my role wasn't about coding was to keep doing things like speaking at conferences/local meetups or writing. Often I'd choose a topic that was something I really wanted to learn but just didn't have a reason to focus on it (because my job wasn't coding). Also, I'd still keep up with all the coding blogs and other content. This makes it easier to transition back towards a role that involves coding (if you want to).
Avoided promotion due to most of the team leaving and I'm the one who stuck around.
Also I think being moved from being a software engineer into infrastructure engineer where the code I do is more on scripting and sys admin roles.
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.
I’ve never been offered a promotion, but I’m fine with that - I get to spend the days writing some kick-ass software and I’m perfectly fine with tolerating the nonsense of management
Not me, but a new colleague will join us next month who had been promoted to architect and switched jobs to get back into programming again.
Yes, I have, and I missed it so much that I "demoted" myself :-)
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.