I'm a developer at heart, but it seems to me that to get ahead in this career, one must at some point become a manager. Is this true in your experience or do you think that it is possible for a developer to become as important and as well compensated as a manager? Would you leave development for management just for the compensation aspects?
Update I want to thank you guys for taking the time to express your thoughts about this; I agree with the added "subjective" tag added by Luke, and I believe the right thing to do is leave this as an open question, without a "correct" answer.
I have held every position in IT from helpdesk through CTO.
I've paid developers anywhere from $20/hour to $150/hour depending on how good they were and how hard it was to get them.
In all honesty, the pay has nothing to do with your title and everything to do with how hard it is to find someone to fill your shoes.
As an example (US dollars). Where I'm at, php guys go for about $30 to $45k/year; .Net and Java both are anywhere from $50 to $150k; SQL guys run from $65 to $90k. A specialty like Biztalk is completely random: from $45k to $200k.
Mid level Managers (like a dev manager) however can be found for $70 to $105k.
Yes, those are HUGE spreads. However 9 times out of 10 it's going to boil down to how well they like you, how good you are, and how much you ask for.
Never for the compensation alone.
Call it an idealistic point of view, but if compensation alone is your sole motivation for becoming a manager, that's a "code smell," if you will, that you're going to be a manager for all the wrong reasons.
The best managers are managers because they care. The worst managers are managers because they're in it for themselves. It's all about the fat paycheck, the prestige, the perks. They've either forgotten where they came from, or they remember it all too well.
Now, having said all that, chances are pretty good that you will likely be best able to effect real change from a manager's position. I've been facing that decision myself for a while. It irks me no end. I love development; I dream about code, and I don't want to stop doing it. But the simple truth is that the higher ups still regard me as just another coder, regardless of how much experience or technical expertise I have. Change my job title, and I'll have far more credibility in their eyes. With that credibility comes far more power to make a difference.
That is a compelling reason to do it. I seriously don't give a damn about the money.
When I was 25 my CEO said that unless I was a manager at 30 - I would have failed. He said there was no market for old programmers!
Well, I'm in my 40's now and I'm a better programmer than ever and in demand more than ever. Developer is a great career if you really love what you are doing. Manager is also a great career if thats what you love.
Personally it depends on what you are going for, is it just the pay? To really become a senior level developer you will most likely be transitioned into a more "lead developer" type role. Traditionally these roles have management style responsiblities at a minimum, although typically not the full fledged HR style management.
So, in theory, if you want to continually advance, I see that MOST places will transition a developer into a manager. A developer that is only a developer and doesn't have management experience will NEVER be as important in an organization as a manager that has a budget, team members, and power.
It's been my experience that development definitely pays less than management but management is the first tier to get consolidated in a cutback. At a former job they scaled back heavily on the management but couldn't really cut back on development because of the amount of knowledge spread across the developers. I have been in management and development in the past and prefer development ... then I got into contract programming so in effect I am my own developer and manager. Granted I work for a "project manager" at any company I work at but in the end I own my own business.
In addition as a developer you usually don't have to put up with all the hassle that management brings ... more money for more stress ... its not an easy choice to make.
It depends a lot on the company. At some companies, the manager may be paid lower than any of his engineer direct reports.
On the other hand, engineering may have no career advancement path, so you basically hit a ceiling and get only modest annual raises for seniority and cost of living adjustment, but no quantum leaps in compensation.
A management career can allow you to keep rising. Though you probably have to get an MBA degree if you want to rise into the executive levels.
Anyway, if money is all you're after, neither developer or manager is the best choice. Sales is probably a better path. It's very competitive of course, and takes a certain personality type, but even junior sales people can earn commissions that make their total compensation dwarf the salaries of developers. Again, it depends on the company.
No, if you want more money then find a job that does what you enjoy and pays more. It seems you are interested in raising your salary and not your responsibility.
If you are interested in management then I would say go for it, but read up and understand what it entails :)
There are to many stories of bad managers though. You don't want to raise yourself up to a level of incompetence.
Good people should be paid well for what they do good and not for what they can't do.
It's not true, at least at companies that truly value software development.
Unfortunately, a lot of software development happens in non-software companies. For a developer there is typically one track & to continue advancing, a developer needs to eventually take on the manager hat. A shame, because a lot of people would be happier & better contributors staying in a development role.
At companies where software development is central (e.g., I've worked at Yahoo & Google, and found this to be true), there are parallel paths for a developer to advance beyond senior. One is to stay technical and the other is engineering management.
If you're curious, my advice is to give management a try. I wouldn't do it for $$ -- to be honest, that alone doesn't make it worth it, but if you think you might find it interesting/challenging.
The other piece of advice is don't feel locked in. If you've given management a shot and find you don't like it after 6-12 months, then switch back to development. I did this a few time myself, and every time I've promoted an engineer to a manager, I made to clear if they didn't like it, we could worth them to transition them back to a non-manager role. (And I've had people go both directions -- stay in manager & transition back.) Neither is a right-or-wrong answer -- it's all about what you like, what your skills are, and what motivates you. Often the only way to find out, is to give it a shot.
I would never do it for compensation, alone. Choose what you do based upon where you want your career path to go.
Right now, I wear at least three hats - development manager, architect, and developer. The company that I work for had agreed that as a manager, I should be able to stay relevant and remain hands on as much as possible. While the initial goal was to be a 50-50 split, it did not work out that way. I do spend about half of my time managing, and the rest split between development and architecture (which includes even more meetings).
There are more and more companies adopting a "hands on" approach with development managers, which is a good thing, in my opinion. I have been under managers before who were more heavily into the project management aspect and rapidly lost touch with the technology. Especially with the way the economy is right now, I expect to see more and more consolidations of responsibility.
It is like the architecture aspect of my job. While I have always enjoyed the architectural aspect, I had never considered it something that I wanted to spend a fair amount of time working with. Now that I have exposure, I have really come to enjoy the responsibility - enough so, that my title will be changing again from "Development Manager" to something like "Development Solutions Manager" or whatever the board and human resources can conjure.
I personally think that even if you are going to continue your career as a developer, getting exposure to the management aspect is a good thing. You can always step away from the management role and back to a developer role if you so desire - but the extra experience and knowledge that you gain will ultimately make you a better developer.
Compensation is really a personal choice, I know that it's most important to me that I do something I Love and compensation will always be second behind that for me.
However, I would also argue that one does not have to become a manager to grow to be well compensated and "important". I would agree that it's often easier, particularly if you're not a terrible manager though I know far too many skilled technical people who make awful managers.
I think that if you can grow into an architect type of position where you do not manage people but are a leader in a group and are the driving technical force behind product development. Usually this comes about to someone who is a cut above the rest technically and has grown to show technical insight and leadership.
Specific things I think that can help along this path:
In general, I find positions are usually granted first to the person that is closest to already fulfilling the job requirements. If you're acting like an architect and thinking like one you'll become one quickly enough. And once your team has as an invaluable a resource as an architect they'll reward you appropriately. If not, there are lots of teams that are looking for architects and maybe it's time to do some career hopping (the economy aside).
My own personal opinion would be that there is another path of moving up the food chain, becoming an architect. Granted this is a bit away from the actual code, it is still about designing solutions and being aware of what a company already has and how things fit together so it is still rather technical.
I wouldn't leave development for management just for the compensation aspects, no. I would however transition to being more of an architect or team lead though. Strategic IT is where I'd like to end up but that is just how I see the intersection of what I like to do and what I'm good at doing.
At some point, yes. To advance your career as far up the ladder you can go, you will need to get into management. I'll always like to be a developer too, but at some point, when the technology around me has changed and there is someone younger, smarter and faster than me, I'll have to move on.
I wouldn't want a manager managing me if they haven't first worn the shoes that I'm currently wearing.
Some big enlightened companies have a parallel to management engineering career ladder that compensates senior engineers as well as the corresponding managers. If you truly love software development, and you can find work in such a company, and you're not after the salaries and bonuses commanded by large company top-level management, go for it!
For me.. i want to keep developing .. but don't want a wacko to be getting credit for my work because he happens to be my manager or team leader .. i really don't mind developing UNDER someone who can give good insights into making decisions from a business stand-point
Not true at our company.
We have junior developer, developer and senior developer.
Then you can choose between specialist and project magagement (followed by their senior equivalent). Both with the same salary. Then the real management functions start. But even they have time left to program ;-).
I am a specialist, with no inention to do any management work. One of my tasks is to spread knowledge and solve hard problems.
Depends on the kind of manager you refer to. A Team Lead is a manager for a team, but also a developer. A Project/Departmental Manager is a manager who may have never been a developer. There is value for a developer in the first, but not so much in the second. The Team Lead will gain insight into management as they tend to have more interactions with higher level business functions (such as not dying while in the office ;-) and knowing where to play golf). At the same time, they will still interact with developers, allowing them to keep that perspective.
Moving to upper level management, however, will remove you from the realm of developers, and prevent you from learning new technologies, as you simply will not have time for it. In my opinion, unless you want to move semi-permanently to management, don't go there, but try to gain some team lead experience if you can.
ALL PM, yes ALL, are useless and waste of space in the IT industry. Their objective and plan is simple, get a good cert or try to gather 2 or 3 years of experience then quickly get a PM role. They failed as a developer and now they want to guide or manage a bunch of ppl who are smarter than themselves. This is proven. Psychologically, it is. They cant stand out among developers (you see, WE and PM are different breed, our pasttime is writing our own compiler, OS or search engine. We are not in the same league.) they are technically weak, slow learner, can't grasp programming and technology, poor in maths and algorithm.
So what they realise is they still got SOFT SKILLS and try to leverage on it. Yes, soft skills are fair, soft skills are for everyone. Is there a gauge? PM always claim to be good in soft skills and critise us for our attitube. Did they realise a Developer can be POTENTIALLY good in both SOFT and HARD SKILL, while they can only achieve one, since they are hopeless in hard skills.
The problem is they are so emotionally damaged they confused Soft skill with politics.
Especially if the customer happens to be a pretty woman, then this Manager wants to be her 'Dream Prince'.
Reduce the airconditioner temperature to provide more cooling effect to the server so that the software error will go. The customer starts laughing.
Wasting time: The project managers waste a significant amount of time in review meetings.
Credit taking: For the huge hard work of the team members, the project managers are ready to grab the credit once the work in completed. The completion of a project results into 2 things-
a) Project Manager gets promoted to the position of 'Program Manager' and gets huge salary hike.
b) Project Manager goes to receive award.
c) The team members go to the orthopedic surgeon for L4-L5 lumbar disk prolapse. The surgeon asks them for a surgery. Severe back pain and other problems screws up the team member' s life.
d) Team member's appraisal gets spoiled by the project manager for either attitude problem or initiative problem.
IN MY COMPANY, PM HAS NO PLACE becuz i earned the CTO trust and i am calling the shot, all the developers are happy and call me the 'protector of developers'. The PM will cry in my company
No, I wouldn't likely leave my development position for management just for the compensation aspects. I'd make the developer vs. management decision based more on how much I enjoy multitasking, organizing, interacting with people, and building strong teams.
For compensation, I'd focus more on improving my negotiation and networking skills. Selling yourself and finding the right job are generally more important in getting a good compensation package than the developer vs. manager choice. Plus, you'll tend to perform better doing whichever role you're more passionate about.
I'm a fairly young buck and had to interview 2 developers in their 60's the other day. Their work experience was excellent and went back longer than I've been alive. It was really awkward. They got into C# recently so technically they're on par for a mid level dev but I still felt like they should be giving me orders rather than answering my questions.
I don't know if I'd have taken it as well as they did to get interviewed by what they must see as a kid.
To make a football analogy: quarterbacks get paid more than coaches and GM's. IMO, a good sales manager would have people making more in commissions than the manager's salary.
Being able to convince sr. management that they have to pay for top talent and that it makes a difference is a hard sell. If you can't/don't want to do this, keep programming.