Building Software Like a Master Craftsman
For me, the product has always been the main focus. The user isn’t interested in what technology is working behind the scenes, which architectural patterns were used, or even which IDE the code was written in. However, this doesn’t mean that we, as software developers and architects, shouldn’t place value on knowing how to achieve the result in a meaningful way.
Think of examples from the trades. A customer needs a hole in a wall or maybe even in a steel beam. The choice of tool determines the effort (time/cost) as well as the outcome (quality). Or consider a tile layer who uses too little adhesive. At first, everything looks perfect. But after a while, you’ll notice tiles coming loose (durability). Imagine a car mechanic who, after changing a tire, glues the bolts in place to ensure the wheels stay on securely. As a result, during the next tire change, the entire axle has to be replaced (sustainability). What about an electrician who runs cables haphazardly through walls, making it a nightmare to locate them when you want to add more outlets during a renovation (maintainability)?
From the outside, the product may seem flawless. And perhaps the craftsman never learned a better way. This is exactly what can be applied to software development. Especially since software projects are often long-term endeavors, and the product manager is constantly watching the clock, trying to save time and money. If you lack the experience to choose the right approach, it’s no wonder the product ends up being built “somehow.”
In the trades, master craftsmen must demonstrate broad knowledge. In software development, you can become a “senior” simply by excelling in one area. But what happens when this senior is expected to prove themselves in a new environment? The expectations are high, but the results might not even be average.
Learn the basics. Familiarize yourself with new environments. Consult experienced colleagues and educate yourself in new areas. But always strive not just to make the product outwardly successful. Ensure it is built efficiently, stably, and sustainably. Poor initial decisions will prove costly in the medium term. Not only will such a product lead to dissatisfaction—because adjustments become increasingly expensive and customers wait longer—but it will also be no fun to work on.
Stay versatile and curious. Look beyond your own field. Try things out, because only then will you experience the differences.