Implementing a Process for Good Application Development Architecture

One of the challenges of being an IT consultant is leveraging experience in a variety of project work. Different business problems mixed with different technologies in various environments can offer few consistencies. One consistency, however, is a warning we proclaim with every opportunity: You never recover from a bad architecture. Fundamentally, it costs you more to maintain and scale an application that has begun with a poor design.

It is much harder to alter a section of code or a database design when the existing architecture does not accommodate the change. How many applications do you support that were born with good intent but exist today as a hodgepodge of quasi-operational functionalities? Remember, bad applications never die… they just cause your budget to fade away.

A good design begins with the proper process. This is less about formal tools and training and more about getting the right people communicating effectively. Here’s how.

Independent of your role in the development cycle, from business sponsor to developer, there are steps that you can take to ensure the proper progress of application development. First, understand that every development effort (large or small) should begin with paper and pencil. One of the easiest ways to translate requirements, across all skill levels, is to draw some simple pictures that illustrate key components (i.e. what types of data will we send or how will clients interact with the system). These conceptual drawings allow you to quickly frame the scope and focus the effort and also lead seamlessly into the more detailed technical designs.

Once these drawings are completed (remember no code has been written yet), translate them to some electronic form; PowerPoint works well. Preface this work with a couple of slides that highlight project objectives and you have distributable presentation material. The objective is to create definition that all team members, stakeholders and internal experts understand and agree to. One of the key components in successful architecture design is communication (within and outside the core team). The clarity of the information should be such that you could present it to non-team members, defending every aspect of the technical decision. There is an inherent, somewhat subtle, pride in having to present ideas in a formal environment. It ensures better quality, spurs good discussion and facilitates brainstorming.

When you have detail (user definitions, data flow diagrams, etc.) that everyone is comfortable with then you are ready to start the building process. As development begins and throughout the development cycle the concepts defined in the original design should hold. They provide the means to validate both progress (how are we doing against the core application goals?) and maintain focus (are the main goals still the same?). Monitoring these details also facilitates the inevitable change control process.

The design portion of an application’s lifecycle is the foundation upon which all else resides. The ultimate success of a development effort is always closely tied to the quality delivered from the initial design effort.

Remember: Design, Defend then Develop.