What advice do you have on planning a long-term career for a newly qualified programmer ?

+18  A: 

Marc Andreessen covered this issue in a series of blog posts on his site BLOG.PMARCA.COM.

He split his advice into 3 posts. The posts are quite long and whilst not being programming specific are well worth reading. I’ve highlighted some of the main points:

Part 1: Opportunity

  • Do not plan your career
  • Instead of planning your career, focus on developing skills and pursuing opportunities
  • Look at your career as a portfolio of jobs/roles/opportunities.
  • Once you start thinking this way, you can think strategically about your career over its likely 50+ year timespan.

Part 2: Skills and education

Five skills to develop once leaving school/college to help maximise your potential:

  • How to communicate
  • How to manage people
  • How to sell
  • Financial literacy
  • International exposure

Part 3: Where to go and why

  • Pick an industry where the founders of the industry -- the founders of the important companies in the industry -- are still alive and actively involved
  • If you are young and want to have an impact, you want to be in an industry where there is a lot of growth and change and flux and opportunity
  • Once you have picked an industry, get right to the center of it as fast as you possibly can
  • Never worry about being a small fish in a big pond.
  • Optimize at all times for being in the most dynamic and exciting pond you can find
  • Apply the rule above when selecting which company to go to. Go to the company where all the action is happening
  • Also apply this rule when selecting which city to live in. Go to the city where all the action is happening
  • In a rapidly changing field like technology, the best place to get experience when you're starting out is in younger, high-growth companies.
It seems like the links to all three posts are broken =(
+1  A: 

Well, for me I learned a lot just from the first job, at least in terms of what I was looking for in a company.

I would say, research the company, ask questions about how they do things, try and see how happy the employees are. I'm not sure how to determine this, and it may just be something you have to experience in your first job.

One piece of advice... don't stick with a company that doesn't meet your expectations... I stuck with a bad environment for 4 years, and am much happier now that I am at a company that exceeds my expectations.

Mike Stone
+1  A: 

I'll pass on two words that a comp. sci. advisor passed on to me:

Be Flexible

I had asked which language/field I should get into when starting a comp. sci. degree and they said that this field is ever changing. Learn the fundamentals, always keep reading, and then find the niche that you love to do and start working in it. I started in perl, merged to PHP, and am now doing .NET. I'm sure I'll have a few more language shifts in my career. 8^D

I'm not THAT old, but when I was in college, the whole social networking thing wasn't even a dream yet. Look where it is at now.


Read 'Johnny Bunko' . Really great, I promise. First advice: "There is no plan!" ^_^

+6  A: 

Couple of high view things I can think of:

  • Always be learning something new (might not be code);

  • Be able to communicate your ideas and knowledge to others, particularly non-technical people;

  • Obsess about automating tasks that waste your time or are repetitive, no one can regain time that is lost;

  • Things will change, be flexible and able to adapt.


My one recommendation would be to find a company where you can be exposed to as many things as possible. One where they actually encourage people to go out on a limb and learn new stuff. You want a job where you can contribute in many areas and technologies. This will allow you to build your resume faster and have a lot more fun. Too many new programmers seem to get stuck just doing "coding" on one little area and it can be hard to get out of it because you are always looked at in these organizations as the newbie who still only knows one thing.

Once you have built up your experience and network of contacts, you won't have to plan your career as actively because opportunities will present themselves to you.

+2  A: 

There are some good truths in the first answer, but I would like to offer, from my own personal experience, a shorter version:

  1. Keep learning different skills (languages, solutions, patterns, etc.)
  2. Learn, above all, how to present yourself, and how to live up to that presentation.

Number 1 is important because it enables you to perform. Number 2 is important because Number 1 neither gets or keeps the job.

Operate under the assumption that if you can learn it, someone else can, too. Prove to your employer (or clients) that your value extends beyond what they can replace. This doesn't mean you'll never lose a job, or that you'll always have fair weather, but it does help toward a successful and fulfilling career.

Brian Warshaw
+2  A: 
Jacob Proffitt
+1 great blogs thanks for sharing
Fire Crow
+1  A: 

Learn to be good at and love maintenance programming.


There are four reasons to take a job:

  • money
  • connections
  • experience
  • fun

I heard this from legendary studio guitarist Tommy Tedesco in the new documentary "The Wrecking Crew". It's a great movie if you enjoy music or are interested in the working life of studio musicians.

Mark Harrison

Halflife of Developers - about 5 years

Remember that your technical knowledge is quite perishable compared to other fields. Five years from now you will probably be working with quite different technologies than you use now... most definitely in ten years.

So, enjoy your fling with your current favorite technology, but don't let it hold you back when it's going down the obsolescence curve.

Mark Harrison