Hello FictionalWizard, it's great to have you as part of the community! Welcome. :)
When I was first diving into Handmade Hero and the Handmade community, I found myself having negative attitudes similar to those mentioned in this thread. It is very hard to not
feel very frustrated at times—especially when beginning to understand software more deeply—because it often feels like software was built with business in mind rather than the user. This is a very disappointing reality of the software industry at large.
That being said, more recently I've been trying to refocus my perspective. Modern software is frustrating and is often poorly made—this is no secret—but what can we
do to change it?
Handmade Network, in my view, has always been about asking (and answering) this question.
As Abner had mentioned, I've been working with Allen (creator of 4coder
) recently, and he shared with me a very interesting model that we can use to frame things.
It might seem a little vague, but imagine that for every decision made in computing, we have a point. From this point, we can make a number of other decisions to continue progressing (or regressing!) computing. All of these paths are possible, and one of them may be chosen.
So, with this model, the entire history of decisions that led to this point in computing looks something like this (except the actual graph would be way more complicated).
So, okay. I've drawn a bunch of dots with lines between them. So what?
Well, within this model, I'd now like to express to you what I think Handmade is all about.
Now I'd like to bring this all back to reality instead of super abstract drawings. Step 1 in the above figure is what these frustrations are getting at. We need
to deeply understand what got us to the current computing world, what is wrong about it, and why all of these things happened.
But that's only half the story. Once we've done that, and reversed the decisions made by others in the past, we can't just stop there. We need to move forward
and make a new set of decisions that result in a better computing world.
So, what does that mean for you and me? What do we need to do? Well, we are only able to work within the existing computing world effectively. We need to use the tools we have, and this is why you'll see Jon using OpenGL, D3D, or C++ for example. And importantly, we need to gain a deeper understanding of what we're doing, what these tools are doing, and why
they are perhaps mistaken.
And then, moving forward, when we are in a position to make new decisions, we can have a better idea of what decisions to make, because we've informed ourselves of where the previous decisions went wrong.
Hopefully that wasn't just a bunch of rambling and provided some insight!