After being a software engineer for over 30 year, I agree with all the points. I have come to the conclusion that being a software engineer is one of the hardest jobs. Also because your often confronted with your weaknesses. But that also gives you room to grow. I also have come to realize that being a software engineer, changes how you view the world, because it forces you to think deeper about problems. The problems behind the problems. In sense that alienates you from all those people who do not have to deal with hard problems, are not used to think deeply about problems. And there are a lot of those kind of people in the world, at least a lot that use their voice.
But in the end, I never regret becoming a software engineer, and I also realized that it has profoundly shaped who I have become.
And then you switch to security from being a developer and the imposter syndrome hits you in the face like a truck and you'll realize how easy it was being a developer.
If only software engineering required or even encouraged thinking, let alone deeply.
Formal systems like computer programming, mathematics or accounting do depend on a certain style of thinking, but I don't think it's especially hard or deep. If something it's shallow and simplistic (which of course has its place).
Why? At least I'm not waiting for mathematicians to e.g. negotiate peace in middle-east, produce a room temperature superconductor or raise a well functioning triplet.
(Obviously me doing those is even more unlikely than me doing P=?NP, but I'm not sure how I'm involved here.)
Don't you see the issue with claiming that "mathematics is shallow and simplistic", but then not being able to follow up on that claim by actually solving one of the most famous open mathematical problems?
If it were shallow and simplistic, any moderately intelligent person would be able to do it - yet decades of world-class mathematicians have failed to produce a proof.
I did not mean shallow and simplistic in a way that any moderately intelligent person would be able to do it. Also all (most) mathematics is not P=?NP level stuff.
Especially being simplistic (unambiguous, mechanistic) is a feature for what mathematics is used for.
All you are saying is that you have been been working on trivial software systems and haven't been exposed to anything particularly large scale or complex so far in your career.
Also you must be confusing basic arithmetic (1+1=2) with mathematics in general.
Go read some papers on deep learning architectures or learn about the Fourier Transform then come back and tell us how shallow and simple it is.
Mathematics requires the most sophisticated and deep thinking that the human species is capable of. Very few humans have the raw intellectual capacity required for being a productive mathematician.
> Also all (most) mathematics is not P=?NP level stuff.
The list of open mathematical problems is as varied as it is vast. But even going beyond that, it's clearly evident (e.g. by considering drop-out rates of technical degrees) that most people seem to be having a really hard time even with comparatively elementary mathematics.
> Especially being simplistic (unambiguous, mechanistic) is a feature for what mathematics is used for.
I'll give you "unambiguous" up to a point (there's still enough debate about which axioms are the "correct" ones, though). But "mechanistic" is plainly wrong. The set of true theorems (e.g. of ZFC) is famously undecidable, so there can be no algorithm that can capture all of mathematics.
If you think it is easy, it is because you have a talent for it and have years of experiance. People who are mental health professionals, teachers, doctors, CEOs, all have what I consider harder jobs, but do you think they would want to switch places and be a software developer 40 hours a week? They would think it is too hard.
Yep, everyone I know who isn't already involved in creating software, including a number of people I know who do jobs that I think of as being actually-hard, thinks it seems really hard and magical. Like, not the job aspect of it that we're mostly discussing here, but the "writing the code that makes computers do all this stuff" part, that probably strikes 95% of the people reading this thread as pretty easy at this point. It's just that it's easy to do things you already know how to do.
There is a medium between "easy" and "hardest job in the world".
People really live in a bubble. Try being a nurse working in cancer kid unit for a few years like my wife. Try being a trucker who sees their kids every other week. Don't you think these people would love seating in their chair from 9 to 5 and make 6 figures?
Maybe I misunderstood what the OP meant by "hardest". I sincerely hope so.
There are just different kinds of "hard". I have lots of nurses in my family who have worked in ERs and ICUs, some of whom nonetheless have told me "I could never do what you do". I think they could! What I do seems way easier to me! But that's not how they see it.
Of course, it is difficult to compare jobs with respect how hard they are. One could easily argue that every job is hard. Jobs can be demanding in various areas, such as: physical, emotional, psychological, mental and intellectual.
Some thins, I think, make software engineering hard, is because it is not very visible from the outside. Another reason is also that it is different from other forms of engineering, where the product of the engineering is outside the engineering and where it is often easy to add a margin. With software, a very small bug can have big consequences.
I also think that software developement is a very creative profession, while often not viewed as such, where you are often judged on the basis of your creative output. In a sense software developers struggle with similar problems as artists, where there is often not an objective good or bad. Discussions about coding styles are frequently found here on Hacker News.
But in the end, I never regret becoming a software engineer, and I also realized that it has profoundly shaped who I have become.