Woodworking has been one of my passions for a while now. Nearly everything I do is with hand tools - dimensioning lumber, planing it smooth, joinery, al of it. Some people think it is crazy, but I enjoy it. As an added bonus, I believe it has made me a better developer.
It has caused me to slow down
The choices I make are more deliberate. I stop to think more. I make sure what I am doing is elegant, extensible, and testable. The result is that I spend less time trying to build something and more time actually building it.
I’m not saying I write perfect code (I should tell you about some of the bugs I have caused!) but I understand the code more and find it easier to pinpoint a problem when found.
I pay more attention to the details
Consistency is a sign of a good, clean code base. If you aren’t paying attention to the structure and style of code, then the result is a messy project.
Nothing screams “legacy” more than seeing several different code styles intermixed. Unless you have seen it, you might not understand, but the code feels messy, unkempt, and buggy. It doesn’t mean it is - it just comes across like that.
Visualizing the design in my head.
Woodworking is a 3Dimensional space. You need to know how components are going to interact, move, join together, and assemble.
Being able to take a design and visualize how it fits into the system gives you a feeling of freedom. Once you can do that, then you are able to make changes as you go and be confident of the result.
Recognizing mistakes early
This dovetails with the previous one. “Fail early and often” is a phrase I hear a lot, but recognizing when something is going to fail is even more important. Nobody wants to spend the time solving an issue only to find out it won’t work or causes another problem upstream.
Recognize not only when something has failed, but will fail. That will ultimately make you a better developer.