I used to think that being a software engineer meant you were intelligent, and worked hard to earn the title, but after working in the industry for 6 years, I decided that, large-scale software project management problems aside, industrial computing just isn't that hard relative to math and the sciences.
Once you know a dozen languages and understand the running themes of computing, it's all sort of old-hat. Ironically, as the field has been flooded with young, inexperienced devs to satisfy market demand, the titles of "software developer" or "nerd" have become social badges to indicate one's intelligence and cutting-edge-ness. We use 50-year-old operating systems and call ourselves innovators.
Maybe, like Groucho Marx, I just don't want to belong to any club that would accept me as a member, but I think that if you're looking to level-up intellectually, studying math and science, but especially math, is the way to do it. I was never good at math, but I've spent the past year teaching myself calculus and the struggle has been well worth the expansion in my world-view.
I think "industrial computing just isn't that hard relative to math and the sciences" is only true if you are working on a limited set of applications.
In my job as a software engineer, I've had to: Invent new algorithms and prove their correctness. Formalize datatypes as CRDTs. Design (and model check) a specialized distributed consensus algorithm. Read and implement _many_ algorithms from academic papers, including motion vector estimation. And build complex statistical models.
All of the above require either formal use or the actual practice of mathematics. Sometimes very advanced mathematics including multivariate calculus, statistics, graph theory, number theory, category theory, and so on.
I guess what I'm saying is, software engineering can be as easily as challenging as math and science. Because at its "peak", it is math and science. Not all mathematicians and scientist work on hard problems. Not all software engineers do either. But don't be to quick to judge the field based on a limited sample size.
Can you elaborate on what you worked on? Was it part of academics or industry? I guess it was embedded systems, as these domain seems pretty open to formalization (as they are pretty low-level), as they often demand high reliability.
Most of my formal work was for distributed systems. Some of it was for video transcode and packaging work. All of it was for industry.
For example, I implemented a distributed adaptive bitrate video packager whose core synchronization algorithm I needed to both develop, and then for my own comfort, formally prove. I did a proof of correctness via exhaustion and a proof that it achieved consensus in a minimal number of steps by induction.
This is pretty typical for any "distributed" algorithm because intuiting correctness for concurrent and distributed stuff is ... really hard. That's why people prove garbage collection algorithms.
When designing large distributed systems a thorough understanding of statistics is required to understand workloads. How many transactions per second should this micro service support? Better pull out that Poisson distribution. What cache size do I need? Better grab a zipf distribution, some sample data, and R. Want to understand the interplay of several factors on workload? I hope you are comfortable with multivariable calculus.
I don't face problems like these daily, but when I do I'm fucking glad for every inch of math I know. Which to be honest is still probably not enough.
I'm mildly surprised you didn't know calculus before becoming a software engineer. I suddenly realized that I falsely assumed calculus would be common knowledge to all programmers and now I'm wondering what else would not be that I've been assuming.
I taught myself programming after graduating from art school. I never took calculus or trigonometry even in high school, so my math skills are as basic as you can get as an adult.
Still, I'm currently trying to teach myself math because it seems like it will help me improve as a developer. It's very hard, though, to learn this stuff when you're 32.
It could be age related cognitive decline, real or imagined, but it could also be prioritizing any of the following over learning largely irrelevant mathematics: children and family, exercise, bills/finances/health care, social obligations, politics.
Plus, it's much more likely for a 22 year old to be able to go to college / grad school and be required to learn math.
I can assume 8/10 web developers aren't proficient in calculus, especially the ones who switched careers from non-STEM fields or those who graduated from coding bootcamps.
Depends on what you're doing. My current work project is an embedded device that collects various sensor data. It does a lot of math. The data needs to be filtered, unit converted, averaged, and integrated all in real-time. I don't have the luxury of a fast processor and have to employ efficient numeric algorithms that can save clock cycles. I use regression analysis to approximate curves from datasheets and statistical methods to check my results.
Some people actually do need to use math for their professional work. Is this capital-H hard? No. But you do need an education in the fundamentals to know what you're doing.
You can combine software engineering and math. Try formal methods. Beautiful abstract algebra, like Galois connections, and super-useful. An appetizer:
Once you know a dozen languages and understand the running themes of computing, it's all sort of old-hat. Ironically, as the field has been flooded with young, inexperienced devs to satisfy market demand, the titles of "software developer" or "nerd" have become social badges to indicate one's intelligence and cutting-edge-ness. We use 50-year-old operating systems and call ourselves innovators.
Maybe, like Groucho Marx, I just don't want to belong to any club that would accept me as a member, but I think that if you're looking to level-up intellectually, studying math and science, but especially math, is the way to do it. I was never good at math, but I've spent the past year teaching myself calculus and the struggle has been well worth the expansion in my world-view.