1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Physics Senior physics major to software engineer?

  1. Sep 1, 2010 #1
    Hello everyone!

    I have recently decided that I want to pursue a career in software engineering, but the problem is that I haven’t taken many courses in it. I’ll briefly describe where I’m at now:

    I’m a senior physics major, and I had originally planned on doing some sort of medical physics or biophysics career. After participating in an REU in biophysics, I decided that I research in general wasn't for me, though I still have some interest in medical applications. Upon more soul searching I realized that I enjoyed programming much more than anything I had previously tried; in particular, I enjoy the creativity and analytical skills that are involved in programming.

    So far I’ve only taken one programming class which taught FORTRAN and emphasized its use in solving scientific problems. I’ve taken classes in introductory biology, organic chemistry, the standard physics and math sequences, and the advanced physics classes (e.g. quantum 2, E&M2, modern optics), and I did another REU in photonics/optoelectronics in a previous year. This semester I am finishing up my physics requirements and taking a C/C++ class in the CSE department.

    I want to be eligible for jobs in software engineering by the time I graduate in the spring, so my question to you all is what sort of steps should I take to prepare myself for programming in general? For example: what classes can I take in the spring semester that would be most useful, would CSE research be a good idea, are there any books you would recommend, etc.?

    Thank you for your time!
    Last edited: Sep 1, 2010
  2. jcsd
  3. Sep 2, 2010 #2
    Have you looked into computational physics?
  4. Sep 3, 2010 #3
    Or seen what your school requires for a CS minor?

    Take software engineering and get some experience working on really big/complex coding projects. If you've got any skills to offer (coding/testing/writing), volunteer for an open source project. You need to build up experience coding for most every job, even the ones looking for new grads.
  5. Sep 8, 2010 #4
    I agree with @story645 on working of complex coding. Getting an internship was helpful to me, but there is only so far that it can take you. I find most large companies would rather hire outside of their internship pool. A lot of people think that the majority of these jobs are being sent offshore, however, that is not entirely true. There is still a great demand for onshore software engineer jobs, if you know where to look. Hope this helps, good luck.
  6. Sep 10, 2010 #5
    As a software engineer for over 20 years I can tell you a few things. Not in order and forgive me for the hyperbole.

    1. I would absolutely suggest *not* getting hired by a large company. Larger companies more often than not simply do not require you to wear enough hats. Further small companies can only survive when there are truly fire-breathing dragons present. Such dragons are critical to have around for your own growth. There is far more to this than those two points, and quite frankly I almost dare not enter it here because this subject by itself is worth 20 or more dedicated threads.

    2. Object Oriented technology is an absolute must these days. It is a paradigm that I and most once procedural programmers fight and eventually cave in happily to. Huge caution here. C++ is not the best way to learn this. IF for some reason you find C++ confusing you are certainly not alone. It is a language fraught with ways of shooting yourself in the foot. Consider C# or Java if you become beleaguered. Sigh. Another 20+ threads worth.

    3. To learn how to program I would suggest this. Pick an application that you would find useful *and* interesting to you. One that you wish existed. Design and code the thing from start to finish, including (believe it or not) documentation + source code control + delivery mechanisms. Make it as much a real product as you can. You will be amazed at the breadth of programing and other obstacles you will bump into that everyone else not doing this will ever be exposed to.

    4. I once would have suggested becoming a frequent visitor to the following USENET newsgroups:

    comp.lang.{some language}.{some group} <---depending upon your current language

    ...but sadly USENET is under siege from high volume spamming unless you use a service with an antispam filter. Look around for various computing forums suiting your needs.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook