Hacker News new | ask | show | jobs
by anyonecancode 1621 days ago
In addition to the responses talking about getting better with software specifically, I think it's helpful to work get better about thinking in a systems way, generally. There are systems all around us, providing plenty of opportunity to practice systems thinking. For instance right now looking out my window at my backyard I see a drainage basin with frozen water there. I can start asking questions like "where did that water come from," "how long will it stay in that drainage basin", "where does it go when it leaves," etc. Or looking at the next house over and seeing the steam coming out a chimney -- where does that steam come from? What is the heat source? How did that heat get to that house? Etc.

System design is, primarily, a way of thinking -- identifying how given things are actually connected, thinking through how they are connected, what happens up and down those connections as things change. Software systems are just one particular example of this (and, as a bonus, when you start to include non-software parts, such as the humans actually using the software, your software system design will be stronger).

I'm sure others will cite this too, but I don't see it yet at the time I'm writing this, so for a specific book let me recommend Thinking in Systems by Donella Meadows[0]

[0]https://www.chelseagreen.com/product/thinking-in-systems/

3 comments

Adding one more thing to my comment -- I think an important skill is the ability to put details in boxes and then kind of forget about them. Eg when thinking about a software system, being able to look at it with the appropriate "zoom level." The shape of the boxes, and how they relate to each other, are what you need to look at. Crucially, though, this doesn't mean details aren't important, it means they're not important _right now_. That's why I picked the analogy of the boxes; you will at some point need to open up the boxes again.

Or another way to try and explain it -- you can't keep everything in your mind's "RAM" -- when trying to think systematically, you need to offload the details onto disk for later retrieval. Don't throw them away! People who are "vision people" and brag about not sweating the details become really annoying to work with as a software engineer -- but you won't be able to grasp the system if your mental RAM is cluttered up with those details all the time.

I want to second the book recommendation, it changed how I viewed the world and politics.
I only got through about halfway, stocks and flows is all I got out of it.
That's the gist of it really
2nd (3rd?) the recommendation on the book