New Reply

A physics major is not good preparation for a career in software development

 
Share Thread Thread Tools
Oct18-12, 11:19 PM   #86
 

A physics major is not good preparation for a career in software development


Quote by twofish-quant View Post
Getting back to the OP. The way that physics is taught is different from place to place, but it turns out that my education in which the politics and business of science was taught along with the differential equations was excellent preparation. I remember how the "astrophysics salesman" prepared for his interviews with Congress people, and that gave me some starting points for how to prepare for mine.
Any quick tips or tricks of the trade you wouldn't mind sharing? My school has a (seemingly) similar type atmosphere as your undergrad in regards to the "technical entrepreneur" side, so I'm curious to some of the things that were highlighted for you.
Oct18-12, 11:36 PM   #87
 
Quote by twofish-quant View Post
This is another example of "spin" and "marketing." When I apply for jobs, I often specifically avoid calling myself a "computer programmer" since a "programmer" implies shoveling code and getting your job sent to India. "Software developer" is a better term and for finance "quantitative analyst" and "quantitative developer" are the preferred terms. "Scientific programmer" is also possible, but in a lot of the jobs that I apply for "scientific" is bad.
I look at threads on QuantNet and it seems a financial programmer is actually a different job than a quantitative analyst or a quantitative developer.

https://www.quantnet.com/search/1412...mmer%22&o=date

http://www.google.com/#hl=en&output=...w=1366&bih=645
Oct19-12, 12:26 AM   #88
 
Quote by D H View Post
Back on topic!

The following is based solely on my experience, so take it with a grain of salt. The reason that physics majors, EEs, aerospace engineers, et al are hired to do what is essentially a programming job (but with a strong scientific/mathematical/engineering flavor) is that as bad as they are at programming, the typical computer science major is even worse when it comes to scientific programming. Engineers, and maybe scientists, can be taught to program well, or at least to recognize why their programs aren't so good. The engineering principles that distinguish a good system design from a bad one also apply to software. A good chunk of CS majors took that route specifically so they would never have to take another math class again. They don't grok filters and noise, ODEs and PDEs; a lot of them don't grok and can't grok F=ma.
I'm a physics grad student and I hit a brick wall in C programming in undergrad multiple times. That's why I do experiment. At least it will give me useful hands on skills with commercial materials instrumentation, designing and building basic circuits and using software packages like Matlab, Labviews, etc. rather than keep slamming into a brick wall programming.

When physicists say that they are good programmers, what they really mean is: I'm very smart and learned how to program myself. They do not mean that a BS (or even a PHD) Physics trains you to be a programmer. Like twofish said, what professors say is "oh, we have no clue what you can do with your degree, but uh, you're smart because you passed, so you'll think of something."

Well turns out that the majority of people are not smart enough to figure it out. We need guidance. We need help. We need to be specifically trained. But programming, and programming well, not the 1 file 1000 lines of mostly redundant numerical code style, is not part of the specific training.
Oct19-12, 01:18 AM   #89
 
Quote by chill_factor View Post
When physicists say that they are good programmers, what they really mean is: I'm very smart and learned how to program myself. They do not mean that a BS (or even a PHD) Physics trains you to be a programmer.
I agree that’s the expectation. Even being fairly experienced, every job I’ve had has involved a lot of learning on the fly. From my perspective the biggest challenges in writing software are understanding the business objectives and how to build a model to achieve them, understanding frameworks and libraries that are available, and figuring out poorly designed/implemented legacy code. Two of the three of these are substantially different at every development shop.

I never did any programming related to physics, so I can’t say how useful it is as a background for software development.

I do have some speculation why physics might be as useful (although I don’t believe either it or computer science is as useful as actual experience working on a real project). One thing I do think physics could be useful for is that a large part of physics is building mathematical models of the natural world, to me this is analogous to building software models of a business. However, I can’t say whether it’s just a common set of skills that make someone more likely to be good at physics and software, or the experience in doing physics substantially helps in developing these skills.

I’d expect getting your foot in the door without any professional experience is fairly hard these days, other people have offered far better advice on that than I could. Learning to program well is in large part a state of mind, being committed to doing quality work and having good attention to detail. One book that helped me when I first got started was “Code Complete” by Steve McConnell, I found the advice to be very useful (I was truly starting from zero).
Oct19-12, 02:06 AM   #90
 
Quote by jkl71 View Post

I do have some speculation why physics might be as useful (although I don’t believe either it or computer science is as useful as actual experience working on a real project). One thing I do think physics could be useful for is that a large part of physics is building mathematical models of the natural world, to me this is analogous to building software models of a business. However, I can’t say whether it’s just a common set of skills that make someone more likely to be good at physics and software, or the experience in doing physics substantially helps in developing these skills.
Mathematical models for the natural world. True. I use Matlab for that. That is far different from programming something from scratch on C. The whole thing about "oh its just mathematical modeling"... no its not. There's a type of "programming logic", not just math, that goes into it. Some people can handle the math concepts and even do some numerical stuff on Matlab or Mathematica but can't handle the "programming logic".
Oct19-12, 02:57 AM   #91
 
Blog Entries: 2
Quote by D H View Post
Back on topic!

The following is based solely on my experience, so take it with a grain of salt. The reason that physics majors, EEs, aerospace engineers, et al are hired to do what is essentially a programming job (but with a strong scientific/mathematical/engineering flavor) is that as bad as they are at programming, the typical computer science major is even worse when it comes to scientific programming. Engineers, and maybe scientists, can be taught to program well, or at least to recognize why their programs aren't so good. The engineering principles that distinguish a good system design from a bad one also apply to software. A good chunk of CS majors took that route specifically so they would never have to take another math class again. They don't grok filters and noise, ODEs and PDEs; a lot of them don't grok and can't grok F=ma.
I agree - I have been told that nearly literally by Siemens many years ago: We rather can train physicists to become programmers, but the CS majors cannot be trained the physics / engineering basics. This was illustrated by: They will never get how a transistor really works.
Oct19-12, 05:19 AM   #92
 
Chill_factor raises a fair point. Not everyone wants, or indeed can, be "entrepreneurial" with their physics degree. In fact, I'm willing to bet that most people would prefer a clear-cut path! Do X, do Y, this will lead to B-lambda. After that do Q2, and voila. You're set.

(or something)

Not everyone finds living in uncertainty and stress exciting!

Quote by Dickfore View Post
I just want to say that there are undergraduate programs in Computational Physics, which DO give a solid foundation in programming and knowledge in hardware.
http://www.kenyon.edu/scientificcomputing.xml
Oct19-12, 06:05 AM   #93
 
Quote by chill_factor View Post
Mathematical models for the natural world. True. I use Matlab for that. That is far different from programming something from scratch on C. The whole thing about "oh its just mathematical modeling"... no its not. There's a type of "programming logic", not just math, that goes into it. Some people can handle the math concepts and even do some numerical stuff on Matlab or Mathematica but can't handle the "programming logic".
Just for those who think chill_factor is fibbing:

If you look at some of the complex platforms out there that have all these crazy macro's, templates, build scripts, and a whole plethora of meta-data, interface definitions and so on, you'll see how different the environment is to software development as opposed to the environment of say MATLAB or Mathematica.
Oct19-12, 09:02 AM   #94
 
Quote by chill_factor View Post
Mathematical models for the natural world. True. I use Matlab for that. That is far different from programming something from scratch on C. The whole thing about "oh its just mathematical modeling"... no its not. There's a type of "programming logic", not just math, that goes into it. Some people can handle the math concepts and even do some numerical stuff on Matlab or Mathematica but can't handle the "programming logic".
The analogy I had in mind wasn't really about doing math with software, it was more along the lines of building an object model of a business process or perhaps a biological system.
Oct19-12, 10:01 AM   #95
 
Recognitions:
Gold Membership Gold Member
Quote by elkement View Post
I agree - I have been told that nearly literally by Siemens many years ago: We rather can train physicists to become programmers, but the CS majors cannot be trained the physics / engineering basics. This was illustrated by: They will never get how a transistor really works.
The title of the thread does not refer to programmers; it refers to software development, which is something completely different. Anyone can learn the syntax of a language and write trivial programs for computational purposes (i.e. become programmers). However, reading through an O'Reilly book on C++ isn't going to teach you how to build an operating system from scratch.

In other words, programmer is to software developer as electrician is to electrical engineer. One is a trade, the other a profession.

Moreover, it is intellectually naive to suggest that CS programs don't teach engineering basics. CS at my university requires three semesters of physics (the first two are from the standard US sequence, while the third is focused on developing programs that act as models of the physical world), 1 in electronics, and 1 in circuits. The computer engineering requirements have lab and lecture components that are largely hardware oriented.
Oct19-12, 10:29 AM   #96
 
Someone once said that 90% of software development consists of searches and sorts. Assuming that to be true (and ignoring the remaining 10%, which is actually a quite important 10%), a typical physics degree isn't going to teach you how to search and sort data to any acceptable degree.

Sure, you might get some basic C or C++ experience out of it, but were you exposed to the appropriate data structures and algorithms? Even assuming that you touched on binary search trees, is that going to be good enough when your new employer expects you to implement, say, a limit order book for an electronic market? Did your physics degree teach you that the appropriate structure in this case is a self-balancing tree? Can you implement a balanced tree in C++? Can you analyse the theoretical cost of each operation? Are you capable of comparing the theoretical performance with the real-world performance when your limit order book is connected to a NASDAQ ITCH feed and thousands of orders are added each second? Do you know enough about TCP/IP to be able even to connect your application to a market feed?

Software engineering is hard. A typical physics degree isn't going to provide you with the tools to be successful at it.
Oct19-12, 11:07 AM   #97
 
Blog Entries: 2
Quote by Dembadon View Post
The title of the thread does not refer to programmers; it refers to software development, which is something completely different.
I could not agree more - I have worked in the IT industry for many years. I picked the term programmer because the posting by D_H referred to

Quote by D H View Post
... physics majors, EEs, aerospace engineers, et al are hired to do what is essentially a programming job (but with a strong scientific/mathematical/engineering flavor)...
and the Siemens jobs I referred to were programming jobs with an eng. flavor.

As I said in an earlier in this thread, this has changed over the past 15-20 years. When I entered the IT world my impression was that only a minority of my colleagues actually had a CS or any IT related degree or training at all - IT was a sector that was particularly open to people with uncommon CVs. Anybody from zoologist to philologist (genuine examples) could become a computer expert, developer, programmer, architect.

I guess this was simply a matter of supply and demand of trained computer scientists. Many self-educated developers or IT professionals I know went back to school later and worked towards a CS degree while employed full-time.

I do not at all underestimate the value of a CS degree.
Oct19-12, 11:29 AM   #98
 
Recognitions:
Gold Membership Gold Member
Quote by elkement View Post
I could not agree more - I have worked in the IT industry for many years. I picked the term programmer because the posting by D_H referred to



and the Siemens jobs I referred to were programming jobs with an eng. flavor.

As I said in an earlier in this thread, this has changed over the past 15-20 years. When I entered the IT world my impression was that only a minority of my colleagues actually had a CS or any IT related degree or training at all - IT was a sector that was particularly open to people with uncommon CVs. Anybody from zoologist to philologist (genuine examples) could become a computer expert, developer, programmer, architect.

I guess this was simply a matter of supply and demand of trained computer scientists. Many self-educated developers or IT professionals I know went back to school later and worked towards a CS degree while employed full-time.

I do not at all underestimate the value of a CS degree.
I should have read the thread before posting, something I normally make a point to do; my apologies for misrepresenting your position.
Oct19-12, 11:37 AM   #99
 
Blog Entries: 2
Quote by Dembadon View Post
I should have read the thread before posting, something I normally make a point to do; my apologies for misrepresenting your position.
No problem at all - my last posting was a bit short, I should have also phrased it more carefully (that I quoted Siemens basically).

Thinking more about the long-term development of the IT pro / dev job market I sometimes wonder if the problems with older legacy systems stem from the fact that they have been once setup by all kinds of weird career changers ;-)
Oct19-12, 03:09 PM   #100
D H
 
Mentor
Quote by Dembadon View Post
The title of the thread does not refer to programmers; it refers to software development, which is something completely different.
It refers in particular to whether a physics major is good preparation for a career in software development. Software development is a big, nebulous term. Does it prepare you for developing a massive transaction based system that uses a number of different processes written in multiple programming languages and that needs to be extremely reliable? No. Does it prepare you for developing a massive system that simulates the weather, the performance of a new physical device, or rockets in space? That's a different question. Does it prepare you for developing a game with a significant physics engine? That, too, is a different question than that transaction-based system.
Moreover, it is intellectually naive to suggest that CS programs don't teach engineering basics. CS at my university requires three semesters of physics (the first two are from the standard US sequence, while the third is focused on developing programs that act as models of the physical world), 1 in electronics, and 1 in circuits.
That's not common. I just picked three schools off the top of my head, the University of Texas at Austin, the University of Maryland at College Park, and the University of Massachusetts at Amherst. Maybe one math class beyond freshman calculus and six to eight semester hours of science, any science. Biology and physics for poets, for example.


Quote by coalquay404 View Post
Someone once said that 90% of software development consists of searches and sorts. Assuming that to be true (and ignoring the remaining 10%, which is actually a quite important 10%), a typical physics degree isn't going to teach you how to search and sort data to any acceptable degree.
For a typical science-based application it's the other way around. Only a tiny, tiny percent of scientific software involves searches and sorts. Most of the software involves mathematical models of some sort.


Quote by chill_factor View Post
Mathematical models for the natural world. True. I use Matlab for that. That is far different from programming something from scratch on C. The whole thing about "oh its just mathematical modeling"... no its not. There's a type of "programming logic", not just math, that goes into it. Some people can handle the math concepts and even do some numerical stuff on Matlab or Mathematica but can't handle the "programming logic".
Yep. One of the concepts that I've found is hardest to teach engineers and scientists is that a statement such as is_ok = x<y; (a) is valid, (b) makes sense, and (c) can be very useful. The things you put inside an if test can be variables? And its best to not even start talking about things such as preconditions, postconditions, and invariants. Concepts such as cohesiveness, coupling, fan in and fan out, and complexity are also hard to get across.

Software development, science, and engineering require very different modes of thinking, different world views. Someone who can bridge those different world views and do so while avoiding the "jack of all trades, master of none" problem is rare -- and worth a whole lot.
Oct19-12, 03:40 PM   #101
 
Recognitions:
Gold Membership Gold Member
Quote by D H View Post
It refers in particular to whether a physics major is good preparation for a career in software development. Software development is a big, nebulous term. Does it prepare you for developing a massive transaction based system that uses a number of different processes written in multiple programming languages and that needs to be extremely reliable? No. Does it prepare you for developing a massive system that simulates the weather, the performance of a new physical device, or rockets in space? That's a different question. Does it prepare you for developing a game with a significant physics engine? That, too, is a different question than that transaction-based system.

That's not common. I just picked three schools off the top of my head, the University of Texas at Austin, the University of Maryland at College Park, and the University of Massachusetts at Amherst. Maybe one math class beyond freshman calculus and six to eight semester hours of science, any science. Biology and physics for poets, for example.

...
Amazed, I took a look at the programs; it appears as if those institutions have separate paths for CS and Computer Engineering. The program I'm in is similar to College Park's "computer engineering" path, with the addition of Calc III, linear algebra, and a course in probability and statistics. Thank you for the examples; I didn't know there were non-ABET accredited options in CS.
Oct19-12, 03:51 PM   #102
D H
 
Mentor
Quote by Dembadon View Post
Amazed, I took a look at the programs; it appears as if those institutions have separate paths for CS and Computer Engineering.
The Association for Computing Machinery and the Institute of Electrical and Electronics Engineers have teamed to define curricula for fields relating to computing. They have developed five such curricula: Computer science, computer engineering, information systems, information technology, and software engineering. Computing, not surprisingly, is a very, very big domain.
New Reply
Thread Tools


Similar Threads for: A physics major is not good preparation for a career in software development
Thread Forum Replies
Physics Major to related career? Career Guidance 8
Physics major need career advice Career Guidance 1
Nanotechnology as a career option for Physics Major Career Guidance 2
Software development in Physics Career Guidance 6