Six Ways to Build Reliable Applications


In his CM: the Next Generation, Joe Farah gives us a glimpse into the trends that CM experts will need to tackle and master based upon industry trends and future technology challenges.

I came across a paper the other day in Better Software titled, "Code Improvement" by Jeff Grover and Zhon Johansen. It's a short, but good article focusing on developing well-designed code. My favorite point was "Start/Finish each task by refactoring". In other words, stop the entropy of expanding your software solution by ensuring that the code is as minimal as necessary to meet the requirements. There are parallels in the CM world that ultimately lead to a reliable CM process and tool support capability. In this article, I'll venture where I don't usually go: inside our own development environment to bring out a few points that may apply equally to general development and to a CM environment.

I am perpetually frustrated by the big-IT solutions that come out of the software industry under the premise that "it has to be big to do all it does" and the belief that "if it's not big, it's not a world class solution". Think about it:  a few things will come to mind. Like some database vendors, business process software solutions, and, yes, CM solutions. In the latter area, the industry has seen a few small-IT tools emerge which meet the requirements better than the big-IT tools, at least in some areas for some tools, in a broader sense for at least one. Better small-IT solutions will emerge over time across the entire software spectrum.

When I buy a software solution, I don't want an internal help desk, a need for significant consulting, a huge training bill, a large platform resource requirement, a solution administration team. I want ease of use, easy customization, small footprint, zero administration, reliability and loads of features that meet my requirements, out of the box if possible. This is certainly true of CM tools as well.

Architecture First
First and foremost, in building reliable applications, these things have to be the minds of the architects. The software industry aims too low in general. Let's glue things together. Let's copy and paste and change it. We'll optimize it later, or we can use bigger boxes to run it. Let's get it running first, then we can look at the features we need.

If you're in this type of environment, I don't envy you. What's missing is the building of the underlying architecture. Some might say architecture doesn't just happen. But more properly, good architecture doesn't just happen. If you don't build it well, you'll have a poor architecture.


About the author

AgileConnection is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.