My personal musings on the common thought that a senior developer is only a stepping stone to a manager.
A Developer’s Career Path
You have become a developer because you love coding and the whole process of turning ideas into code. Building something out of nothing. Learning new technologies, programming languages, frameworks, etc. Figuring out how things work. From a Junior Software Developer, through a “regular” Software Developer, up to a Senior Software Developer, you have been enjoying everything you do.
Now, if you are good at what you do, or you exhibit managerial abilities, or there is simply nobody more suitable in your team, you may be asked to become a manager. The common thought at this point is that “Becoming a manager would be a natural progression”. I would like to argue that this is not always natural, and you should not be forced to do something you do not want to do.
Why Is It Not Natural?
First of all, if you take a person who loves coding and turn them into someone who does not code, what is the logic there? They will start feeling disconnected from their passion, and eventually burn out and start hating their job. They can force-push past this and code anyway, but when a manager is coding, it means that managerial duties are not being done. In other words, doing the work of the team means that the work of the manager is not being done. That is not good for the business. Why would you have a manager if they do not manage?
Second, if a person is a good coder, it does not automatically mean they will be a good manager. Development and management are two different types of jobs, both requiring specific skills and mind sets. It is similar to football players and football-team managers. If one is a good footballer, it does not say anything about them being able to take care of the business. Management is about working with people and setting them up for success. You get results by enabling people to do their work, not by doing the work for them. On the other hand, a developer is more of an individual contributor. You should be a manager if you enjoy getting work done through other people instead of doing it by yourself. Also, you should consider your social side first. If you are not a social person, you may not necessarily be good at management. Similarly, if a person has trouble taking care of themselves, do you think they will be good at taking care of others?
Third, there is a concept called Peter principle. Basically, it is an observation that people in a hierarchy tend to be promoted based on their past experience until they reach a position they are incompetent to do. Thus, a good developer gets promoted to a manager, and if they are not prepared for that, they will be unable to do their work. Turning a great developer into a poor manager cannot be good for the business. Instead, people should be promoted when they are already doing the job they are being promoted to. If a developer is not acting like a manager, do not promote them to one.
Fourth, some people take a managerial position for the extra money. While it is true that managers often earn more than their subordinates, this does not have to be necessarily always the case. If you have a group of specialists and a manager to manage them, why would the manager need to earn more if the experts are very hard to replace? As I have argued above, being a developer and a manager are generally two different jobs, and a good manager does not necessarily have to be a good developer. If the contributions of developers exceed that of the manager, I see no reason they should earn less. Anyway, remember that your wage is not everything. If you enjoy what you do (development), earning less could be a better option than being a manager earning more but feeling miserable and hating your job.
Fifth, do not take a managerial position only because there is nobody else in your team to do that. This is not your fault. You should choose your career path consciously. Otherwise, not only you will get harmed, but also the company.
So, what if you love development but do not want to become a manager? Fear not, there are other possibilities!
What Are My Possibilities?
While it is true that a senior developer can be a stepping stone to a manger, it does not have to be that way. There are generally two career paths (ladders if you will): a managerial one and a technical one. Becoming a manager will set you on the managerial path. However, you can stay on the technical track.
- Senior Developer – This can be a career position at which you want to stay. It is perfectly normal to have solid Senior developers who are happy being individual contributors, and do not want to move to management or general architecture.
- Lead Developer (Technical Lead) – Lead Developers lead projects and people purely from the technical viewpoint. They do not have direct reports and do not boss people around; they lead by gravitas. They generally act as a final judge of code aspects. However, your mileage may vary as their job description differs from company to company.
- Architect – If you are good at and enjoy designing complex systems and want to stay on the technical track, you may become an Architect. Technical architects are often considered the highest position on the technical career ladder. Their job descriptions also vary a lot, even to the point that some Architects do not write any code (which can be considered an anti-pattern).
Anyhow, I would like to stress that position titles and their job descriptions differ a lot, and the responsibilities of many roles are sometimes conflated to one.
Updates:
- 2021-04-01: You can watch my talk on advancement and career possibilities in software development.
- 2021-04-08: If you are interested in staying on the technical track, I recommend Will Larson’s book Staff Engineer: Leadership beyond the management track.
- 2022-10-01: Tanya Reilly has published her book The Staff Engineer’s Path, which I can highly recommend as well.
Concluding Remarks
I, similarly as e.g. Shem Magnezi, hope that there are developers in the audience that will get relieved by the fact that their “I am not sure if I want to be a manager” thoughts are completely normal. Do what you love doing, and do not let other people talk you into something that you would hate. Indeed, programming is one of the jobs that you can actually love doing. Do not get me wrong; being a manager is completely fine and I know managers who enjoy what they do, but this is because they love the people dimension of the role. Just think about what you actually enjoy doing when considering your career path.
Discussion
What is your take on this topic? Does what I have written resonate with you, or do you think I could not be more wrong?
Apart from comments below, you can also discuss this post at /r/programming.
I am a developer myself and I sure as hell wouldn’t want to be a manager. Both for my sake and for the others’ sake. I had some experience with a developer trying to manage me and it was a nightmare. Micro-management to the point of degrading me to a code-monkey despite me knowing better what’s good for the system at hand than him. Makes sense, he has duties I don’t and he has to devote time to those managerial duties leaving not enough time to intimately familiarize himself with the code, but still insisted on designing code. I don’t know if I would be able to separate myself enough from the technical nitty-gritty.
Replace “he” with “they” here, happened to me a couple times.
I think the logic is simple. A doctor, a dentist or a veterinarian after a while do they want to become “managers”? No. They just will became better and more experienced doctors, dentists or veterinarians. Why, for a developer, would we expect to become a manager? They are completely different careers. A developer may become a senior developer, a technical leader, a technical advisor, consultant etc. But that’s it.
That’s a bit of a black and white view. I think in any career field there are those who desire and/or gravitate towards a move into management. Obviously the three you listed (doctor, dentist, veterinarian) have less of that kind of move but a large number of the professionals in those fields are in a private practice which they either own or have a stake in. In a hospital or large clinic setting, some doctors would obviously move into management. I think the key here lies in not forcing developers into management if that is not their goal but allowing those who want to move into management to have that opportunity.
Very good summary! I’m a few years from retiring and hold the job title; Senior Technical Architect, having never been tempted into a managerial position and I still do a fair bit of Coding.
IMHO there is a huge “institutionalised wisdom” amongst employers saying Coders can only progress by becoming Managers, with the associated Salary/Perks package disparity to support the view. Fortunately, the company I work for dropped this view a long time back and now maps outs a technical career path which has parity with one in lower\middle management.
When I took the my current role, (I hope) I made it fairly clear when the “Where do you see yourself in three/five years time?” interview question arose that although I’d not want to be a team lead or manager, I’d quite like to be more of a technical expert in for one or more parts of the product.
It is, after all, coding which gets me up and makes me go to work in the morning. The thought of swapping out that side of the job, to move towards full time planning, estimates, holiday charts, one-to-ones and appraisals does not appeal in the slightest.
I have been worried that “not wanting to rise to a management position” makes me look like I have no career drive. I do have career drive – just not towards management. So thank you for this article, it is good to know there are plenty of other non-management-aspiring developers out there, and I am not alone.
Great article. I have been in this position myself and choose not to take the managerial path. Now, I’m still doing the job that I love doing.
I am a developer and I do not want to become a glorified secretary, collecting who wants to do a seminar, hr stuff, pretending to evaluate performance , etc.
Mangers should never earn more than the senior developers, there I said it. Just because you are a manager does not mean you have the right to the highest salary in the dept. I’ve seen senior developers become managers because they needed the money. Sometimes this has a detrimental affect on the performance of the dept which then leads to the new manager (ex outstanding developer), receiving poor reviews/feed back from the heads of dept. Perhaps a new role, or at least an acknowledgement of your stars role in the company is needed. You could give them small management roles such as project planning, allowing them to use their knowledge of their colleagues to place the right people in the right place. If in doubt, ask them, they may be willing to take on roles that support the business whilst still being able to do what they love. But reward should follow the benefit to the company of your employee and not the placing of square pegs in round holes.
It’s nice to see that I’m not the only one out there planning to stick with coding until the day I retire. The only time it hit my ego a bit was a few years ago when I attended a Microsoft seminar for Azure developers where I was definitely the oldest one in the room, including the presenters. :-) I talk about this now with a smile on my face, because I still wouldn’t trade my position for any managerial path inside or outside of IT, not even for a significant salary increase. In my mind, it’s all about going to work knowing that you enjoy what you do for living. No need for extra stress in my life…
I totally agree with you. I have seen really good developers who went into management and were not happy there. The Company loses a good developer and may gain a bad manager.
Most of your points are valid, but if you move into management you can still code side projects at the weekend and have a lot more freedom in what you do with no time constraints.
The real question is, I think, do you prefer dealing with machines, or the more complex and unpredictable things known as humans.
I completely agree you shouldn’t try to move in a career direction that isn’t right for you. What makes a lot of developers so successful in the first place is the passion they have for their craft and desire to improve their skills. Without that same level of job satisfaction, they’re setting themselves up for a hard time as a manager.
On the other hand, it’s not always a choice you can make without suffering consequences in your current role. For instance I have friends who refused management positions when asked, only to be laid-off soon after. Staying on a career-long technical track seems to be going against the grain, so I imagine it takes a lot more time and effort to find the right opportunities and keep your career going in that direction.
Been coding for 23 years and never hankered for a management position. Did my share of “management” as an Army officer. I’d rather herd cats. Retiring in 4 months, and still developing.
You nailed it on all points. Thank you.
It’s also a pyramid, only a small number of developers could become managers even if they all wanted to.
On the minus side, those who don’t take that offer can be seen as having no ambition or drive and shunted aside. Non-supervisory employees are usually classed as lower-status and treated worse, no matter what skills they have. And you’re less likely to suffer age discrimination as a manager than a developer. I hope those change someday…
I’ve been a programmer for the last 40 years. I imagine I’m as misanthropic as any other programmer, and if I were ever to move into a management position, my management style would, doubtless, be entirely punishment-driven and autocratic; I have no doubt that I’d end up throwing out everyone’s code and writing it myself. I’d win awards for the worst management style of all time. It’s a far better idea to put me in a small room with a problem and let me get on with solving it – that’s what I’m good at.
I agree. Development and management are two different skills. Some people have both but not everyone. I used to do development and technical support, I am now retired and I never wanted to become a manager.
During my career I worked with two very good developers who were promoted to become managers and were later fired because they weren’t very good managers. I worked for one of them. I thought he was a great manager because I could always get good technical advice from him, but he neglected a lot of admin which made others think he was a bad manager (that didn’t bother me a bit).
When I started work the principle that a manager must always earn more than the people they manage was deeply ingrained in most British companies. The company I worked for kept saying they were thinking of introducing “technical grades” that would pay more but nothing ever happened. I thought that might be changing now but being retired I don’t know what goes on in the workplace anymore.
You nailed it. I made it to Senior Developer about 20 years ago then to Technical Lead about a year before I suffered a stroke and eventually had to leave work on disability. One of my first jobs out of school was as assistant manager of a store and I hated it. So later on, after learning to program and becoming a real developer, entering management NEVER occurred to me. When asked the question of going into management while interviewing for my last job, I clearly replied NO. I always treated my managers and companies as my CUSTOMER instead of employer. I satisfied their needs best I could and when there was a conflict I would do my best to explain the issues from a development/technical point of view but in the end … hey … they were the customer and accepted all risk for their decision. That attitude worked MOST of the time :) But even though I’ve been out of the workforce for over 3 years now, it STILL bothers me that some of my “managers” were getting paid a LOT more than I was while they had little to know knowledge of what it was to be a developer. What was worse was when they force-fed us changes required by the CEO or the like who had no freaking clue what they were asking, yet the orders had to be followed without question. Now THAT was always a waste.
I just retired after 41 years as a developer: most often I was in the principal developer (no other developers) or the team lead (everyone else was always junior) role. I was sometimes asked if I wanted to manage, but always said no. I have had managers look at me like I was insane when I said it. I finally left when the managers in the company I worked at the time could no longer tell the difference between a developer and a downloading script-kiddy. I thought I would miss the work, but I have come to love just hanging at home with my wife, cats, and chickens. I was told by too many HR types that my principal problem was that I cared too much about my work.
I was promoted to be a senior dev with managing responsibility 2 years ago. It made me hate my job especially that there is a downline that internationally won’t do her job and uses technical disability as her excuse and when threatened to be fired, she just changed her story completely and saying that the reason she’s not performing well is because of poor management. Having to deal with such person makes the managing job becoming like a police or attorney where you have to find evidence to prove that someone is not right, with proper documentation. It’s very emotionally exhausting. I did not spend years of hard work in studying software development to end up in this role, having to deal with difficult employee like that. It makes me want to quit my job. It sucks when you have a low performer in your team and it sucks even more when you have to be the one to do the right thing and call them out.