Craftsmanship Saves Money
Or at least saves time, which as we all know is equal to money.
In 1985, my family moved to Rochester New York. The new house was quite a bit larger than our old house, and we had a lot more room for bookshelves. For whatever reason, my Dad decided that we were going to have the same bookshelves in every single room of the house, adjustable bookshelves with a particular stain in one of two heights and one of two widths.
So we built bookshelves. Lots and lots and lots of bookshelves. It took us about a week of cutting, routing, sanding, and staining, and in the end we had bookshelves for every room in the house, either short ones that fit under windows or tall ones that did not, with adjustable shelves and sanded smooth enough that you could see your reflection in the wood. Later that summer, I went to visit my grandmother, and her boyfriend Ray, on hearing this story, declared that you didn’t need that much time to build a bookshelf. To prove it, he threw together a bookshelf out of scrap wood that he nailed into a closet. Boom, instant bookshelf. At the time, being a callow teenager, I didn’t really grasp the difference. From a utilitarian standpoint, it seemed to me that the bookshelves were the same, he had built a bookshelf in an hour as proposed.
My family still has the bookshelves that we built in 1985. They’ve been moved a few times and I don’t think we still have all of them, we moved into a smaller house and so didn’t have room… but we still have them. I still have file cabinets that my dad built when I was 8 or 9. My parents haven’t needed to buy or build a bookshelf for 27 years, and they’ve moved three or four times, depending on how you keep count. My dad has built two houses to live in since we built those bookshelves, and he’s just moved the bookshelves into them. And actually, I think I have a bookshelf that he built when I was 5 or 6, so we own at least one piece of homebuilt furniture that is over 30 years old. My grandmother doesn’t have the house anymore, and I’m sure that the bookshelf that took an hour was torn out by someone with better taste or a need for closet space. Our bookshelves are probably going to be in our family for at least another generation.
You don’t need to spend a week or two building bookshelves if you want somewhere to put your books. You only have to spend a week or two building bookshelves if you never want to worry about bookshelves ever again, if you want to solve the bookshelf problem. You only need to spend the time if you want to reap dividends down the road.
Enterprise software is approximately 60 billion times as complex as a bookshelf, and frequently, enterprises want engineers to add functionality to it in an afternoon. They want their coders to “just get it done”, without any concern for quality or willingness to invest in it. And they get software that is, metaphorically, nailed into a specific spot and built out of scrap wood. If they want to adjust the metaphorical shelves, they need to rip them out and nail them back in, and probably the wood isn’t going to fit anyway. Every change costs as much or more as the original feature, becuse the code isn’t built to be portable or extensible, because portability and extensibility take time to build. And while I might need to solve my bookshelf problems every couple of years, and enterprise needs new code every single day, hundreds of lines of it. Hundreds of lines of code being slapped together without any concern for basic craftsmanship, then being built on, built around, rebuilt, duplicated, with the cost of change increasing with every single line. Companies are “saving” money and time by doubling or tripling the money and time it takes to add new features to existing software, then building new software exactly the same way when the old software becomes unmaintainable.
And this behavior works out, at least, it works out from the point of view that everybody seems to be making money. But part of that is an accounting trick, just like some companies move debt off book, company’s can move their technical debt off book as well. Usually, there is no mechanism to evaluate what the total technical debt of a company actually is. And while we understand what the cost of monetary debt is, and we know how to evaluate that risk, we’re much more naive in terms of what the cost of technical debt is going to be. We honestly do not know if a single software failure is enough to destroy a large company, or an economy.