Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am a little experienced developer having approximately 5 years experience in PHP and somewhat less in Java, C# and trying to learn some Python nowadays. Since the start of my career as a programmer I have been told every now and then by fellow programmers that programming is suitable for a few early years of a career (most of them take it as 5 years) and that one must change the direction after it. The reason they present include headaches and pressures associated with programming. They also say that programmers are less social and don't usually like to give time to their families, etc. and especially "Oh come on, you can not do programming your entire life!"

I am somewhat confused here and need to ask others about it. If I leave programming then what do I do?! I guess teaching may be a good option in this case, but it will require to first earn a PhD degree perhaps. It may also be noteworthy that in my country (Pakistan) the life of a programmer is not very good in that normally they must give 2-3 extra hours in the office to accomplish urgent programming tasks. I have a sense that situation is somewhat similar in other countries and regions as well.

Do you think it is fair advice to change career from programming to something else after spending 5 years in this field?

UPDATE


Oh wow... I never knew people can have 40+ years of experience in this field. I am both excited and amazed seeing that people are doing it since 1971... That means 15 years before my birth! It is nice to be able to talk to such experienced people, we don't get such a chance here in Pakistan.
Thanks again for all the help and sharing. It has been a nice experience getting your thoughts on this.

share|improve this question

closed as not constructive by Mark Trapp Jan 30 '12 at 13:09

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

10  
Your programmer cohorts are very good at generalizing and it sounds like they need less stressful jobs. –  Steve Evers Jun 29 '11 at 17:35
50  
If everyone stopped programming after just 5 years, then who would take on the programming projects that require 10 or 20 years of expertise to tackle? –  GrandmasterB Jun 29 '11 at 18:16
14  
It takes ten years of daily dedication to reach mastery of a subject. How do you expect to get there if you quit halfway? –  Frank Crook Jun 30 '11 at 0:19
6  
Isn't that a bit like saying "You cannot be an architect your entire life" or "you cannot do dentistry your entire life"? –  tylerl Jun 30 '11 at 1:17
6  
Sort of the opposite question: Which would programmers prefer to have as boss: a former programmer, or someone with some other background? –  GEdgar Jun 30 '11 at 1:46

21 Answers 21

up vote 54 down vote accepted

I don't think this is a question which can be given a blanket answer that is always correct, except perhaps for the age-old "It depends."

The simplest advice is: if programming is what you love to do most, don't stop unless that changes.

There are many other factors to be considered, such as job market, promotion opportunities, location, and of course salary, but the single most important thing with any career decision is the question "Will this make me happy?"

share|improve this answer
27  
+1 for happy. :) –  Steven Jeuris Jun 29 '11 at 17:22
17  
That's a very American attitude; the whole life, liberty and pursuit of happiness thing. Why is being happy the most important factor in a career decision? Why not, as an alternative, the choice that decreases the most suffering? (aka Utilitarianism) Or the choice that best complies with the commandments of God? (Any number of religions) Or the choice that creates the most value in the world? Why is your happiness a priori the most important thing? I honestly do not understand why so many people have this belief that their own happiness is somehow more important than everything. –  Eric Lippert Jun 29 '11 at 20:18
5  
@Steven: Oh, let me clarify: I'm totally on board the "what makes me happy is awesome" train here. My job makes me happy. What I question is the claim that "happiness" of the person is the most important factor in any decision, career or otherwise. For example, is it better to have a job that makes you less happy if it means that your child can go to a better school? I know lots of people who prioritize their childrens' education over their own happiness when making career choices. –  Eric Lippert Jun 29 '11 at 20:47
4  
@Eric: I most thoroughly support your view on this. However, for me, the most happiness is derived from doing things that have value, things that benefit others, and things that reduce suffering. So I did not in any way mean to advocate selfishness or happiness to the exclusion of others. However, I do believe that for most, they will be the most productive both in and out of the workplace when their career is that thing of which they are proud and from which they find motivation. In other words, people work better when doing their jobs makes them happy. –  asfallows Jun 29 '11 at 21:02
4  
@Eric: if seeing through your children's education makes you happy then go for it. Personal happiness is not the only factor in the happiness function. –  Lie Ryan Jun 30 '11 at 9:28

We have several programmers where I work in their 50s who have programmed for over 20 years. If it is what you want to do, don't let anyone tell you it is only appropriate for the young.

share|improve this answer
11  
+1: Programming professionally since 1978. A few breaks to be a manager, but those were short and ill-advised. –  S.Lott Jun 29 '11 at 18:19
2  
+1: I'm in it since 1973, and the only time I wasn't really enjoying myself was when I had to "play boss" with my own software company. Fortunately I still got to bang heads and throw markers at the whiteboard along with my employees, so it wasn't too bad. –  Peter Rowell Jun 29 '11 at 18:32
16  
+1 Only 20, but I didn't go to school to learn to be a manager, accountant, or salesman. –  Michael K Jun 29 '11 at 18:46
8  
I'm 64, and have been programming for over 40 years. I'm self-employed and have no intention of retiring -- I love coding too much. I have had several opportunities to go into more of a manager role and have always turned them down. I usually have three or 4 projects going on at once. –  tcrosley Jun 29 '11 at 19:23
9  
Good Lord! There are a lot of Old Farts® hanging around here! Makes me think of a quote I grabbed from somewhere: The computer smells new, the geek smells old. –  Peter Rowell Jun 29 '11 at 22:14

I've been slinging code for 21 years now, so I think I'm qualified to comment on this.

First of all, there's a non-trivial number of people who start out as programmers fully intending to move into a management position after a few years. They don't write code because they enjoy writing code, they write code because they see it as a necessary step along the path to their real goal. I suspect these are the people who are telling you to get off the coding track as fast as possible.

Then there are people like me who enjoy programming for its own sake and whose people skills are, shall we say, less than adequate for a management position (I tried, once, and it was a disaster for everyone involved).

It's possible to stay on the technical track and advance in pay and responsibility. And there are plenty of positions for older guys as well. I'm 46, and all but one of the other guys on my team are older than I am.

While I've known a few older programmers who fall into the MIT übergeek stereotype, I feel confident stating that it's not true in general. I and most of the programmers I know that are my age have families, take the time off that we need, and generally lead normal lives. We're not party animals, but we're not monks, either.

Yes, there are plenty of bad programming jobs out there. However, there is a real effort on the part of the industry to balance work and personal lives, and many software companies are doing what they can to avoid death march scenarios. There are always going to be sprints (I'm in the middle of one now, it's just the nature of the business), but the marathons are becoming fewer and farther between.

share|improve this answer
12  
I don't think there's a non-trivial number intending to go into management. I think it's more accurate to say there's an overwhelming majority who find out that they just aren't very good at it. Thus, they move into management realizing that their programming career is going to be quite limited. –  Dunk Jun 29 '11 at 21:59
3  
@quickly - The Peter Principle applies to developers and managers and all walks of life. I know several managers that I worked with as programmers who realized that they required 50-60 hour work weeks to accomplish much less than the good developers could do in a routine 40 hour week. They were smart enough to realize that another related career path (ie management) was there best option. Those who failed to realize this tended to eventually get laid off because their capabilities as developers didn't justify the higher pay they received after several years experience. –  Dunk Jun 30 '11 at 12:39
2  
@quickly - They are better managers than developers at least judging by the fact they are still employed as managers. A couple of my friends have excelled as managers who I had to carry quite often as developers. I tried managing for a couple of years and I was never so miserable. I dreaded coming to work. Thus, I am back to doing what I enjoy, but acting as technical lead (position created just for me) on projects. It means I get to be responsible for all the software techy stuff including people assignments but not the management, customer relations, budget etc...I absolutely love it. –  Dunk Jun 30 '11 at 18:44

That sounds to me like the classic large company advice that's still being thrown around after decades.

Basically, one of the issues with career progression is that a lot of companies aren't set up for offering a career (as opposed to a job) for developers. In a lot of other occupations you tend to slowly move up through layers of either added management responsibility or specialisations that require additional experience and certifications to attain if you want to stay in a non-management role. The important part however is that there is a known career progression in those fields, like "I'll make partner one day" or "I'll open my own practise".

For some reason, a lot of companies that seem to have adopted the mindset that "coding"1 is just something you get the typing pool to do according to the detailed specifications that the software architect put out. As it's seen as a low-ish occupation you don't get any career progression as someone who writes software for a living unless you basically stop being a practicioner and move up into the management layer.

What I find disconcerting is that IBM noticed back in the 1970s that not offering a non-management career path left them with a bunch of lousy managers that used to be extremely good developers. That's been known in the industry for a long time, but the memo either didn't make it to HR or people basically don't care enough about this issue.

Now, I've been doing professional software development since the late 1980s/early 1990s, and I still mainly program for a living. Yes, I've "done time" in management at various stages in my career, but I found I'm happier creating software (and possibly doing a little management on the side) than climbing what the 'official' career ladder is supposed to be.

There are companies out there that recognize the value experienced software engineers can bring to the table. The trick is finding them if you want to have a long-term career in software development. I don't think having people get out of 'coding' after 4-5 years is a really good idea unless we want to constantly repeat the mistakes of the past because there is no memory of them.

1 I'm using this both as a shorthand for developing software and to show how the occupation is often viewed by those not involved in it - to quote the PHB "if I can't understand it it must be easy".

share|improve this answer

No, I think it is lousy advice. How long have the people giving this advice been programming? That would be one of my retorts. I've worked in the US and Canada as a developer and don't really see a problem with doing this for my whole life if I choose that to be my career path. I've been a developer since 1998 so I do have way more than 5 years in the field and still do what I do. There can be various transitions one has in going from place to place or figuring out what kind of progression they want to have,e.g. become a manager, analyst or architect.

IMO, programmers can be quite social though the key is what kind of group are we examining here. A collection of "Star Trek" fans that are also programmers could have quite the party I'd imagine though others may think that is lame.


The reason for asking about experience is that it can help provide context for their advice. Everyone has biases that shouldn't be forgotten here. People should be able to follow their passions and for some people programming is their passion. I have seen developers that were so excited about developing software that it was rather contagious. Some people may progress into other fields and others may still developers for decades. What works for one may not work for another.

share|improve this answer
3  
@Muhammad: It's "career", not "carrier". –  Lightness Races in Orbit Jun 29 '11 at 22:29

Usually when people give this sort of advice ("Don't be a code monkey forever!"), they do not mean that you should pursue something unrelated to programming, but go for a management position where you spend more time planning development and managing teams than actually coding. This is fine, and lots of people would prefer this alternative eventually, but many programmers absolutely detest these "business-y" type responsibilities. If you like coding, there is still room for advancement, and the senior programmers in many organizations are not too far behind their managers in salary and benefits. Either way, as you gain more experience, you will be given offers and opportunities to advance, probably on both sides of the spectrum. Take each opportunity on a case by case basis and decide if you want to take on that specific role. You have not made it sound like you hate programming in general, but more that you are afraid of what other people are telling you about the way things are. Do not listen to them. They are not you, and if you like coding, then keep coding. There are loads of programmers on Programmers SE who love what they do every day and have been doing it for many years.

share|improve this answer

Either you're passionate about programming, in which case there is no reason to stop doing it, ever.

Or you're not, in which case you shouldn't be doing it in the first place.

If, at some point, the passion makes room for other things, that's fine, and when it happens, by all means find something else to do, but in the meantime, enjoy!

share|improve this answer

I was just upvoting all the responses which say some variation of "just keep doing it if you love it", because I think this is ultimately the right answer - but then I thought about the alternative view for a minute, to see if I can come up with a good Devil's Advocate against the "keep programming" option....

I think the idea of "moving up and out" of programming is actually not so unique to programming. Rather, it is general career progression advice for very many technical professions - essentially, any which tend to be self-limiting and general enough that no one person really becomes a mega guru at it. Programming, however, can sort of fall in the middle. There are arguments both for and against in this sense.

Let me explain by comparing being a surgeon versus being an accountant:

A heart surgeon, if she becomes world renowned and great in her field, can have a very good and productive career simply being a heart surgeon. She might come up with a special new procedure which revolutionizes heart surgery and cardiology, and continue to save lives doing these operations. In a nutshell, the career more or less starts and stops at actually doing the technical work that you do best. Other than perhaps giving lectures or writing about the new procedure she came up with - the career remains broadly the same - technical.

An accountant, on the other hand, probably only wants to be doing classic, low level grunt "accounting work" such as personal tax returns only in the early years of his career. I don't think too may accountants simply want to be tax return numbercrunching monkeys for their entire careers. They would rather move up and out into management, or start their own firms. At any rate, chances are that a "natural" career move for many accountants is out of standard, basic "technical" work, and "up" into something more managerial and strategic.

The point is, if you think about these two careers: for one it is okay to stay doing the same thing for life. For the other, it looks unambitious. I think this is the key - this is why people give this advice. They have an idea in their heads that being a programmer is a low-level grunt engineering role, and that you're not really ambitious with your career if you just keep doing code monkey work for life. For a lot of people, this idea is probably born of ignorance. For others, maybe they just want the prestige of moving up a management hierarchy.

In any case, I think this is the basic origin of this phenomenon. People tend to think of many technical professions as naturally limiting. That as people get older, they shouldn't still be doing the grunt technical work, but rather move up and out into management or something "higher level" in general such as running their own business.

share|improve this answer
2  
I may just start referring to myself as a code surgeon. –  CoderDennis Jun 30 '11 at 0:25

A lot of people in Pakistan and India seem to move into other IT professions after a few years. With the Indian companies I work with they have a policy of only hiring programmers; all business analysts, architects, project managers, database administrators and other specialists all originally started as a programmer. This is reminiscent of many corporate data processing shops in the US until the mid-to-late 1980s. So in that type of organization, yes, it is the expected norm to "move on" or else it would appear you aren't very successful. We are trying to change this mindset because in our group we consider highly experienced developers to be extremely beneficial to projects. Five years is barely enough time to get really good at your job in this field.

Anyway, I would not let others tell you what you should be doing - although if you work in an organization like I've described you may need to consider long-term viability of a career in programming if that isn't expected or respected where you are.

share|improve this answer

If you are married and/or have children, then you will most likely leave programming after a few years. Death marches are the norm in this industry, not the exception, and many spouses/children do not like to have daddy/mommy away from home so much. This is the reason that a lot of developers leave programming by their 30s.

normally they must give 2-3 extra hours in office to accomplish urgent programming tasks. I have a sense that situation is somewhat similar in other countries and regions as well.

Yeah, this sort of screw-up by managers is very common - even though it has been clearly documented for the past 150 years that crunch mode is the worst possible way to get work done. In the US, by Federal statute, all programmers are "exempt" which means that in the absense of a union contract to the contrary, we don't get overtime.

29 U.S.C. § 213 a(17) any employee who is a computer systems analyst, computer programmer, software engineer, or other similarly skilled worker...

http://codes.lp.findlaw.com/uscode/29/8/213

My advice is to always have some sort of "Plan B" - something you will do when you want out, or get pushed out. For some people, that involves switching to the management/dark side. Sometimes they do this because they don't, won't or can't keep up with the changes in technology. Sometimes they do this because they want to solve problems too big for one person to solve.

If you come from a culture where your past credential is all that matters, and once you've "taken" a course on a subject then you never have to study it again (I call this the vaccine theory of education), then you will find that after a few years what you learned isn't useful; for this cultural viewpoint, you will have to leave the profession unless the "shame" of constantly learning is not something that bothers you. To be honest, it is usually American managers who went to a very high status business school that suffer from this, but I have come across people offended by having to relearn something they had taken years prior.

share|improve this answer
4  
Death marches may be the norm in your part of the programming industry, but there are plenty of places where work-life balance is valued. –  justkt Jun 29 '11 at 19:05
1  
You will only be required to put in the extra time if you let them require you to work the extra time. How much overtime is required should always be asked at a job interview and any answer other than seldom should result in a big no thank you when the job offer comes in. Do more work than others in your 40 hours and the only people that will care that you don't put in extra hours are the incompetents that take 50-60 hours to get their job done. –  Dunk Jun 29 '11 at 22:06
1  
I've been programming professionally for 15 years. I've been a husband for the last 4 years and a father for the last 3. I am a better programmer today than I was 4 years ago and have no intention of switching to some other career. –  CoderDennis Jun 30 '11 at 0:20
2  
I left a career as a Chef to be a programmer for lifestyle reasons. The odd late night in the office to meet a deadline is nothing compared to working every single night, every weekend and every public holiday then waking up early to do it all over again. –  Christopher Jun 30 '11 at 9:33

programming is suitable for a few early years of carrier (most of them take it as 5 years) and that one must change the direction after it. The reason they present is that headaches and pressures associated with programming. They also say that programmers are less social and don't usually like to give time to their families etc. and specially "Oh come on, you can not do programming in your entire life!"

I've never heard that, and it all sounds ridiculous.

If you're a programmer and you enjoy it, just keep going... there's absolutely no reason at all to arbitrarily quit and force yourself through struggling to find some other career to replace it.

share|improve this answer

There are many people who just enter a programming career looking at the booming IT sector. They are not really interested in programming, but they do it just to earn a living. Such people get fed up of their job after some time and may give you such advice.

I have been programming for a long time. I started programming myself when I was in school, and I am still doing it and will keep doing it forever. I am studying at the University now and sometimes I sit for the entire day writing code not to complete my assignments or to make money, but because I love it. I don't feel that I am missing anything.

The answer is simple - if you like it do it, if you don't like it don't do it. If you like management kind of stuff more than programming there is no harm in moving to management after 5 years of programming experience.

Possibly loosing a patch of my hair due to too much thinking, taking too much caffeine and becoming less social are things I am afraid of perhaps

You may find that some programmers are not very social. But that comes to them naturally. They spend lot of time on geeky things and so their social skills are a bit underdeveloped. (Google "problems of intelligent people" to know more.) If currently you are social I don't think you would become less social in the future because of programming. The only thing is the time you spend at work. If you think you are spending the entire day at the office then there is a problem. Because of the nature of programming jobs you may have to sit for extra hours sometimes. But if this happens very often at your current workplace you can try switching to another job.

share|improve this answer

I've been working as a developer for around a decade, so like many others who've already posted here, I have a bit of experience pertinent to the question. Around the 5 year mark I actually found my interest in the field start to wane quite considerably. I was one of the senior developers in my company and had been there for quite a while. It felt like we were always doing the same old things even when switching from Visual Basic 6 to C#, and I became more and more disinterested, spending far too much of my time browsing web sites, etc.

The company that I worked for didn't have anyone paying attention to what was going on in the development community outside our office though. Concepts like TDD and the rest of the XP practices were becoming mainstream, design patterns, SOLID, refactoring and the like were gaining importance, the .NET CLR introduced the joy of generics, but we knew none of that. I'll freely admit that I was part of the problem, I wasn't looking at what other people were doing, but neither was anyone else in the company, software architect types included.

After floating along in this half-hearted way for a few years and at a couple of other companies with similar styles, I found myself looking for a new job and seeing a load of terms that meant nothing to me. At this point I realised that I had a lot to learn and so set about getting up to speed. Discovering the blogosphere, subscribing to podcasts like .NET Rocks, attending a few user group meetings, and other such activities got me up to speed with industry best practices. In doing so, I started to regain my interest in software development. The immediacy of testing some new code with a TDD framework, refactoring to come up with a cleaner solution, etc. made the whole experience much more fun, and pushed me into looking for a job where such skills would be desirable. Now, for the first time in years, I love my work. Something that I'd never have thought I'd say a few short years ago.

The point, after all my blathering, is to try to keep in touch with what is going on outside of your company, outside of your country even as some of your problems could be quite culture-specific. If you can find interest, excitement, and motivation in what is happening you can channel some of that back into your daily routine and make your work life more enjoyable (and possibly make yourself stand out as a more efficent and better developer than your colleages, or even help pull them along with you). If you don't feel any spark of enthusiasm for the subject after all that, then maybe the coding life ain't for you.

share|improve this answer

In your career as a programmer, you (hopefully) will move up from the basic entry-level "code monkey" position into senior programmer as you become fully acquainted with your chosen language and the use of design patterns, add analysis/design skills to become a software analyst, grab some people skills and requirements-gathering and become a business analyst, then mix in some hardware architecture and become a systems analyst, at which point you'll be making six figures and in very high demand. Or, from Senior, you can continue up the supervisory hierarchy to team lead and then project manager.

... but, you will ALWAYS be "programming". You will ALWAYS have a situation in which you personally will need to sit down and write some code. Only once you advance beyond the point of being a part of a software team, to overseeing a software team and dealing with the money and logistics of the project, will you stop doing it daily and, probably, stop calling yourself a "programmer".

share|improve this answer

Programming is no different than anything else in life: some things you'll do forever, while other things are more ephemeral. Program for as long as you like programming. One day you might feel full, like after a good meal, and just naturally move on to something else that engages you. But until then I wouldn't worry about it too much. As evidenced by other answers, it's not uncommon to enjoy a programming career for many decades. :-)

share|improve this answer

My father has been working as a programmer for the past 24 years. He used to tell only one thing to me: "Too much of anything is good for nothing". But it is not suitable for programming.

share|improve this answer
1  
My grandfather was a mechanical engineer most of his career, and he told me, "as people become more experienced, they learn more and more about less and less, until they know everything about nothing". I think programming is the antithesis to that; you simply can't program without knowledge of the field or business for which you are writing the program. –  KeithS Jul 1 '11 at 14:26

What your friends say about programmers is equally applicable to anyone who is deeply engaged in any challenging field.

So your question really is: "Do I want to have a career that requires a high degree of dedication such that other areas of my life might be somewhat compromised, or do I want to do something I can forget about entirely when I leave work at night and come back the next morning?"

You have to know yourself well to answer this question, and the answer may change over time.

IMO, as long as you feel satisfied and challenged as a programmer, go for it - don't worry about it unless you find yourself longing for a change (or you can't find work...) - if and when that time comes, it will come.

HTH

share|improve this answer

Don't know about the situation in Pakistan, but in my country this profession is very bad considerated, and worse paid. I'll program for sure all my life, and learn new languages, because it is something I really enjoy. The question is if I will have to change to a different job, and write code only as a hobby. Or may be I'll flee my country, who knows... But programming is to have the power of doing things that other people has to pay for.

share|improve this answer

Programming is indeed a tough field and with little reward when you compare it with other professions, especially in Pakistan. When I was in Pakistan, I heard about young talented programmers who were given a good salary (not that great BTW) but they had to take a lot of oil from them. I personally would not like to program for a long time. But then I to do something :) And programming is fun by the way.

You do get a lot of experience as you age so that comes on your resume. I heard that and I think it is not true. Of course if you are in a state of mind in which you are not able to concentrate or loose interest, you can't really program. So your social life, especially problems and interests, may greatly influence your skills in this area.

I would personally move a way from programming and go to public service but then programming is fun too. And you have got to be a little crazy to be a programmer.

share|improve this answer

Just another thought, there isn't anything wrong with working your way up the corporate ladder while coding in your spare time. I find the coding to be a nice release from the tedious business specification and analysis meetings that come with being a tech services team lead. I actually ended up at this thread looking up something on Stack Overflow about Ruby on Rails, which I'm having a great time learning.

Also, by staying sharp on the technical side you'll continue to develop strong technical skills that will help out down the road. Programmers tend to have better respect for a manager who can talk the talk and walk the walk. I have a feeling that the person who told you this advise doesn't fall into this category.

share|improve this answer

In my experience, there are two type of professionals in senior IT positions.

  • IT Management
  • Senior Technician

It all depends on where you want to branch off into. If you foresee yourself writing code until retirement, then you want the latter option. But if you want to be the team lead and manage people instead of code, the former would be the best option.

There is no right answer. A lot of us here really enjoy writing code and programming, solving the nitty gritty problems. But there are also a lot of people that enjoy the "bigger pictuer" side of thing, like managing people/projects.

This isn't just the development side of IT. You see this same "professional fork in the road" in other aspects such as networking, database administration, system administration, etc.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.