
How useful is a Physics degree? - 9k9
I will graduate with a physics degree in a few years, since starting I've become more and more interested in programming.<p>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
You don't have to compete with CS grads. There aren't enough of them. (Even if
we assume that they are all brilliant and charming and competent and
productive and interested in working on what the customers need and will pay
for... which we do, of course. ;)

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
Minor quibbling point, not necessarily relevant to your question: The point of
a college education is not just job skills per se. If you want skills for a
specific job, you typically are sent for _training_ rather than education. My
sister, who has vastly superior job hunting skills to mine, always said that
unless you want to be something like a doctor or lawyer, your major is largely
irrelevant but having a degree (any degree) is important to get your foot in
the door.

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
I signed up for this comment.

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
Disclaimer: I have a degrees in both CS and Physics.

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
I look at the difference between a computer science major and physics major
like the difference between an english major and a history major. The first
has an in depth knowledge of writing & literature: its history, limitations,
how it got to its present state. The later knows none of that, but has a lot
to say about history and uses writing as a tool. I've rarely seen history
majors worrying about competing with english majors for writing jobs. They
bring something different, and valuable, to the table.

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
I'm about to graduate with a degree in Physics. While the degree itself is
brilliant I don't really think it is incredibly helpful in the startup world.

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
Sounds very familiar ;)

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
You're hired! :-)

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
I have a PhD in physics. Most physicists cannot avoid doing some coding, and
will tend to focus on simulations and numerical algorithms. Most physicists I
know that have left the field are in the high-tech world. If you have
successfully completed a physics degree, you have picked up a way of looking
at the world, and you will have an attraction for simple, elegant solutions.
If you are an experimental physicist (this distinction only comes into play if
you work towards a PhD) you will develop an ability to deal effectively with
the practicalities of limited resources and time. If you want to compete in
getting a job, have some coding experience you can show, spend some time
boning up on algorithms. Younger technical interviewers will focus on
algorithms and whatever they are having a problem with at the moment. They are
the ones you will have to convince. More experienced interviewers will be
looking at how you think and solve problems, and a physicist won't usually
have a problem with those.

------
polemic
I'm a developer who studied Physics, and yes, you certainly can compete.

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
I have a graduate physics degree and I am working on a second one. As far as I
can tell so far you will be quite competitive with CS graduates, though you
may have to start off at a lower position than some. The other thing is you
will have to know exactly what kind of job to apply for and have skills
specific to that area. No matter what I think you should have a good grasp of
optimization and vectorization of algorithms as well as knowledge of parallell
and massively parallell programming. The programming jobs that I have seen
that want physicists tend to want them to make math do very complicated things
very quickly. The other thing people want physicists for is to model complex
systems. There is no shortage of people who want physicist for that. Sharpen
your mathematical programmign skills. You don't necessarily need to be able to
optimize for that but it will make you look better and earn you better
references.

------
slickrick
Going by your assumptions, you will be far ahead of the curve. the principles
of physics and the mathematics that underpin it are skills you can take
anywhere. Computer science students are generally not math illiterate, but a
BS in physics will arm you with that ability to out gun any CS student.

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
I learned to program when I was quite young but was talked into studying
physics at university by teachers and parents. I've never used the physics I
learned there in my work as a programmer - the maths on the other hand has
been very useful. I've never had a shortage of work: on the contrary, I've
always had lots of opportunities to choose from. This has of course been
conditional on actually being good at programming, and most CS degree
programmes don't actually teach you that either. So if you want to be a
programmer: practice!

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
Having a physics degree has really given me an unfair advantage as a software
engineer.

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
This may sound obvious, but it depends on how good you are. I graduated in
Physics last summer, and am doing very well in a programming job. However many
of my old colleagues, especially those who only learned to program during
their degree, would not be a good fit for the job.

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_
Change majors, do a second major, etc. "Assuming I know the relevant
programming languages and have some experience" is a big assumption. Computer
Science (or any science major) is very hard to pick up part time. For your
first job you will be competing with CS grads. I bet it will be an eye opening
experience for you since CS grads do get an unfair advantage in the industry.
The chances are you will have to take a much less lucrative position and will
be playing catch up for many years. Ask yourself - why go that route?

If you decided to do programming - do programming. Consider yourself lucky to
have it figured out while you are still in school.

~~~
polemic
> _"...since CS grads do get an unfair advantage in the industry"_

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.

~~~
dpdp_
I am just telling you the truth.

IT industry != Software Engineering industry. Event IT will favor Business,
InfoSys, Accounting grads way above any other science disciplines.

In Software Engineering, fresh CS grads get a pretty unfair advantage. Do a
Google/Facebook/Microsoft/Amazon interview and find out.

~~~
polemic
You didn't actually rebut anything I said... and you haven't explained what
you mean by "unfair advantage".

And 99.999% of software engineering jobs are not at Google/Facebook/...

~~~
dpdp_
Unfair advantage means:

1\. Interview questions for fresh grads are very CS oriented. For example, I
have seen candidates immediately dismissed for not being able to estimate
algorithm complexity. Same for memory requirements. Same for variants of
knapsack problem. Same for not being able to get to alternative approaches.
Good luck getting those questions right without spending 4 years doing CS.

2\. Internship. CS grads get 2-3 very solid internships on their resume. This
comes up during the evaluation as a big factor.

3\. The "he is not a CS major" comment popping up during the reviews
unintentionally.

4\. Cultural fit (very true for other industries as well). People hire people
like themselves. CS grads have a lot more in common with other CS grads.

Google/Facebook/Microsoft/Amazon/Apple/LinkedIn/etc are at the top of the food
chain. If you want to be the best, you have to compete with the best.

------
ique
I am a Physics (specifically Engineering Physics) major who works with
programming, and yes, you will definitely be able to compete.

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
> I am a Physics (specifically Engineering Physics) major who works with
> programming, and yes, you will definitely be able to compete.

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
Not much: you will need to find a job after you get a degree. Which will most
probably not be physics, so you might as well find it more useful to spend
your student years on something that will give you more possibilities.

 _"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
The short answer is yes.

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
I've been wondering this as well, except my degree is in medical science. I'm
graduating in 4 months, but I like programming too much to continue working in
a lab. I've been programming since I was 14, but I only feel like I've
recently become good at it. Consistently seeing "Required: Computer Science
Degree or equivalent" is discouraging. Hopefully these aren't stringent
requirements.

------
michaelpinto
If you really want to do something then why waste a "few years" doing
something else? Honestly it doesn't matter if you're studying physics,
programming or trying to invent the next slap chop -- what counts is that you
have a passion for what you do and invest the time in that passion. Although
be careful that your passion for programming is indeed that and not something
else.

~~~
9k9
The "few years" would be spent finishing what I have started, it is a shame
that my primary passion may be elsewhere but changing course now would set me
back to far.

~~~
drostie
Well, it depends in what ways you're competing against Comp Sci majors, but
_even in their own major_ there is a lot of competition from competent
physicists -- especially as we try to understand more and more about what
quantum computers can and can't do. (Scott Aaronson's page and blog are
wonderful to see what theoretical comp sci looks like;
<http://www.scottaaronson.com/> ).

If you just want to code, pick up a language, do it in your free time. CS
majors will know a couple of more involved things; for example, many of them
may have written a functioning, if minimal, compiler. If you want at least
some familiarity with this, and if you can stand retro video clips with bad
audio quality, you should watch the Abelson-Sussman lectures online:
[http://ocw.mit.edu/courses/electrical-engineering-and-
comput...](http://ocw.mit.edu/courses/electrical-engineering-and-computer-
science/6-001-structure-and-interpretation-of-computer-programs-
spring-2005/video-lectures/)

I mention them in part because I think you might also like the ideas that
Sussman brought back to his native engineering discipline; the above lectures
are for a course called "The Structure and Interpretation of Computer
Programs," but he later put out a book called "The Structure and
Interpretation of Classical Mechanics," available here:
<http://mitpress.mit.edu/SICM/book-Z-H-4.html#%_toc_start>

The point is that it doesn't have to be two divergent skill-sets. When I was
at Cornell, they advertised their applied physics programme with the wonderful
statement: "once you know the fundamentals, you're ready for everything." The
simple habits you pick up as a physicist, like reasoning about the size of
observable quantities or the cultivated habit of "whenever I hear a
mathematical term I am going to look it up and read the definition until I
understand what the hell they're saying" -- those can really become powerful
when you start to write programs. Depending on what you're doing, it's maybe
not as helpful as being fluent in the database language SQL, but SQL is much
easier to learn and understand sometime later.

------
civilian
I got a degree in Biochemistry. I hadn't taken _any_ programming classes when
I graduated. My first biotech job had me learn some LabView and R. Over the
next year I took a night class in python, and got my job from that.

So yeah. I highly recommend learning CS while you can! CS is a field where
your ability to code is much more important than pieces of paper.

------
codeonfire
The people that should be getting jobs are the ones developing software for
four years before they graduate. The degree does not matter, the ability to do
the job does. don't skimp on coding ability, as most interviewers can tell if
you have been coding for four year or just in a few classes from a short code
sample.

------
spullara
Study a few books on algorithms before your first interviews so you don't get
tripped up on a question about hash tables or red-black trees. I think Physics
gives a programmer a unique perspective especially for debugging and
optimization - something that is rarely taught.

------
joshbaptiste
If you become a good programmer then you are good either way, but definitely
any company that deals with software that relies heavily on physics (3D
Gaming, animation, movie special effects etc..) you will have a competitive
advantage with a physics degree.

------
trbecker
One hint, some analytical models used in physics are very useful in finance. I
have a friend doing his physics masters degree in analytical finance. It seems
very promising for him.

------
alex_g
There are will not be a shortage of Computer Science jobs for quite some time,
but Computer Science is a lot more than just programming, as far as I
understand.

------
leeny
i do interviewing/hiring for a successful startup, and, historically,
candidates with physics degrees have performed very well.

the one concrete piece of advice i'd have for you is in line with what most of
the comments are saying: build stuff in your spare time, make sure the stuff
you build is front and center on your resume, and get good at algorithms.

------
vaksel
are you talking about competing on the job market or in YC application?

If the former, you'll need to show a bunch of examples of your work. So do a
lot of projects that you can show(+the source code).

If you are talking about YC...once again skill beats paper. I know Octopart
both founders were physicists...which learned to code on their own

------
rollypolly
If you like games, and don't mind generally poor working conditions, you
should look at the game industry.

------
rsanchez1
Can go into game programming.

