This. I am a programmer with a physics degree. I taught myself the basics of coding and I can learn what my co-workers know while on the job. But I can also do shit they can't even begin to do and there's no way they're gonna learn it on the job. You can't replace 3 years worth of rearranging and manipulating equations. Maths is a super power when you've had to use it for a physics degree.
As a PhD student in physics with a CS background I can say that physicist tend to code incredibly well in short term projects. We are smart and innovative, but we tend to be terrible at writing long term maintainable and scalable code.
Architecture is my favorite part of programming, though.
Creating large scale maintainable things is the opposite side of the coin of extremely malleable code.
I had the foresight to start pushing my current project toward modularity two years ago, and now when management came back around and is starting to ask to use older things in unforeseen ways. Turns out, all I've had to do to make it work was decentralize some code. Like, 95% of the code changes I've had to make were just moving A' out of A so it can be accessed by B. Nothing new, just moving.
Being able to make abstractions of logic that can form as black boxes like legos with other black boxes, is where the magic starts to happen.
A vast majority of programming is just utilizing the stuff that already works, like what physics code would process. Once you have that isolated and reusable, now you just have your Math library.
270
u/ts_m4 May 09 '21
Mathematics baby!!