On Time | On Budget | Under Control

Fix the Foundation

Let’s start with an analogy. Think of the many vintage barns around a typical Northeast state. The construction of the barns that last began with a good foundation. These foundations were made of stones and the cement of the day.

On top of this great foundation was built a big structure with many beams.

For our analogy, the foundation will be Software Architecture. The barn proper is the Software Design and implementation that is built on top.

When a software system is at its beginning, usually an individual or small group defined the architecture and held the design fully in their minds. The scope may have been written down in part by Software Requirements Documents or even a “How To”. But it is more common that the ideas, decisions and “blueprint” are not documented. The only artifact is the software.

As a software system lives on, the original designers and implementers most often move on too. New engineers are brought in to fix bugs, add small features and otherwise maintain the software system.

It is not uncommon that those new engineers  do not know what the architecture is. Some are talented at finding/fixing defects and copying software style/idioms as they “enhance” the software system. But in the heat of the battle to get an issue addressed, changes get incorporated that are not consistent with the original architecture. This effect might be called “architectural degradation”.

With our analogy, “architectural degradation” is like the foundation of the barn deteriorating. Through neglect or bad repairs, the foundation holding up the large structure (our now large base of software) is becoming weaker.

The proper way to approach a software system when changes are needed is to first understand by exploring, via any existing documentation, the architecture of the software. Exploration may also require looking at the existing code, running with debug logging turned on, or adding debugging to illuminate the architecture.

It is a good use of engineering mental effort to find and document the architecture. This exploration may even expose where previous changes were not consistent with the original architecture.

Before we add more stories or “hay” to the barn loft, let’s make sure the foundation is solid.


More Posts

Form vs Function

Many times, we have been tasked with creating a design document or functional demo that will be used to pitch a proof-of-concept for a project.

Why Leadership Matters

We were reminded recently about a post that Daniel Goleman wrote in LinkedIn several years ago entitled Leaders are made, not born. For those of you

Client TestimonY

Over the past 6 years, my team has been working with nFocal on many different projects. We rely on their professionalism to work independently or part of a larger team. From small projects to large they deliver consistently with high quality

Engineering Manager
Industrial Communications

Is your project late? Out of control? Stuck at the starting gate?

We can get your project back on track.