Where should the theory guys go get programming experience?

In summary, a theoretical cosmologist is graduating within a few months and has found it difficult to find a job in the industry without any demonstrated programming experience. There are several options available to them, such as taking university courses in programming, gaining professional programming experience, or using an online masters program. However, the most marketable skill a theorist can have is programming, so if someone can land a professorship or postdoc within the same field of study, they might never have to learn programming.
  • #1
CloudyTrees
17
0
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!
 
Physics news on Phys.org
  • #2
Can you write some cosmological simulations? ;)
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".
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
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.
 
  • #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.

Thanks!
 
  • #6
I thought all theorists these days did loads of programming.
 
  • #7
TomServo said:
I thought all theorists these days did loads of programming.

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.
 
  • #8
TomServo said:
I thought all theorists these days did loads of programming.

As least our group doesn't. The only people that are using programs are all using Mathematica for checking analytical results.
 
  • #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.
 
  • #10
Locrian said:
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.

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?
 
  • #11
SophusLies said:
Just out of curiosity, what did your roommates end up doing?

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.
 
  • #12
MathWarrior said:
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.

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!
 
  • #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:
  • #14
Game programming is my backup plan. :)
 
  • #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.
 
  • #16
Agree with Lavabug. Make sure to have a backup plan for your backup plan!
 
  • #17
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.
 
  • #18
MathWarrior said:
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.

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.
 
  • #19
cgk said:
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.

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.
 
  • #20
TomServo said:
Game programming is my backup plan. :)

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.
 
  • #21
cgk said:
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.

Those seem like they are not the greatest analogies because you don't have to be the soccer star/music producer equivalent to work as a programmer. It would be like saying you shouldn't work in physics unless you can be the "Lebron James" of physics.

Or thinking that if you don't work for Facebook or Google you arent a programmer.
 
  • #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.
 
  • #23
jesse73 said:
Those seem like they are not the greatest analogies because you don't have to be the soccer star/music producer equivalent to work as a programmer. It would be like saying you shouldn't work in physics unless you can be the "Lebron James" of physics.

Or thinking that if you don't work for Facebook or Google you arent a programmer.
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
 
  • #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.
 
  • #25
jk said:
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

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.
 
  • #26
meanrev said:
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.

Thank you for all these suggestions! Since I mainly do theoretical work in my research, I'd look into details on the stack overflow and open source projects.
 
  • #27
I haven't read the thread, but I'm pretty sure there is a certification you can take that proves that you know how to program in a specific language. Similar to how you would need to be Comptia A+ certified in order to work as a computer technician.
 
  • #28
CloudyTrees said:
Thank you for all these suggestions! Since I mainly do theoretical work in my research, I'd look into details on the stack overflow and open source projects.

You're welcome. Good luck on your journey!
 
  • #29
CloudyTrees said:
As least our group doesn't. The only people that are using programs are all using Mathematica for checking analytical results.

I do that so often that it's like washing my hands or drinking water. (I also write a significant amount of code, but that's because a big chunk of my research uses an obscure numerical method for solving stochastic differential equations on manifolds.)

I was a theorist with minimal programming experience. Basically, I bought some books and wrote a lot of practice programs when my advisor was on sabbatical. I also picked up a lot of Mathematica, MATLAB, and SciPy from working with other theoretical and/or computational physicists. Consequently, I don't have any programming certificates or degrees on my CV. But I do have finished, working programs on my website, and they can be understood, and modified by a skilled programmer.

tl;dr. Short version: I learned programming the same way I learned physics. Ask for help and collaborate with people who (mostly) know what they're doing. When that doesn't work, teach yourself from textbooks and websites.
 
  • #30
Short version: I learned programming the same way I learned physics. Ask for help and collaborate with people who (mostly) know what they're doing. When that doesn't work, teach yourself from textbooks and websites.

Thanks for the advice!
 

1. Where can theory guys go to get programming experience?

There are several options for theory guys to gain programming experience. They can attend coding bootcamps, take online courses, participate in hackathons, intern at tech companies, or work on personal projects.

2. What is the best way for theory guys to gain programming experience?

The best way for theory guys to gain programming experience is to combine multiple methods. Attending a coding bootcamp or taking online courses can provide structured learning, while hackathons and internships offer hands-on experience. Working on personal projects can also be a great way to apply their theoretical knowledge in a practical setting.

3. How long does it take for theory guys to gain enough programming experience?

The amount of time it takes for theory guys to gain enough programming experience varies depending on their learning style and dedication. Some may be able to pick up the necessary skills in a few months, while others may take a year or more. It is important to remember that programming is a continuous learning process, and it is important to keep practicing and building upon existing skills.

4. Are there any specific programming languages that theory guys should focus on?

It is beneficial for theory guys to have a strong foundation in a general-purpose programming language such as Python, Java, or C++. However, the specific language they choose to focus on may depend on their field of study or career goals. For example, a theory guy interested in data analysis may benefit from learning R, while someone interested in web development may focus on HTML, CSS, and JavaScript.

5. Can theory guys become proficient programmers without a computer science degree?

Yes, theory guys can become proficient programmers without a computer science degree. While a degree in computer science can provide a strong foundation in programming principles, it is not a requirement for becoming a skilled programmer. With dedication and practice, theory guys can acquire the necessary skills and knowledge to become proficient programmers.

Similar threads

  • STEM Career Guidance
2
Replies
37
Views
5K
  • STEM Career Guidance
Replies
1
Views
2K
  • STEM Career Guidance
Replies
15
Views
2K
  • STEM Career Guidance
Replies
1
Views
2K
  • STEM Career Guidance
Replies
33
Views
1K
  • STEM Academic Advising
Replies
4
Views
669
Replies
2
Views
792
Replies
6
Views
1K
Replies
3
Views
2K
  • STEM Academic Advising
Replies
3
Views
806
Back
Top