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

In summary, the conversation discusses the misconception that a degree in physics, particularly a B.S., can lead to a career in programming. The speaker argues that this is not true, as the standard courses for physics majors do not include programming and the skills that are in demand for programming jobs are not taught in these programs. They also mention that the only successful candidates for programming jobs with a physics degree are those who self-taught programming skills. The conversation also addresses the idea of a degree being vocational training and the misleading advice given to students about job prospects with a physics degree.
  • #71
StatGuy2000 said:
The point of my question was if I had studied programming language X on my own (but without any courses in school, certification or practical work experience), should I include my proficiency in the language in my resume or CV (you had argued previously that putting "proficiency in programming language X by developing Y project" would be lying if this amounted to self-study and self-developed project). If so, what should I state in my resume.

Just say that you developed Y project, and go into specifics. How many lines of code? How many users? What was the size of the team? How long did you spend on it? Give me URL so that I can download it.

Project based metrics, means *more* than certifications. Computer certifications are completely useless, and degrees are only useful as an initial filter. No one cares how many classes you took. What people want is for you to **show** that you do something useful. Trying to *demonstrate* something is what "hype" and "spill" means in my world.

There's a difference between "I play chess" and "I have a ELO rating of 2300 and have competed as a national chessmaster." However, if you say something like that, don't be surprised if someone shows up to the interview with a chessboard. I know people that have gotten interviews because they mentioned that they were marathon runners or champion video game players.

Finally, don't try to please everyone. You only need one job.
 
Physics news on Phys.org
  • #72
D H said:
What I might do is ask some of the really nasty physics/math/programming questions that I typically reserve for the best candidates. I don't ask those nasty questions because I'm trying to trip you up.

I **am** trying to trip you up with nasty questions. Part of the purpose of the interview is to see how you behave when you are working at the limits of your knowledge and how you react under stress. I will make up questions that I do not know the answer to, or maybe that no one knows the answer to, in order to see how you react.

The reason for this is that I'm trying to avoid "cookbook" interviews. You have tons of books out that that tell you the "right" answer to an interview question. What I'm trying to do is to trip you up so that you can't answer the questions via rote memorization. If you know what a "virtual function" is, I'll start asking questions about functors and template metaprogramming. You can memorize in one minute "what is a virtual function?" so I'm trying to make you uncomfortable so that you really *know* what a virtual function is. Can you put a virtual function in a template?

If you can't even start framing the problem, now that's a real problem. It means that I completely misgauged you.

It could mean that you also behave badly under stress. I'll then pull back and see if that's the problem or if you really don't know anything. If you really don't know anything, then it's a waste of time to ask more questions, so I'll start fishing for something that you are good at.

All that counts is whether the interviewer thinks you did. If your interviewer thinks you lied, you're toast. You will not get the job. Something to keep in mind when you are writing that resume.

Where I work, it's unlikely that you can get as far as an interview if you outright lie. Before you get to the interview, there are some written tests and a phone screen, and if you really have no skills, you aren't getting past those.
 
  • #73
Mistake said:
Open source projects are pretty intimidating for me. People who have been coding for years contribute to the project and I'm supposed to do something on their level? I'm just afraid my code won't be up to their standards. Yeah, I know that's all in my mind.

Yup. But think of this as practice for the "real world." You are going to be interviewing for a job in which you are working with people who have been coding for years, and you are supposed to do something on their level. If you have a psychological block to this, then it's something that you have to deal with in before the interview.

But in any case, where do I find some projects that would be easy to contribute to?

sourceforge and freshmeat. Also finding a project that you can contribute to is also part of your education. There are some teams that are *nice*. There are some teams that are *nasty*, find a team that is nice.

Projects can be huge. I'd hate to spend a few weeks learning how the code works just to give up because it's too complicated for me to understand.

Well that's part of your education. Look on the bright side. On an open source project, if you get totally over your head, you can just give up and no one will know or care.

You won't have that option when someone pays you for real...

It's pretty common where I work for someone to dump code that you haven't ever seen, and you are expected to do something in hours. One thing that I've gotten paid for is to be an "emergency room code surgeon."
 
  • #74
StatGuy2000 said:
According to you, should I include "proficient in SQL" in my resume? If not, what should I say about my knowledge in this language?

I think that you are asking the wrong question, because the way that you are structuring your resume will make you look very inexperienced. People with little programming experience worry too much about particular languages, and if you are "language-focused" then that means that aren't a good programmer at all.

The situation is as follows:

1) don't learn SQL, learn database theory. Knowing SQL is useless. Knowing how databases work is *extremely* valuable, but it's also very uncommon and very difficult. Learn relational database theory, locking, commits, deadlock, data normalization, keys, indices, hashing, btrees, etc.

2) if it takes you several months to learn SQL, then I can't hire you. You should have enough programming competence so that you can figure out how to write SQL in two to three days. The reason for this is that it's unlikely that you will be programming directly in SQL. You will be programming in two or three random and undocumented languages that probably don't exist outside our company. It should take you at most a week to figure out those languages.

3) Don't say I know database theory. Say "I've done this." Also be realistic. You are *NOT* going to be an expert database programmer in six months, so we can't hire you to be a Oracle guru DBA. With six months, it's possible that you've created a PHP application with a MySQL backend that your bridge club uses to track tournaments, and if you can talk sensibly about how you created the data model. That looks good. I'll ask you about your data model, and how you handle locking and concurrency. If you can give me sensible answers, then that's excellent.

Also if you are writing your own database application for the first time, you are going to do something seriously, seriously stupid. That's good. I'll ask you what stupid thing that you did, and it will be good that you did that stupid thing on your time and not company time.

4) Don't get in over your head. If someone asks you to be a senior database guru for a police department or hospital, say no. If you get it wrong, someone is going to die. You might be qualified as a "code monkey" for those positions.

I've had one or two people offer me interviews for jobs that I knew I was totally unqualified for, and I turned them down because if they were asking me to do something, they were obviously incompetent employers.
 
  • #75
TMFKAN64 said:
This is a much better answer than mine. Documentation is something that *always* needs work and no one really wants to do!

Which means that there are a lot of jobs for technical writers. I know more than a few science fiction writers whose day job is technical writing.
 
  • #76
D H said:
Exactly. When you boast about something in a resume, be prepared to be grilled about it. If it turns out to be all spin and hype, but nothing's there, no job.

However, I don't see why we should assume that this is not the situation. Part of it is that we've hired enough people who have demonstrated *extremely impressive* amounts of knowledge based on weekend projects. If you put a stock market statistics program on your resume, prepared to be grilled to death on it, however, more often than not, people that put this sort of thing in their reason turn out to be *extremely* knowledgeable. It's not uncommon that we have an interviewee, I ask them a few questions, and it turns out that he or she knows more about the topic than I do.

If nothing else, the fact that you did something without being asked shows initiative, which is a good thing.

You work in a very small niche of the programming world, twofish, a world that lives and breathes spin and hype.

I've worked off Wall Street. Spin and hype are part of any high technology company that I've seen, and no spin+no hype = no sale. The *WORLD* breathes spin and hype.

But spin and hype has to be based on reality. Look at the iPhone. It was massively hyped as being easy to use and fashionable and guess what... It *is* easy to use and fashionable.

Almost everyone embellishes their resumes to some extent. There's a line where embellishment becomes a lie, and that line is one that in general should not be crossed. Outside of Wall Street, that is.

I still have no idea why you think that the OP is embellishing or even lying. He says

You didn't do a weekend programming project, you created a program that performed statistical analysis on a database of historical stock data. And you didn't do it to learn to program, you did because you didn't like the tools available for free on the internet or because you thought you had some novel approach to stock analysis.

There are lots of different ways of describing something, and part of marketing in any company is to figure out how to describe something *truthfully*.

If you take a package and label it "dead animal parts" you aren't going to make the sale. If you label it "grade A steak" when in fact it *is* "grade A steak" that's a good thing, and it's a bad thing if you "dead animal parts." If I don't put on my resume the fact that I take may clothes off when I shower, I'm not lying. If I do put on my resume, that I'm slight fat, people wonder why I'm mentioning that.

When done well, "spin", "hype", and "marketing" makes things *more* truthful, not less. The recruiter hypes someone as a mathematical genius, and guess what? He is.
 
  • #77
I like the way two-fish is describing the process for the interview (and I assume they have a good filtering out process before this stage).

One thing that I have noticed in my limited experience (in the past) was that getting in a situation where you are just dumped a tonne of code and asked to do something relatively quickly is pretty much a good test of how you will do since this is what happens anyway.

So the weekend project is actually a good indicator of being able to at least handle these situations and show not only what you did but what you got out of it and what you learned.

Also I get a feeling that a lot of people who call themselves "programmers" (and apply for jobs) really underestimate the actual screwing around that it takes to just get to the level where you jump in and can suck up the information to be able to do what you need to do very quickly.

It took me personally many many years after being introduced to programming (for me this was at the start of high school or what the US call junior high: I'm basing this off the TV show degrassi junior high).

Most of the time was spent watching everything crash again and again and again. Then at some point things started to become highly organized mentally and I knew what to look for, and could decipher the code for what it was and not for what it "says".

I can't really see how it's possible to really do dev work without spending many years and more time than what you would spend in university learning to code. If you don't do a lot of those weekend projects, the screwing around with your own projects or with other code, on top of all the really over-simplified assignments in uni (yes that's what I think of them) then I can't really see how you could develop code for a living.

To me 3 or 4 years is too short to become the kind of developer that is expected nowadays due to so many things attributed to the realities of modern software development: it's just way too short IMO.
 
  • #78
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.

And one more thing, by the same token EE majors have equally bad preparation in programing, but you still see these degrees advertised for their job opportunities as a programmer even more so than physics, or math majors. And, companies even hire more of them as well (maybe it's because of the sheer discrepancy in the number of candidates).

Finally, I never knew there was a "programming major". If a company requires someone with a knowledge in SQL, they may even hire a high school graduate if they know it.


/troll
 
  • #79
chiro said:
It took me personally many many years after being introduced to programming (for me this was at the start of high school or what the US call junior high: I'm basing this off the TV show degrassi junior high).

This is off-topic, but I just wanted to let you know that Degrassi Junior High is a Canadian TV show, set in Toronto! :smile:

(in fact, a few of my friends grew up on the very streets where the show was filmed)
 
  • #80
Dickfore said:
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.

And one more thing, by the same token EE majors have equally bad preparation in programing, but you still see these degrees advertised for their job opportunities as a programmer even more so than physics, or math majors. And, companies even hire more of them as well (maybe it's because of the sheer discrepancy in the number of candidates).
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.
 
  • #81
Isn't a CS program heavily math dependent, but more so on the proof side?
 
  • #82
Unless its changed much in the past few years, I don't recall ever doing proofs in CS. I do recall some heavy abstract math in compiler design theory but not proofs per se.

They used to teach program correctness techniques that bordered on proving the correctness of an algorithm not sure if that's still an important topic among other more important topics.
 
  • #83
Discrete mathematics was required for our CS majors. Which included proof by induction, but I don't think full blown proof were required.
 
  • #84
chiro said:
Also I get a feeling that a lot of people who call themselves "programmers" (and apply for jobs) really underestimate the actual screwing around that it takes to just get to the level where you jump in and can suck up the information to be able to do what you need to do very quickly.

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.

There's actually a point in this sort of spin. One reason that "programmer" has a bad connotation in the type of work that I've done is that people without too much computer ability use it it describe themselves, and avoiding using that term is something of a "hidden code" saying "I know enough about the industry to avoid using this term to describe myself."
Of course, if people with little ability break the code and start using "software developer" then that will cause that term to go bad, and people will find something else.

It works the other way. Since "programmer" means "crap job", people selling the jobs don't advertise for "programmers" in finance, the advertise for something with the word "quantitative" in it. Since that's "cool". But increasingly "crap jobs" are being labelled with
"quantitative" that's caused that term to go down in value.

This is an example of "honest spin." The person reading you resume is looking at it for five seconds. What are the three to five words that you want him to see that *accurately* and *truthfully* describes yourself. I'm not a "theoretical astrophysicist" I'm a "computational astrophysicist." There is a *big* difference when it comes to writing a resume. Companies (for good reason), hate people that are "theoretical."

I can't really see how it's possible to really do dev work without spending many years and more time than what you would spend in university learning to code.

Yes, but lots of people have that sort of experience without going taking any formal classes at the university, and lots of people that go to university are terrible coders. One thing that going to university gives you is *free time*.

If you don't do a lot of those weekend projects, the screwing around with your own projects or with other code, on top of all the really over-simplified assignments in uni (yes that's what I think of them) then I can't really see how you could develop code for a living.

And it's a moving target. One reason I'm very positive toward people who do weekend projects is that I still spend a large amount of my weekend doing projects. I *have* to do it because there is ton of technology coming down the pipe. I've programmed C++
for 20 years, and I'm "still" a student, because I'm playing with C++11 and GPU's.

To me 3 or 4 years is too short to become the kind of developer that is expected nowadays due to so many things attributed to the realities of modern software development: it's just way too short IMO.

The good news is that there are tons and tons of jobs that someone with minimal computer
training can do. The bad news is that they are all in Mumbai and Shenzhen. If a US
company needs some "basic coding" done, they aren't going to hire someone local, they are
going to ship the job off to Mumbai, and the wages there are a fraction of what they are in the US.

The jobs that stay on-shore are "emergency open heart surgery" type jobs. Some that is a
database guru for example can make hundreds of dollars an hour, but you need years maybe decades of experience for that sort of thing.

In the late-1990's people were saying that it was OK for "basic low level" jobs to go to China and India as long as the "high value" jobs stay in the US. The trouble with that plan is that if you don't have basic low level jobs around, then there is no way of training people for the "high value" jobs.
 
  • #85
Mistake said:
Isn't a CS program heavily math dependent, but more so on the proof side?

A lot depends on the school. One thing that was an important part of my education was that the CS department in my undergraduate school was part of the electrical engineering department, which meant it had a "practical" aspect. One other important part is that my undergraduate education put a lot of emphasis on the *business* aspects of CS. There were no formal classes, but pretty much every professor was trying to start their own company, and just listening to your professor talk about how to get VC funding and management headaches was educational. You also had professors and alumni that started multi-billion dollar companies, and hearing them talk about how than did that was educational.

Also, I ended up in charge of a student government committee, and I had to manage personnel and a budget, and go begging to Deans for money. It's amazing how much of life involves begging for money.

The philosophy of my undergraduate school was that they weren't trying to teach "pure technicians" but rather "technical entrepreneurs" and "technical managers." To do this, you have to know more than programming, you have to understand business.

My graduate school experiences reinforced this. One reason I have respect for spin and hype is that I got to see one of the masters of spin and hype in action in my graduate school. There was one professor in particular that was an "astrophysicist salesman" and part of his job was to go to Congress and the state legislature, and spin and hype physics so that we'd get money.

Astrophysics has the ultimate in *hype* (For just $2 billion, we discover what created the universe, get lots of pretty pictures, and also generate jobs in your district so that you get reelected.) The fact that the spin-master and hype-master is also a world class physicist (i.e. he has a Nobel prize) made him more amazing to watch, and makes him a more effective "salesman." If I call a Congressman to lobby for more science funding, he isn't going to talk to me personally. If he calls and wants a meeting he can wave his Nobel prize and get that meeting.

You win some. You lose some. The big loss was the SSC. The big win was COBE, Hubble, and WMAP.

And he was just part of a department that put a lot of emphasis on business. Watching the process of space probes get funded (or not funded) was part of my education. Making sure that you have *pretty pictures* is part of the hype. The spin is "jobs, jobs, jobs."

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.
 
Last edited:
  • #86
twofish-quant said:
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.
 
  • #87
twofish-quant said:
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/1412652/?q=%22financial+programmer%22&o=date

http://www.google.com/#hl=en&output...4bd4d4b7cce50b&bpcl=35466521&biw=1366&bih=645
 
  • #88
D H said:
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.
 
  • #89
chill_factor said:
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).
 
  • #90
jkl71 said:
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".
 
  • #91
D H said:
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.
 
  • #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!

Dickfore said:
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
 
  • #93
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".

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.
 
  • #94
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".

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.
 
  • #95
elkement said:
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.
 
  • #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.
 
  • #97
Dembadon said:
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

D H said:
... 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.
 
  • #98
elkement said:
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.
 
  • #99
Dembadon said:
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 ;-)
 
  • #100
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.
 
  • #101
D H said:
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.
 
  • #102
Dembadon said:
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.
 
  • #103
D H said:
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.

Two points spring to mind:

  • Without defining what you mean by "typical science-based application", it's difficult to comment further. But for the sorts of "typical science-based applications" of which I have direct experience (numerical relativity, machine learning, and DNA sequencing/analysis), searching and sorting represent a huge proportion of the code.
  • Even if we accept that searches and sorts are unimportant in scientific applications, the OP's argument was specifically about software development beyond the confines of scientific computing. My experience of the curricula at three universities (Oxford, Cambridge, and Princeton) suggests nothing to contradict the idea that physics graduates don't have a head start when it comes to actual software engineering. If anything, they're generally at a significant disadvantage compared to CS graduates since they lack the necessary knowledge of fundamental data structures and algorithms.
 
  • #104
If you want to do software development you should do computer science or software engineering.
 
  • #105
Best Pokemon said:
If you want to do software development you should do computer science or software engineering.

Imo, the tide is turning against CS grads with the hot new domain of multiscale modeling.

Something has to resurrect and breathe life into an intellectual pursuit for science and engineering. Right now, who wants to get a science Phd and be held accountable in the workplace? Or told you're over the hill at age 40? This is madness. Do you think the MBA's or MD's allow themselves to be treated like cannon fodder? Or face career change because they are obsolete or that their career is over because they screwed up?

Worst of all, is this absolute craziness of taking science/engineering at school and then pretending that working at wall street is somehow related. "I'm doing physics at Wall Street"...RUBBISH. To me, this is a failed physicist or mathematician.

No damn way am I going to engineering school to be some disposable grunt running about like some errand boy to meet the MBA's bonus.

Its high time that the engineering department is *NOT* treated as a cost centre that negatively impacts profits.
 

Similar threads

  • STEM Career Guidance
Replies
30
Views
5K
  • STEM Career Guidance
Replies
22
Views
3K
  • STEM Career Guidance
Replies
9
Views
2K
  • STEM Career Guidance
2
Replies
37
Views
6K
  • STEM Career Guidance
Replies
5
Views
832
  • STEM Career Guidance
Replies
18
Views
2K
  • STEM Career Guidance
Replies
10
Views
728
  • STEM Career Guidance
Replies
33
Views
2K
  • STEM Career Guidance
Replies
9
Views
1K
Replies
13
Views
2K
Back
Top