So, you’re young and you’re a programmer. Maybe even a successful one. You have a cool job: the salary is good, the tasks are challenging and your coworkers are both intelligent and funny. Perhaps you’re not “just” a programmer, maybe your job title is something like “developer/designer” or “leading programmer”. I bet your parents are proud of you and most of your non-geek friends envy you. You have probably already created something you’re proud of: some cool app or a web framework. But…
Have you ever thought who do you want to be when you’re 35 years old? When you’re 50? Are you sure you’d still be passionate about churning code and keeping up with latest technologies when you’re 50 or older? Think about it: how many programmers do you know that are a) younger than 30, b) older than 40? I’m certain “a” is much larger than “b”. Have you ever thought why is it so? Is there something about programming that makes most people grow out of it?
Maybe programming is too exhaustive and people grow weary of it and burn themselves out after 10 or more years? Maybe you loose the ability to create and manipulate large abstract structures in your mind when you grow older? Maybe it’s the need to constantly learn? What if there’s a point beyond which you’re simply not able to learn any new language or technology?
Maybe it’s just, paradoxically, the boredom? When you think about it, most developers spend big part of their time doing tedious, repeatable tasks (and I’m not talking here about Java developers only). Or maybe our profession is so young that people born too early simply missed the opportunity to become programmers? (I would like to read some research on this topic but couldn’t find any.)
Whatever it is, most programmers seem to leave programming and switch to other activities somewhere between 35 and 40. I’m 34 and I still have enough passion for programming to sustain next couple of years, but then what? If you’re someone like the person described in first paragraph, perhaps you should sometimes think about next step of your career? What can you do to make it as pleasant and satisfying as your current job? Let’s iterate through some options:
Quite popular “career path”, especially in bigger companies. You could be promoted to “team leader”, then to “director of I.T. department” or even CTO. It all depends how many levels of hierarchy are currently above you. Another direction, if your company prefers some kind of matrix management, is becoming a PM (Project Manager), but I’m not sure if many programmers would consider that a promotion.
However, most programmers lack the skills that a good manager should posses, especially interpersonal skills (some people think that “programmer” and “sociopath” are synonymous). On the other hand, it’s easier to become pals with an ex-programmer and such a manager will have better understanding of your difficulties.
Start your own business
A manager and a programmer, all in one. There is plenty of information how to start a start-up. And founding a successful start-up that is later bought for big bucks is a new version of American dream. The biggest downside of this is that most start-ups fail.
Not really esteemed profession. In theory, consultants are experienced developers that help other companies in case of trouble with their software. In practice, consulting often means just parachuting some suicidal commando programmers in attempt to rescue a sinking project. Most of the time, to miserable effect. And the phrase “code written by consultants” has become a synonym for WTF.
A security (encryption, SEO, …) expert
A much better esteemed version of consulting. If you are really an expert in some field of IT, you could earn a nice income by freelance consulting or working for some big company. See also next one.
Write books, speak at conferences
Really nice and easy job (or so I heard), but only if you have something to say. Having a widely recognized name helps, too. If you’re an author of popular application, framework or library, good for you. At the very least, write a popular blog.
As most of the world’s IT literature is written in English, this is only applicable in non-English speaking countries. But this is quite an easy job (been there, done that), and you don’t have to have anything to say, unlike the previous one.
Mostly present only at enterprise class systems development. A man with a vision, projecting the architecture, choosing technologies, planning the overall technical structure, writing the code conventions and similar important documents that make you totally enterprisey. A PITA in general, especially if not participating in everyday code development.
If you have no problems with talking to business people (not very common among programmers), grok UML and like to “write programs in English”, you could go for business analyst.
Tester, sysadmin, deployment specialist
These people normally coexist with programmers, especially in bigger companies. But I haven’t heard of any programmers becoming one of them, while they quite often become programmers.
If you’re theoretically inclined and grok things like Big-O notation or NP completeness, that could be a fulfilling job for you. Computer science is still young and there’s probably still much to be discovered.
You can quit programming and start doing something completely different. It’s up to you. I’ve read that nowadays people should be prepared to change their profession several times in their lifetime. Who knows, maybe programming will be obsolete in 10 or 20 years from now?