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'm at a place of potential career change. Among the options is to stay in software development but move into commercial and enterprise systems work.

My past has been mostly working with scientists and engineers in academic and research organizations. It's cool to be on the cutting edge of discovery, but coolness doesn't help buy furniture, build long term savings, buy solar panels, boost the local economy, or fund friends' start up ideas. The pay can be decent by general population standards, but is around 2/3 to 1/2 what it could be at a commercial firm.

Besides the money, there's the nature of the work. Academic groups often don't have good software development methodologies in place. I'm lucky to have svn in my current project. Many developers are students with immature approaches to design, who have glamour stars in their eyes for every new fad technique. Many high IQ people with expertise in one area who try to develop software apps going beyond just the math and plotting they really need, tend to over-design everything. One recent science data analysis project written by several people none of whom had a holist view of the project, involved such a tangle of badly organized layers of abstraction for things that really don't need any abstracting, with overuse of... oh never mind, this isn't the place to go ranting about all that!

In contrast, all commercial projects are well-managed with proper tools, keen judgement, well-tuned regression and unit testing, and efficient methodologies. Right? Right? (laughter follows...) Well alright, the grass isn't actually greener anywhere, but I accept imperfection. I do get more of a thrill out of making a good product that solves real world problems, while making a good salary with a real potential of bonuses or other rewards for mission crititcal work done under budget and in time.

Another big advantage of commercial and enterprise IT work is that one can live in or near just about any city, whereas science swdev work strongly clusters to where science is done: university towns and near research centers like NIH, NASA, Fermilab, NRAO etc.

While I have >20 yrs of experience in software, I have little know-how of databases (beyond the toy examples given in mysql tutorials), networks (beyond setting up a home LAN), financial stuff, point-of-sale stuff, BI stuff, or anything remotely enterprisey. I think BI might be interesting, but I don't know much more than how to spell it.

So what is the gap (or canyon) I must bridge to make this change? What are effective strategies for making this shift? Are certain types of organizations, or certain job roles, better suited for this switch? What culture shock can I expect and how to deal with it, especially regarding what to say at a job interview? I can find out which specific skills are needed from job descriptions; what I'm after is all the other stuff, the unwritten and the hard to define things to consider.

Or am I a fool to even be considering all this?

share|improve this question
Did you try submitting your CV to companies and to friends? What was the response? Old boring enterprises have a lot of difficult hiring good C++ programmers (who often want "interesting jobs"). I'd be really glad if a good C++ CV with solid academia experience landed on my desk. –  Vitor Mar 27 '11 at 16:02
"Or am I a fool to even be considering all this?" Yes, just do it. Good luck! –  Vitor Mar 27 '11 at 16:05
add comment

3 Answers

up vote 3 down vote accepted

Simple. Keep you current Academic position. Use the freedom you have there to develop Apps for Android and iPhone. You will learn a lot and more than make up for your income gap.

Ok, well seriously (but I think the above is really possible), if you really want to move out of Academia, then I have some thoughts.

You will have to tackle your knowledge/experience gap somehow. In academia, you are probably using Perl or other scripting languages. In Enterprise life, expect Java, .Net langs, PL/SQL, etc. You'll need some experience with databases preferable Oracle or SQL Server.

Of course even if you learn a lot of that stuff, your resume won't necessarily show it, so how do you enter the Enterprise world at a level that reflects your 20+ years? That could be the hardest part. If you are good at software, you can do Enterprise work, but getting a good job at the right level could be a challenge.

share|improve this answer
Ah yes, a friend mentions Android. Maybe I should go get one... –  DarenW Mar 27 '11 at 1:05
FWIW, I use mostly C++, Python, a wee bit of assembly, Java and Ruby. A lot of IDL, but this is little known outside science and certain engineering fields. Learning Go and D. –  DarenW Mar 27 '11 at 1:07
add comment

Culture shock is probably going to be the big one IMHO. My first real job while I was in college was working for a government contractor that processed the data stream for a research satellite. We had alot of leeway in how much time we took, and what we used to solve the software problems there. The pace was very slow, and I could often finish in a day what I needed to get done for the week.

I went from that environment into a startup. The culture shock for me was quite extreme. The pace was probably the biggest thing. The pace was much faster, the focus was on getting things done, not on getting things "correct". My desire to make sure my solution was elegant and correct was often at odds with the deadlines and time pressure. In many academic and government jobs the repercussions for not producing (at all or on time) are also quite different from the private sector.

share|improve this answer
I'd just like to point it out that a startup has a very difficult culture than a well established enterprise. Working in a startup is like saving a a part of your income: exchanging the part of the present life for a better future. It also has a non zero risk, people often forget that. –  Vitor Mar 27 '11 at 16:00
That would drive me batty, to often have to get something in before a deadline when I know it is flawed. –  DarenW Mar 28 '11 at 4:22
@DarenW Wait until you have to go through a bug triage where they identify flaws that you were responsible for creating, but you cannot fix anytime soon because they are deemed acceptable and you have to move on to the next project. –  dietbuddha Mar 28 '11 at 5:53
Makes me think of musical performance or acting. Small mistakes are made but everyone must continue and keep the show together. –  DarenW Mar 28 '11 at 16:40
add comment

I see that you are also fifty years old. I would think long and hard about making the move to commercial software development. You are likely to experience heavy age bias. Commercial software development organizations prefer to hire software developers that are under thirty-five years of age. Do you hold an advanced technical degree?

share|improve this answer
I have been in a PhD program, did enough credits and work for a Master's, but alas no actual degree. –  DarenW Mar 28 '11 at 4:23
add comment

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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