“Downtown Parking”, an imaginary start-up, plans to build parking garages in large cities around the world. However, their leaders are a little short sighted and are hurrying through the construction process. Without truly understanding the ramifications, they are encouraging their construction workers to take shortcuts in order to finish faster. Meanwhile, the company leaders are keeping a close watch on the books. They are ensuring that their accounting staff are following best practices and never have errors.
Fast forward three years. The company’s bookkeeping records are still perfect after years of close attention to best practices. Well, almost perfect. You see, the quality of their parking garage structures was not a priority and now they are almost unusable. Entire sections of the parking garages cannot even be repaired and have closed. So the company is spending more than it is taking in, and the books are red hot.
The company leaders realize that it is necessary to tear down and rebuild various parking garages in order to stay in business. So, they start construction again. But, because of the urgency to start generating profits again, we have the same song and dance. Construction is hurried, books are immaculate, and the company is ready to roll again.
Why so much attention to the books and so little to the quality of their parking garages? Is high quality accounting the most important piece of the business? I believe this kind of thing wouldn’t actually happen in real life. It’s too preposterous. How would the visionaries of a parking garage company neglect the quality of the obvious core of their business: the parking garages?
Of course, if a real company depends on “X” in order to exist and profit, they will ensure that the quality of their “X” is high so that profits are never damaged and their business is never in danger of closing. This is basic common sense.
As preposterous as it may seem, business leaders do this kind of thing all the time with their software. Countless companies depend absolutely on software that they design and build to run their business processes. But, without understanding the ramifications, they shortsightedly rush their developers causing them to take shortcuts. The initial result is software that works. The long term result is software that cannot be modified without incurring major expense. Many times the software developers finally throw up their hands and say to the business, “it’s time to tear down and re-build.” And they start the process all over.
This is no way to run a business. It's no way to create software. It doesn't have to be this way. Consider the concept of "durable software".
Durable software is like a well-built, high-quality parking garage. It is built with care, not hurried. Longevity is a priority, so the best materials are used. Although less experienced developers work on the project, there are a sufficient number of master craftsmen working alongside of them to guide the project. Everyone working on the project follows industry standards that are proven to yield high quality results.
Durable software embraces change for the long haul. It doesn’t need to be rewritten every few years because it welcomes new features and changes to existing functionality. Although durable software is more expensive to deliver initially, it is inexpensive to maintain for many years, resulting in less overall cost. In addition, the business is free to profit, unhindered by wasteful months or years of rebuilding software.
Acklen Avenue has seen the parking garage problem many times. We are frequently called in to existing development teams to help them get moving in the direction of durability. After research and years of experience, we have found that there are four major components of durable software:
Readability: Write code that someone can understand a year later.
Architecture: Follow a documented architecture like Domain-Driven Design from start to finish.
Tests First: Use Test-Driven Development to drive out production code.
Principles: Adhere to the SOLID Principles of Software Engineering.
Before starting your next green field project, consider all the costs. Remember that the cost of software doesn’t stop at delivery. If your business depends on your software for profitability, you need software that will be able to change with your business and that won’t make your future developers throw up their hands. You need durable software.