Dembadon said:
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.
coalquay404 said:
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.
chill_factor said:
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.