Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am currently doing a PhD in analytical chemistry, however I am a reasonably good programmer and consider myself to be best in the lab apart from my supervisor. I spend most of my time coding and developing new software and algorithms for manipulating data. I have decided I do not want to stay in academia, and would like to go into software engineering. I recently attended a talk by Google who were trying to get us to apply for their positions and was really interested.

As I don't have people who are better than me to learn from other than my supervisor, I would like to as what I should learn to put me in the best position for getting these sort of jobs. I have a pretty free reign on what/how I code and still have 3 years left of my PhD so I think I could still learn most things.

I currently exclusively develop in Python, I am not a big fan of Java and would be happy if I avoided C#. I write quite complicated algorithms and possible pathways for improvement would be GPU parallelization, C and C++, code optimization in Python, and applying CPU parallelization.

There are a couple of questions which are similar but they don't take into account that I actually have the time to develop these new skills:

share|improve this question

closed as off-topic by MichaelT, GlenH7, Dan Pichelman, Bart van Ingen Schenau, Kilian Foth Oct 8 '14 at 12:58

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – MichaelT, GlenH7, Dan Pichelman, Bart van Ingen Schenau, Kilian Foth
If this question can be reworded to fit the rules in the help center, please edit the question.

up vote 5 down vote accepted

Having known people in the sciences who attempted to transition to software, some of them at least had trouble focusing on making code maintainable and understanding what its like to work in a team setting. It might be worthwhile to focus on this, somehow.

Its as though in this case, they were so interested in the scientific problem at hand, that they didn't focus on the code they were writing - which makes sense, I suppose.

I think looking for work as a developer, but in companies where your considerable scientific background would be useful, would definitely be a good idea.

share|improve this answer
Thanks, I have been trying to incorporate team work more. There are three coders in our group, and I have been delegating out different areas of the program I am going to publishing soon in order to get better experience in that area. I have also been reading code complete and so my commenting is pretty good, but I will make an effort to look in more depth at maintenance – Anake Dec 6 '11 at 11:01
Commenting is a great start. Also, look at things like design patterns ( ... working with known, proven design patterns makes your code more maintainable. Being able to recognize the patterns your team mates are using means you can continue them instead of working against them. – Kyle Hodgson Dec 6 '11 at 13:54

I'd say focus on your Chemistry, and dont over-concern yourself with specific programming languages. Anyone looking to hire a PhD in Chemistry isnt going to not hire you because you know Python instead of C#. If a company needs a programmer, they're going to hire a programmer, and you're not going to be able to compete against individuals with an equal amount of education/experience to yours, only in software. But if they need a PhD in Chemistry, thats where you are going to stand out. So be the best PhD in Chemistry you can be.

share|improve this answer
Though I am part of the chemistry department, I am mainly developing software and should be publishing 1-2 programs per year. I am not sure if what you said applies, as many of the companies (all software engineering) who gave talks on that day said they were happy employing PhDs in numerate subjects with coding experience. Is this not true? – Anake Dec 6 '11 at 11:07
@Anake - I will repeat what Grandmaster said. Anyone interested in you, will be interested in you because of your Chemistry background, to apply your knowlege to the computer science/software engineering sector. You will have to learn and use any language that is choosen by your employeer. The fact your already able to apply this knowlege to this sector is a plus. You can teach enough programming to a person with PhD in Chemistry, you cannot teach enough Chemistry to a programmer to be effective. – Ramhound Dec 6 '11 at 12:08

Prima facie, you're overeducated for a junior-level development position. You're going to be let down taking a junior-level position anywhere. Its best to market yourself as an expert in whatever you're an expert at.

share|improve this answer
That's very positive. Most of my time is spent making the algorithms and architecture, I try to pawn off things like GUI development, making web servers and writing documentation onto other members of the group. I was doing that pretty much because I was lazy and was trying to save development time, but perhaps it is a good idea! – Anake Dec 6 '11 at 11:14

EDIT: COMMENT FOR OTHER CONTRIBUTORS: He has recently received his Master's degree in Software Engineering (source: Which skills would you expect and appreciate in a Junior Software Engineer?)

In my opinion, after 5 years' experience, I see a Junior Software Developer mostly as a keen team-player with an enthusiasm and drive to learn. Most of the learning will be specific to the project you are working on. You will be expected to gradually develop all skills on your own, such as mastering the exact framework the company is using, understanding their coding standards (if any), becoming proficient with their deployment, testing, and other specific things.

Because it is a junior role, you should get some support from senior developers.

I'd advice the following use case:

  1. look around, discover used technologies and methodologies
  2. find out which of the discovered items are of the highest value for your future career
  3. do your best to specialize in those strategic items regardless of what your current position requires
  4. at some point you become tired of senior developers not valuing you properly and assigning you only the most boring tasks. That's when you should be ready to switch the company. Your new one should be closer to your desired specialization
  5. repeat 1-4 and keep an eye on your experience. Switch companies often, i.e. every 6 months, to get an excellent long list of skills.

General tips: It's not good for your career to focus all effort around one product, such as when staying with one company for several years. Unless it's something like Google, try to acquire as rich a skill-set as possible. In order to do so, change companies frequently. This will also make you learn much faster and earn a lot more money. You become a senior sooner, and then you want to hold a good position for several years because it's well paid and the product will be largely dependent on you.

Possible career prospects are:

  1. Manager
  2. Business Analyst
  3. Software Architect
  4. Security Specialist
  5. System Administrator

Remember: every company is different, uses different technologies, and requires different skills. If your target is specifically Google, find out what positions they are advertising and what particular skills they expect. Do not learn something just for the sake of learning. Keep one language and develop its expert knowledge, i.e. Java, but play with other languages too to be familiar with them.

share|improve this answer
good advice, thank you – Anake Dec 6 '11 at 11:08

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