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!

Where should the theory guys go get programming experience?

  1. Feb 15, 2013 #1
    I'm graduating within a phd in theoretical cosmology in several months and have found that it is very difficult to land a job in the industry without any demonstrated programming experience. Knowing that the academic road isn't for me practically, I've read books on C++ and coded a little, but this, I guess, would hardly increase any probability with employment since it is not a "professional experience".

    Where, then, could we theory guys gain any of this "professional programming experience" considering that no institution is providing any certification for C++?

    We really appreciate any feedback!
  2. jcsd
  3. Feb 15, 2013 #2


    User Avatar
    2017 Award

    Staff: Mentor

    Can you write some cosmological simulations? ;)
    It is better than nothing. Depending on the job, it might be sufficient - and if not, it is something you can learn.

    University courses in programming are another option.
  4. Feb 15, 2013 #3
  5. Feb 15, 2013 #4
    I often see suggestions that one get involved in open source projects that you can later say you contributed to. I don't know how well this works, but you might ask around.
  6. Feb 19, 2013 #5
    Thank you for the suggestions. I've used COSMOMC for two months (it's written in Fortran) but forgot most of it. Anyway I would definitely go back and review the material.

  7. Feb 19, 2013 #6
    I thought all theorists these days did loads of programming.
  8. Feb 19, 2013 #7
    I had three roommates in grad school, all three of whom were theorists, and none of whom ever did any programming. So it can happen.

    Maybe things have changed in the past five years. One can hope.
  9. Feb 19, 2013 #8
    As least our group doesn't. The only people that are using programs are all using Mathematica for checking analytical results.
  10. Feb 19, 2013 #9
    A lot of places if you have been programming in a language for many years its probably just as good as professional experience. The hard part is being motivated and finding things to do that test your knowledge. Which is often probably why they ask for professional experience, they want to see if you can follow goals and are driven to finish.

    What do you mean by coded a little? Perhaps you need to be checking around for exercises online, such as project euler or even coming up with them on your own. I would think with an understanding of theoretical cosmology you could come up with some elaborate things to make?

    If not, I have a suggestion try writing some cosmological simulators, or even (gasp) games. Either one can be pretty fun to do and give you some goals and experience.
  11. Feb 19, 2013 #10
    That's pretty sad. Being a theorist myself, I have to say that programming is the most marketable skill a theorist can have. I guess if someone can land a professorship or postdoc within the same field of study (pen/paper theory) then they might never have to learn programming but the chances of that is pretty low.

    Just out of curiosity, what did your roommates end up doing?
  12. Feb 19, 2013 #11
    Sorry, I said roommates, but they were officemates. There were more than a few days where the difference is blurry :)

    One is a postdoc 5 years later. One ended up taking a job around the university that is probably minimum wage-ish in pay but does give him a little time for more chalkboard physics. One disappeared and I haven't been able to keep track of him.

    I don't mean to make it sound like theory is a kiss of death or something. Those three guys are very bright and I'm sure they'll do fine. But most of us would like better opportunities than they had after graduation.

    I know they did.
  13. Feb 19, 2013 #12
    Yes you are correct, it was difficult for someone like me to get motivated in coding, as part of me used to think that using a computer isn't as cool as calculating by hand. And even today, I prefer to go paper/pen against computer as some kind of habit. I guess some theory students share this thought.

    My coding experience is basically the COSMOMC project (using Fortran) which I almost forgot completely except the basic idea, plus some MATHEMATICA "coding" to produce some figures. But thank you for the projectEuler suggestion!
  14. Feb 19, 2013 #13
    If that is the case I highly recommend you pick up and learn C++ or C# in depth. I can suggest the following books either of which is pretty good for C++:

    C++ Primer Plus (pretty good general book)
    Programming: Principles and Practice Using C++ (bound to be a bit harder since its written by the guy who made C++, and I hear its full of lots of exercises)
    C++ Without Fear: A Beginner's Guide That Makes You Feel Smart (pretty good for beginners maybe not what your looking for)

    Knowing a language like C++ or even C# will dramatically increase your hiring potential at places other then just cosmological and physics related.

    Even some of my professors with degrees in physics/math talk about how they wish they would of learned C++ long ago. I really found games to be the best motivator, they tend to have sufficient amounts of math (physics, optics, probability for AI, linear algebra, etc.) And they are fun to write, I don't know if you enjoy that but it might be fun for you.

    If your looking for an easier route, I would learn C# its bound to have the same general performance. The reason they likely used fortran in your schools is because its pretty well known for having fast numerical computation abilities.
    Last edited: Feb 20, 2013
  15. Feb 20, 2013 #14
    Game programming is my backup plan. :)
  16. Feb 20, 2013 #15
    I think video game programming is even more fiercely competitive than many science disciplines... gathering from what I know about people who went down that path.
  17. Feb 20, 2013 #16
    Agree with Lavabug. Make sure to have a backup plan for your backup plan!
  18. Feb 20, 2013 #17


    User Avatar
    Science Advisor

    OP, I think you might be gravely mistaken in your judgement about programming skills. These are practical skills, not something you just pick up a few months if you have never done this seriously before. Becoming a decent programmer takes at least a few *years* of doing this several hours per day! What you are looking for is equivalent to deciding to become a music producer because, well, a keyboard has only 88 keys and it can't be that hard to learn all of them. Or deciding to become a soccer star, because the rules are really quite simple.

    You might want to have look into alternative fields of employment more suited to your skillset, or, alternatively, be prepared to go through some serious pain if you actually happen to land a job in programming.
  19. Feb 20, 2013 #18
    Thanks for the suggestion. I've read through the Thinking in C++ and C++ Primer books so I know the basic syntax of C++. I think the hard part, like you said before, is to get motivated and involve in serious efforts in putting the languages in use. That's something I need to work on.
  20. Feb 20, 2013 #19
    Thanks for pointing that out (I really mean this), and I know that programming is something that's easy to "learn" but difficult to master. Similar things happen in theoretical cosmology too, where a lot of gotcha's hide in the painful calculations and we won't even think of them until we really get our hands dirty.

    And I also know that I won't be happy if my jobs is just coding (I don't mean insult to anyone), so I am not looking for a pure programming job. However, reading a lot from the posts here and other boards, I know that the financial sector, one of the three that mostly likely to hire physicists, does expect us to mainly implement models with programs. I haven't read much about the situations in the oil industry but I guess it would be similar.

    A little off topic. I think one of the most frustrating things for the theories guys, besides the transition that you pointed out, is that we hold the belief that we just need the chance to demonstrate our ability, and given that opportunity we believe we would just learn fast and perform well. However, getting that opportunity is very difficult in the real world, and the believes we have in our abilities might be just plain wrong, in HM's eyes. Staying in academia too long might have lead us too far away from reality.
  21. Feb 20, 2013 #20
    Maybe gamedev is more comfortable than academia but...how should I say this...

    Gamedev is not a field that can be consider as "backup plan". Similar to academia - it's a field that you choose because of your passion (even if salary is not bad).

    Programmers as well as artists can earn much more money with less effort in different fields and as someone said before - we all polish our skills for many years, several hours per day only to work in gamedev.

    Gamedev is business but still - most of us are gamers and we want to work with people who share our passion.
  22. Feb 20, 2013 #21
    Those seem like they are not the greatest analogies because you dont have to be the soccer star/music producer equivalent to work as a programmer. It would be like saying you shouldnt work in physics unless you can be the "Lebron James" of physics.

    Or thinking that if you dont work for Facebook or Google you arent a programmer.
  23. Feb 22, 2013 #22
    1. Research. Almost all of my programming experience has come from self-learning for my research projects.

    2. Join an open source project that you find meaningful and contribute. Or anything which requires you to review other people's codes very often.

    3. Be a contributor at a Q&A board like Stack Overflow.

    4. Competitions.

    5. Traditional sources. Classes, books, online tutorials, online lectures.
  24. Feb 22, 2013 #23


    User Avatar

    Every professional musician or soccer player has to spend years practicing their craft to be competent at it. The analogy was not too far off
  25. Feb 22, 2013 #24
    You need a grounding in the fundamentals. Algorithm analysis, graphs, trees, recursion, pointers, layering, proving correctness of algorithms, etc. The more fundamentals the better.
  26. Feb 22, 2013 #25
    It depends on the employer and the role looking to be filled and that is why the analogy falls flat.

    A position working on applying physics/math methods to finance is going to have different expectations on how much programming you are going to need to know coming in the door than a position looking for someone to do Kernel development. A position looking to speed up arbitrage algorithms is going to require a different level of programming competency than a position looking to build models to base the arbitrage from.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook