This article is provided courtesy of IEEE Software Magazine.
Whenever I conduct an architectural assessment—well, really, I try to apply the following principle in all my dealings—I endeavor to speak truth to power: those with true power never fear the truth.
That being said, sticking to that precept has gotten me kicked off at least two projects. In one case, I'd suggested to management that they simply cancel their project because it had a corrupt architecture and a dysfunctional process that were beyond repair. They eventually did cancel the project, but only after they had spent several more tens of millions of dollars of taxpayer money. In the other case, my recommendations were clearly contrary to the project manager's political aspirations, so my papers were buried and I was shuffled out the door. Rumor has it that this project was also later canceled, but not before the manager in question moved up the ladder, leaving the morass and the resulting blame to his successor.
Sam Guckenheimer has observed that in code there is truth. Code represents the stark reality of a software development organization's labor, and no deluge of PowerPoint slides, marketing spin, or glossy packaging will hide that reality. There is also truth to be found in a system's architecture, a truth that's at the same time
- fundamental in the sense that a system's architecture is a manifestation of the significant design decisions its developers have made to shape the system, and
- emergent in the sense that a system's architecture reflects patterns that transcend individual lines of code and give intellectual integrity to the as-built system.
An aside: Be gentle
Before I go on, I should offer a bit of practical advice to those of you who wish to follow my lead. Be careful not to speak the truth too harshly or too personally. If you tell someone that "your architecture is like a rotting pile of fish guts and furthermore your children are ugly," you might indeed be speaking the truth but you won't be an effective agent of change. My style tends to be far more gentle and a bit Socratic.