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 have a bit of a unique story. I have some work experience in IT, which I've come to generally loathe, and about a year left on finishing my physics degree. I would like to pursue physics further but the career path is pretty grueling and I've decided against it.

I know (or knew) the fundamentals of a good handful of languages: Java, C, C++, PHP, and am familiar with SQL. In my physics degree I've done some research that required a good deal of C++ programming, albeit in a format that is more procedural than OOP, as is common when scientists try to program.

I'd like to convert my experiences to a career in some sort of lower level programming, embedded devices, drivers or scientific/mathematical programming and the like, as I don't particularly enjoy the idea of writing websites or other manner of CRUD applications for 50 hours a week. I've done enough LAMP stuff to know it doesn't really interest me. That said, I am flexible and have only a nebulous idea of what I want to do.

So the question I pose is how to position myself well to start up such a career as a new grad in about a year or so? I certainly need to shore up some fundamentals as it has been a long while since I learned and am pretty rusty. Secondly, I don't have any sort of show-able portfolio as my physics research doesn't really lend itself to that, although perhaps there is an opportunity to parlay some of the stuff I've been doing into a more discreet project.

Lastly, I am worried that my IT background on my resume will typecast me as a sysadmin type and not allow me to break into the more enjoyable, for me at least, world of programming.


TL;DR: Physics degree and IT work wants to convert to a career doing lower-level programming.

share|improve this question

closed as off topic by MichaelT, gnat, Joris Timmermans, Jimmy Hoffa, Dynamic May 6 '13 at 19:45

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

possible duplicate of How can I get more experience with lower level programming? –  gnat May 5 '13 at 19:45
add comment

3 Answers

How about robotics? Some developers of robotics have physics backgrounds. From what I've read, the robotics industry's weak spot is software. So go find a robotics company and apply to it; probably a smaller company will be more open to hiring people with varied backgrounds. Physics would be a good background for many aspects of robotics systems.

share|improve this answer
add comment

Robotics and embedded systems come to mind when reading your question. BenR's answer show some good points in favor of it.

However if you don't feel like buying the hardware and turning your bedroom into a soldering mess, how about you give system programming a shot?

You could grab a free Unix and here are some exercises to try:

  • Write a shell
  • Rewrite the GNU tools like ls or grep
  • Write a device driver or any sort of kernel code

There are also general purpose exercises you could write in low-level languages that shouldn't take too much time and that you could publish on github (or similar public repositories):

  • Rewrite common libraries like string.h in C
  • Write a small intepreter (a brainfuck interpreter is particularly trivial and very fulfilling)
  • Write your implementations of common data-structures

I guess the most important thing for you is to publish a lot of code, ideally a whole project (you still have one year!). That way, future recruiters will feel comfortable hiring you despite your (slightly) atypical background.

Note about the atypical background:

One of my colleague is a Physics PhD who recently shifted to programming. He says that recruiters were generally a bit hesitant when reading about his background, but the fact that he published some code and was able to provide it during interviews, helped him a lot.

share|improve this answer
add comment

I certainly need to sure up some fundamentals as it has been a long while since I learned and am pretty rust. Secondly, I don't have any sort of show-able portfolio as my physics research doesn't really lend itself to that

Did you consider extending your portfolio through a project? I'm thinking about an open source project which uses Arduino to control some motors, a small robot or to power some other great idea.

This would allow you to:

  • get back into (low-level) programming.
  • get some project and code which you can show to companies. Also consider creating a video and put it on Youtube.
  • improve your knowledge about microcontroller programming.
  • show that you like what you are doing and that you already have some practical experience.
  • start your own company (if you end up having a brilliant idea :-)).
share|improve this answer
add comment

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