It needs to be built into every phase of computing, starting with the CPU micro-code, going through network protocols, up to the topmost JS framework layer.
Screw up one piece and you may end up with a major vulnerability.
Many software project owners avoid it due to complexity. To some extent, even academia sometimes eschews it.
PS: I find them the hardest.
"There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors."
2) Dreading visiting my parents, because you always hear:'Oh good, come here and look at this problem I have'. My wife even volunteers me to fix other peoples stuff, which is real annoying.
I'm like you in that I enjoy just making things work, even when they're trivial. I particularly like doing it for other individuals.
On the other hand, I also enjoy harder research problems. Obsessing and learning new things quickly is probably the biggest joy I get out of work.
What I hate is the middle ground. I hate solving trivial problems, but in a high-pressure environment, for people I'm only circumstantially committed to.
IMHO Complexity, in general, is good. Nature conserves it when its adaptive.
“Everything should be made as simple as possible, but no simpler.”
-Albert Einstein
https://en.wikipedia.org/wiki/List_of_unsolved_problems_in_c...
More seriously, robustness/security. Everything we “engineer” is incredibly fragile. Nothing is built and able to be “done” if it needs continuous security maintenance for its entire life.
- Concurrency
- Building distributed systems (databases, messaging systems, distributed file systems, etc)
- Low level programming
Other words: there's no CS topic which helps you during an estimation meeting.
- https://thomasvilhena.com/2019/10/why-is-it-hard-to-name-cla...
In my case, web development.