Here are two strategies for building things:
It’s about building things so that you can change one part without thinking about the whole thing. This allows you to build big things. Every part must reflect a global order which says how they should interact, what aspects of total correctness depend on correctness of what parts, so that if every part works, it works. In engineering, it’s common to “waste” effort to meet this specification in a way that you will probably never rely upon. This is so when you design other parts, you only have to keep the order in mind as what they have to interact with, not the order plus guesses about whatever your past self (or other people) thought was reasonable.
Perfection in this approach is when you don’t even have to remember the exact interface behavior of the other modules. As you find yourself needing it, you just ask, “What would the ideal behavior be?” and assume it’s that, then build your new module with ideal behavior on top of that. In practice I do this quite a lot with code I’ve written and with pieces of my mind. In engineering, bugs cancelling out bugs are still bugs. Because anything that deviates from the order is liable to cause more problems when you assume the order holds later on.
If engineering is like deontology, hacking is like consequentialism. What something is “really for” is part of the map, not the territory, and you aren’t attached to a particular use of something. Whatever works. Something being “broken” can make it more useful. Don’t waste time on abstractions and formal processes. They are not flexible enough to accommodate something you haven’t built yet. Think about the concrete things you have and need and can change.
Which should you use?
Engineering can be cumbersome to get off the ground, and can seem like it’s predictably always wasting more motion. The things that engineering creates are able to be more robust and it can accommodate more complexity. It scales to large projects. Hacking stretches your cleverness, working memory, and creativity-in-using-things-unintuitively. Engineering stretches your foresight, wisdom, and creativity-in-fitting-to-a-format.
Straw-pragmatists pick hacking for large and long projects. If you are sufficiently ambitious, you need engineering. Implementing any kind of rationality in the human brain is a large and long project. Implementing rationality so you can gain the power to save the world, a common goal among my circles, is definitely ambitious enough to require engineering for the best chance of success.
The human brain is so many hacks already. Engineering will never work. The only option is to pile on more hacks.
Hardcore Buddhists are totally engineers, not hackers. You’ve seen things that’d be impossible for a hacker from them. Like sitting still during self-immolation. Oh yeah. Engineering yourself is DANGEROUS. I do not recommend building yourself according to an order that is not yourself. If you want to save the world, your art of rationality had better be at least that powerful AND automatically point itself in a better direction.
Hopefully my more concrete blog posts will help you understand an order that you can see delivers.
5 thoughts on “Engineering and Hacking your Mind”
Thanks for posting this; I enjoyed reading it. I had never thought of self-immolating, hardcore Buddhists as having engineered themselves. Interesting thought. I can’t quite tell what degree you agree or disagree with the quote about human minds already being so many hacks, that engineering can never work. Where is that quote from? Clearly you’re suggesting engineering can work (as the Buddhists have done), but also that it’s not always a good thing when it works. Was there another point in there that I missed?
The quote is from me, playing devil’s advocate. As are probably most unattributed block quotes I’ll use.
Also important is whether the order is you or an artifact.