How useful is a Physics degree?
My question is will I be able to compete with Computer Science graduates, assuming I know the relevant programming languages and have some experience?
My question is will I be able to compete with Computer Science graduates, assuming I know the relevant programming languages and have some experience?
[+] [-] mechanical_fish|14 years ago|reply
Moreover, much of what needs to be done with programming doesn't require CS knowledge as such, but rather a lot of ancillary skills that aren't taught in any school; some of them are barely even mentioned in books. There you and the CS majors start out tied.
Conspicuous among that set of skills are business skills: Not MBA stuff, but things like "here is a potential customer: what are their actual problems, can I help solve them, can I prove that to myself, can I prove that to them using words they will understand and like, will they really pay me?" So much of your work will be about these things, in programming or in physics, and CS training doesn't teach them any more than stat mech class does.
[+] [-] Mz|14 years ago|reply
I will close with one of my favorite anecdotes: Michael Crichton wanted to be a writer. His family told him he was crazy, you cannot support yourself that way and encouraged him to be a doctor. So he went to medical school. And his first book was published before he graduated, so he never did work as a doctor. Still, his overwhelmingly successful books and movies are all the richer due to his educational background. Jurassic Park and other works would not be so compelling if, like so many authors, he had some throwaway explanation like "er...radiation! That's it!"
Not intended as advice, which is nearly "against my religion". Intended only as food for thought.
Best of luck.
[+] [-] mattst88|14 years ago|reply
I graduated from a small liberal arts school with a degree in Physics (and a minor in CS). I actually would have done Computer Science, but the university's program didn't teach the things I was interested in -- but let me be clear: computers were my primary passion.
I got a software engineering job offer after graduation, but I decided to go to grad school instead and I'm now finishing a masters in Computer Science. When I started, I was worried that not having a BS in Computer Science would handicap me compared to other students, but it didn't seem to (or at least grad school is hard enough for everyone that I didn't stand out).
My work and my interests are in Free Software, and what I'm finding out in applying for jobs is that companies (especially those that deal with Free Software) care very much about your contributions to Free Software. It's obviously easier to get a handle on someone's skills if their entire portfolio of work is available in public git repositories.
In working with different projects, I've also gotten to know developers who work on the teams that I'm applying for jobs on. I feel like this gives an extra advantage that's not easily available in other fields.
The summary of this is that the degree doesn't matter so much. What matters (at least in the world of Free Software) is what have you contributed and who have you worked with.
Another data point: a number of really good software developers at Red Hat have non-computer degrees or no degrees at all.
Owen Taylor (GNOME) - Physics
Jerome Glisse (AMD driver) - PhD in Biology
Matthew Garret (Kernel, power management) - PhD in Biology
Ben Skeggs (Nouveau driver) - no degree
[+] [-] Maro|14 years ago|reply
If you learn C/C++ programming, you'll be able to get a job at an investment bank and won't have to worry about money. If that's something that attracts you, study (and write code) in a field where Monte Carlo simulations are used, like lattice gauge theory, which is a lot of fun and will help you understand QFTs. Here's some links to get started:
http://latticeguy.net/mypubs/pubs.html
Some C code:
http://thy.phy.bnl.gov/~creutz/z2/
If you want to do something like a web startup and learn Ruby on Rails, then Physics won't help you much. You'll just be on equal footing with CS guys, if you put in the time.
PS: Most physicist I know are absolutely terrible software engineers. If you're going to write larger programs, please read some books about how to write larger programs!
[+] [-] kentonwhite|14 years ago|reply
Being a physicist, you probably can't wax eloquently on the tradeoffs of functional v. object v. imperative programming styles. Or the subtle nuances between closures and Lisp and closures in Javascript. But that is Ok because you will use code to say something useful about the world around you.
Your physics training will help you do these things (and more) in the software world: identify patterns in large datasets; predict the evolution of a complex system; create models of real world processes; reason about how a black-box system might be working.
These skills are in demand. If you focus on these aspects from your physics training you should have no problem competing with the computer science majors.
BTW, I have a PhD in Physics. A little over 6 years ago I stopped doing physics and engineering full time and focused on what can best be described as computer science full time. I'm also an adjunct professor of Computer Science.
[+] [-] fonzie|14 years ago|reply
You do learn C, Mathematica, MatLab, etc, which means you will at least know what is going on when you look at code, but by itself this is not enough.
Something that has definitely helped me was taking a Microprocessors course, where you learn Assembly, which meant really understanding computational processes like memory, power, speed. I was lucky that we were able to create a standalone project that really helped solidify all the theoretical ideas. If If you can do a course like this, I highly recommend it.
Unless you spend as much time auditing CS courses as you do in Physics lectures (and really have the commitment to learn both), you will not leave with the same knowledge as a CS student, but if you put in the work, you can be competent.
I really have only one piece of advice: If you want to build applications once you graduate, start building now. It doesn't matter if they aren't brilliant or even good for that matter; build. It doesn't matter if they don't look incredible; build. It doesn't matter what languages or frameworks you learn; build. If you do this, with time, you will learn that you can learn most things relatively quickly and be competent in whatever it is you decide to do after graduating, because you spent time hammering away, grinding and really learning.
[+] [-] codepoet|14 years ago|reply
I have an econophysics degree, work in IT and can easily compete with CS graduates. Started my first job as a software developer and now I'm the head of my own development team and also responsible for hiring.
As a physicist you are a problem solver: You will learn how to learn, how to tackle complex challenges in a systematic way and analyze experiments. These skills are very useful. If your physics and math knowledge helps you later on depends on your future job. My own work does not involve physics, nor any non-trivial math.
The biggest hurdle will be getting your first job in IT: You have to show that you are as capable as a CS graduate. That's easier if you apply for jobs that don't focus on algorithms, for example systems programming. Though some companies will only hire CS graduates and miss the chance to get cross-domain knowledge...
So how to show the hiring manager that you are good at writing software? Write (open source) software, mention projects on your CV and also in your cover letter. I love to see links to github / bitbucket on a CV.
If you have passion for writing software, are willing to invest a huge amount of time and you know how to teach yourself then you can be become a great software developer.
[+] [-] usiegj00|14 years ago|reply
Really tho--if you have a passion for CS, but studied Physics, you have the capacity to excel. I fell in love with the ordered-ness of computers and self-taught myself programming in my teens. I went to college and studied Physics knowing I would likely not continue as a career physicist. During college I found that between my basic programming knowledge and physics requirements I had covered a large portion of the CompSci major (except for the upper division classes). I tested out of some and then took the others to end up with CompSci + Physics degrees.
Since graduating, I've benefited from my CompSci degree in areas like data structures, runtime complexity and parsing--but the rest of my CompSci skills were self-taught before or afterwards ("the Internet" was not in my CompSci curriculum).
I believe I've benefited more from my Physics training. Specifically--the Socratic method of looking at root causes in a systematic and problem-simplifying manner. And I've never been daunted by a hard problem or one that needs theoretical analysis for an elegant solution.
Given all of the above, some of the best programmers I've met have no degrees--so passion and willingness to self-learn trump all.
[+] [-] lorenzofarris|14 years ago|reply
[+] [-] polemic|14 years ago|reply
I did a few CS papers but I was frustrated by what I considered low level practical and overly complex theoretcial skills I was learning. That's fine - University should focus on the theoretical - but it doesn't always result in employable skill. Heck, it's possible to get a CS degree without doing that much actual programming.
In my opinion, Physics gives you useful thought processes and solid math skills. A physicist has to relate the real world to theoretical models, something that a programmer has to do every day. Also, many of my physics lab experiments entailed computer analysis of the results. You had to take real-world data and get useful information by programming something - something that not all CS majors seem to have to deal with.
You will have to prove yourself - but if you've been working on open source projects or have a portfolio of high quality work, that will count more than a CS degree for many employers.
[+] [-] short_circut|14 years ago|reply
[+] [-] slickrick|14 years ago|reply
I don't know what you want to do in life, but if you know physics, a few languages, and have rock solid higher level math skills then the sky is the limit. David Pines spoke at my sister's graduation and he changed my outlook on life, hence my praise for the field.
I reccomend reading "Forunte's Formula" by poundstone, Complexity The emerging science at the edge of order and chaos by waldrop. My life as a quant by dermann. Oh and And Ploya's "How to solve it". If that doesn't give you an idea of how valuable a legitimate BS in physics is then I'm afraid you cannot be helped.
CS degree or not what matters at the end of the day are your own abilities.
[+] [-] pmjordan|14 years ago|reply
By the way, your time at university and your degree will still be useful: use that time to make friends and work on projects with like-minded people, and generally have some fun. Use the degree to get past CV/resumé filters that screen for having a degree.
[+] [-] redsymbol|14 years ago|reply
You'll have to do some extra work (hint: if you haven't already, start coding in your spare time now, and endeavor to learn version control and unit testing). But the short answer is: yes, you will be able to compete.
[+] [-] advisedwang|14 years ago|reply
Ask yourself if you see programming, say, a web browser or a IMDb-like website an impossible feat. If so you will probably not enjoy it. If you see it as something that is eventually manageable (with a team and learning some new skills) then you will probably do very well.
I think physics provides all the analytical skills, it's just you don't want to have too much catching up to do before you are competative with other graduates.
[+] [-] dpdp_|14 years ago|reply
If you decided to do programming - do programming. Consider yourself lucky to have it figured out while you are still in school.
[+] [-] polemic|14 years ago|reply
Really?
Considering that the IT industry is wide open to people without CS degrees, it is exactly the other way around. Engineering, Medical or Law students don't have an "unfair advantage" to their respective profession - they've simply met the minimum requirement. Meanwhile, a CS major has given up several years to maybe have a better shot of getting an interview, never mind a job.
[+] [-] ique|14 years ago|reply
Having studied math extensively, like function theory and a lot of linear algebra and combinatorics, you will be able to pick up on CS algorithms very fast. You might already have studied some without knowing it.
Physics is a broad subject that permeates the students brain with scientific thinking and teaches you how to understand stuff.
Of the 10-15 companies or so I've spoken to, they would all hire an Engineering Physics student for a CS position, given that they have an interest in programming and can show relevant basic skills in the field.
[+] [-] quink|14 years ago|reply
Hell yes. It will mean that clueless recruitment agencies won't even bother contacting you or doing anything for you, because they don't see you as suitable for anything related to IT. Whether that's a good or bad thing is questionable. It does however mean that getting the foot in the door, i.e. getting into a position that requires a Bachelor in IT is a lot more difficult, in them not wanting to take any risks. The only thing you need to do is prove to them that there is no risk.
Between casual IT work (Sendmail, Exchange, Adobe, Linux/Mac OS, Windows Server and end-user support skills) next to my degree and my Physics degree, I was able to pick up enough skills to get a job. It helped that my Physics degree forced me to learn all of Assembly, C, LabVIEW, LaTeX, Mathematica, MATLAB, Python (Project Euler, actually, is the thing that started forcing me to really know Python) and to a lesser extent Bash and Scheme.
Being able to put ten languages on top of Perl, PHP, JavaScript and others I knew already or know outside of my degree, probably really helped in getting a position programming in a niche language. Given the ten programming languages you're likely to learn in a Physics degree (with a bit of interest) and considering that's likely to be more than you'll get from a Bachelor in IT or maybe even computer science, you're in luck :)
So, in a nutshell, and riffing of another comment here, learn version control and unit testing and know at least one programming language like Python or JavaScript inside out and you're pretty good. Brush up on your design skills and you're done - for now :)
[+] [-] Create|14 years ago|reply
"How should we make it attractive for them [young people] to spend 5,6,7 years in our field, be satisfied, learn about excitement, but finally be qualified to find other possibilities?" – H. Schopper
But you can also spend your student years working for others to be disposed of by policy and find that your most valuable young years were invested in something you will not be able to benefit from yourself.
[+] [-] jimmahoney|14 years ago|reply
As several folks have pointed out, the real answer is that it depends more on you (what skills you've cultivated, what projects you've been involved in) than the degree itself. I have met a number of folks with physics degrees who are amazing at CS stuff.
I myself did a BS in math & physics, a PhD in physics, and during all that time did lots of various sorts of computational data and modeling work. I now teach college level computer science.
[+] [-] mindcruzer|14 years ago|reply