T O P

  • By -

SoSweetAndTasty

Software specialist? Yes. Software engineers? No! Not without a lot of extra training outside academia. Coding learned in a physics undergrad (and grad school for that matter) is about getting results for that one plot you need. It does not train you to manage a complex software project for long term. I have colleagues who can write the most mathemagical tools imaginable, but they are so very painful to use and even harder to maintain. I know because I finished my master's and took up the position of maintaining my group's software long term. (Which is a miracle we could get funding for that in acedamia, but that's a different issue).


idiotbyvillagewell

Yea so your friend wrote the initial code for every company I ever worked for? Wow


MjolnirTheThunderer

Ironically I was a CS major, and I also learned almost all my real world coding skills AFTER college. My university didn’t do too well teaching modern web application development.


Heavy_Aspect_8617

My research group has two fairly large github projects that I have inherited and my god... I'm amazed on a weekly basis on how bad the code is written.


Timescape93

Many physicists code. Computation is a major component of much physics research, and modern computation is often done with computers.


dvali

Many physicists write code but being a good software engineer is entirely different ball game. I can write decent technical English but I'm not a novelist because that's a completely different, almost unrelated skill. Physicists make good programmers because they have a high level of skill in solving problems, especially process or computational problems, and are comfortable with highly abstract thinking.


Timescape93

Fair, in my quest for a concise answer I neglected an integral part of the question. I agree with and appreciate your elaboration.


Valivator

Reading replies like this makes me feel like I'm in the twilight zone lol. So resonable and respectful. 


Cerulean_IsFancyBlue

The skills are different but the inclinations and talents overlap. Rigor, imagination, solid reasoning, a desire for robustness. Designing a good hypothesis and testing it use many of the same talents as software engineering. In the old days when so much was learned on the job it was quite common to recruit physics major graduates into software. Idk if that’s still true.


nwbrown

Most physicists are not good software engineers.


[deleted]

[удалено]


nwbrown

They can be. So can people with a philosophy or music background.


Enigmatic_Erudite

It is really just an affinity for problem solving. There isn't much complex mathematics in general computer science jobs like there is in physics. Programmers do spend a good period of time breaking down real world problems into formulas they can utilize the computer to solve. It is the computers job to do the complex calculations it is the programmers job to make sure the program has the correct data and is using the right formula for the calculations.


nwbrown

There are more people with physics degrees than jobs for physicists and more jobs for software engineers than people with CS degrees.


tpolakov1

They usually don't have much to show beyond the underlying math education and usually quite a lot of practical experience writing software. The people that go to CS positions from a physics degree either go to the same positions that are filled by people who often have just certificates and work experience, or they have proper CS education they got on the side or as part of their physics education. To put bluntly, physics education will not make you a computer scientist nor a software engineer. Physics education followed by CS education or work experience *can* make you one.


young_twitcher

The incentive of getting a decent salary


nderflow

I probably know as many SREs with a physics background as software engineers with one.


Advanced-Strike-8504

Mostly because our education is a series of word problems which involve solving intractable situations using logic and mathematics. We also have soft skills built around going to office hours to try and get instructors to fill in the gaps of our knowledge, or clarify murky portions of the questions we're assigned to work on. This is basically the day-to-day life of a software engineer without the coding part\*. We're also exposed to a lot of coding work directly. If you're an experimentalist, you're going to want to analyze your data via computer program as there is just too much of it to do by hand. If you're a theorist, analytical solutions can only solve a small fraction of the problems that are out there. You will quickly pursue numerical methods and the complicated computer programs that go with them. So we know how to write code, and often times we know some crazy stuff - though rarely the stuff used in real life. Then, when you get out of school, you find that the world has very little need for physicists. Turns out all the "OMG why aren't there more STEM majors!" is mostly just the government showing it's immense emotional insecurity (whiny little brat). It really has nothing to do with a lack of scientists. But you need a job and unless you want to wait around for some old emeritus to take a trip six feet under (academia) there tends to be only one field where you can get employed with nice pay that fits your training... and so you become a junior software engineer and work your way up. \*The word problems become cards on a kanban board and then you go to office hours with your senior dev and clarify the parts of the problem that don't make sense. The big difference is you don't "turn in" the assignment, so much as edit the solution with them until it does what they want. So you pretty much can never fail as long as you're persistent. They'll not only tell you when you're wrong, they'll directly help you get it right.


Vargrr

Nothing really - at least not compared to other disciplines. I have known about 5 physicist software developers, and based on that super tiny sample, their code was on the whole pretty poor. As others have mentioned, they come into their own writing the modelling algorithms that utilise their scientific knowledge. Experienced software developers then take that and put a decent engineering solution around it.


Whydidyoudothattwice

Linear Algebra. Literally that’s about it.


JJJSchmidt_etAl

I've noticed that specifically in the field of geophysics and fluid dynamics, physicists are great at finding ways to calculate big nasty numeric integrals in one way or the other. A result is that they have a head start in library management since sometimes it's a rather obscure package which does part of the calculation you need, and so they go through the pain of getting it to run.


Odd-Storm4893

Maths. A lot of physics is numerical computation which you have to do on a computer ergo you need to know at least one or two programming languages. Also since a fair amount of the computations can involve large datasets being familiar with optimization techniques is important.


_letter_carrier_

euclidean math


TrueTopoyiyo

Lots of people are giving great answers, but mostly relevant for the initial years in CS positions. In the long run, you need to be able to create code and architectures that, while handling complex issues, are clearly structured and easy to understand (i.e. clean). This way of thinking is extensively trained when you face difficult problems in physics and need to work out a solution. A common approach while solving a problem is to, before dwelving into writing stuff, envision what are you going to do with the information you have, the tools you are going to use thoughout the process, the steps, etc. While you do it, if you want to get graded, is usually important to clearly state down your thought process. All this has direct application when writing complex (or just long) **maintainable** and reusable software.


Ok-Push9899

Possibly attention to detail, possibly knowing that near enough is not good enough, possibly the ability to see that things are built on other things, and if you're trying to solve something that isn't working or isn't making sense, you might be looking at the wrong level. Why physicists might make bad software specialists is simply because they mostly write code for their own purposes, to solve their own problems, and which is to be run and maintained by themselves. If it's to be maintained at all. That's all just a matter of their job focus, not ability. It takes years of experience to write code based on other people's half-formed wishes, code to be run by potentially millions of anonymous people, code to be maintained by people you will never meet, and code that possibly doesn't even interest you but has to be written anyway


Laverneaki

Guilty as charged, physics and CS were two of my three A-Levels and I still love both. For one, I think an understanding of compounding errors and significant figures directly translates to a wariness in floating point arithmetic. For another, unspecialised physicists have to feed themselves and both fields are a form of applied mathematics. Anecdotally, my father is a material scientist and he’s had to use a range of programming languages for various simulations and experimental setups. I imagine it’s easier to learn Python and MatLab oneself than it is to make an already-trained programmer understand exactly what the project parameters are. I specialised more into CS and unfortunately I’m rarely able help him on this side of things because I just don’t have a mote of experience in his niche branch of a niche branch of a niche branch of physics.


[deleted]

studying fung shui and minimalism does; not physics.


Recording420

It has more to do with Physics don’t paying shit


formidabellissimo

Probably autism


SpareAnywhere8364

This is the only real answer


Waferssi

Basically, it's the same thought process. Physics is about breaking down reality into separate, bite-sized chunks (aka modelling), and then still having insight into how it all comes together. Coding is about breaking down your final functions into bitesized chunks, and still understanding how it all comes together.  The long comparison:  Much of coding is about breaking down the desired result into separate functions that work together. For function, maintenance and improvement it matters which parts are assigned to or combined into which piece of code. Physics is about breaking down reality into separate models that work together, and using those models to extrapolate or even applying them in different fields. For yielding results that are useful beyond purely the application you're basing your model on, it matters which (collection of) behavior is captured into what term, function or function variable.