I think you could almost say: if those things aren't hard you are working to slow and if you are bored you could benefit by raising your own expectations for yourself?
It takes a certain kind of mindset; attention to detail and an ability to visualize and work at high levels of abstraction.
To do it well, that is. Copy-pasting framework cruft until it sort of works is simply boring and the world would be a better place if we stopped doing that.
That's interesting, I've never thought of it this way. I'm bored out of my mind at work more often than not due to not having full access to a monolith where it's actually possible to understand/work on the whole thing. Instead, I have to work until I hit a black box/3rd party and I have to either work around it or knock on the black box and ask the proprietors for help. I know that's a generalization, but it's a real cost of componentization of everything into services and the like, at least in the web world. It's _super_ fucking easy to get like 95% to a solution to almost anything on the web, but that last 5% where you spend the most time is like a constant root-canal.
Vast majority of software engineering is tedious and boring. Almost no developing cutting edge optimal algorithms. Occasionally interesting design/architecture problems but the majority of the time spent on those is on writing docs, consensus building/communication, and implementation. It’s hard to find the motivation and force yourself to spend week after week chasing down bugs through poorly written code, but almost no task itself is challenging.
Come back and say this after you’ve had to fix concurrency bugs or had to maintain some overseas contractor’s terrible codebase with no documentation.