Categories
Software Architect

Take responsibility for your decisions

Software architects have to take responsibility for their decisions as they have much more influential power in software projects than most people in organizations. Studies of software projects show over two-thirds of them either are outright failures or deliver unsuccessfully (deadline slip, budget overruns, or low customer satisfaction). Many of the root causes point to improper decisions software architects made, or failures of follow-through on the right architectural decisions.

How can you become a responsible software architect who makes effective architectural decisions?

First, you have to be fully cognizant of your decision process, whether it is agile or ceremonial. You should NOT claim that an architectural decision has been made until the following two conditions are met:

  • A decision has been put in writing because architectural decisions are rarely trivial. They must be substantiated and traceable.
  • A decision has been communicated to the people who execute it, and the people who will be affected directly or indirectly. Communication is all about creating shared understanding.

Second, review your architectural decisions periodically. Examining the results of your decisions against expectations. Identify architectural decisions that remain valid and those that do not.

Third, enforce your architectural decisions. Many software projects get software architects involved only in the design phase, then they move to other projects or the consultation contract ends. How can they ensure that their deliberate architectural decisions have been implemented correctly? Their decisions will be at best good intentions unless they follow-through with them.

Finally, delegate some decision making to others who are experts in a problem domain. Many architects wrongly assume they have to make every architectural decision. Therefore, they position themselves as a know-it-all expert. In reality, there‘s no such thing as a universal technical genius. Architects have areas in which they are quite proficient, areas in which they are knowledgeable, and areas in which they are simply incompetent. Adept architects delegate decisions about domain problems in which they are not proficient.

'Coz sharing is caring
Categories
Software Architect

It Takes Diligence

An architect‘s job is often portrayed as an activity focused on ingenuity and problem solving. Ingenuity is a key trait of successful architects. However an equally important characterization of the activities of a successful architect is ‘diligence’. Diligence can manifest itself in many ways, but ultimately it is an exercise in perseverance and paying the right amount attention to each task and each architectural goal of the system.

Diligence goes hand in hand with the mundane. Successful architecture practices are in many ways mundane. Effective architects often follow mundane daily and weekly checklists to remind them of that which they already know academically, but fail to practice by habit. Without such mundane checklists and reminders architects can quickly fall into software time, in which no measurable progress is achieved because a lack of diligence allowed the architecture to meander and violate known academic principles. It is important to realize in these retrospectives of failed projects that in most cases it isn‘t incompetence that drove failure, but rather the lack of diligence and a sense of urgency.

Diligence also requires an architect to succeed at the deceptively simple task of making and keeping commitments. These commitments are often disparate and can encompass a wide range of constraints and expectations. Examples include:

  • Embracing the budget and time constraints of the customer
  • Performing all the work that makes the architect effective, not just the work the architect enjoys.
  • Commitment to the process/methodology
  • Accepting responsibility

Atul Gawande, in his terrific book ‘Better: A Surgeon‘s Notes on Performance‘ , speaks of diligence in the medical community:

“True success in medicine is not easy. It requires will, attention to detail, and creativity. But the lesson I took from India was that it is possible anywhere and by anyone. I can imagine few places with more difficult conditions. Yet astonishing success could be found … what I saw was: Better is possible. It does not take genius. It takes diligence. It takes moral clarity. It takes ingenuity. And above all, it takes a willingness to try.”

'Coz sharing is caring