Focusing on the importance of being proactive, this post is subtitled "There's No Crying in Software Architecture," adapting Tom Hank's great line, "There's no Crying in Baseball," from the 1992 film A League of Their Own (view clip).
To contribute in the most significant and effective ways, the Software Architect must relentlessly pursue proactive activities that influence good decision-making at all levels of the organization. They must aggressively maintain awareness of and focus on the many dimensions associated with the realization of the Business and IT Strategy and the delivery of supporting projects.
I've written about proactive opportunities before in Architect As Advocate of the Business and The Architect is Accountable! and thought we'd expound on the topic today with specific consideration of what it means to be proactive. First, let's review the definition of the word "proactive," which Barron's Dictionary of Business Terms defines like this:
"Having an orientation to the future, anticipating problems and taking affirmative steps to deal positively with them rather than reacting after a situation has already occurred."This definition seems to capture a couple of very important characteristics and responsibilities of the Software Architect: 1) orientation to the future, and 2) affirmative and positive action.
Building upon that definition, let's consider the perspective expressed in The 7 Habits of Highly Effective People. In this influential book, Stephen Covey identifies the quality of being proactive as the foundation of a framework of effectiveness. We can detect his view of proactivity in the following quote:
“We are responsible for our own lives... our behavior is a function of our decisions, not our conditions.” (Stephen Covey, 1990)Of course, Mr. Covey didn't happen upon a new concept in this book. It turns out that nearly 100 years earlier, George Bernard Shaw had something similar to say on the topic:
"People are always blaming their circumstances for what they are. I don't believe in circumstances. The people who get on in this world are the people who get up and look for the circumstances they want, and, if they can't find them, make them." (George Bernard Shaw, 1893)An essential premise can be distilled from these quotes, establishing a clear contrast between a proactive and a reactive frame of mind.
Proactive: We have the opportunity and responsibility to make choices that influence our circumstances and lead to results
Reactive: We are at the mercy of our circumstances
Stitching it all together, we can begin to see that a proactive Software Architect will leverage direct and indirect influence as appropriate to execute deliberate and positive steps that ensure today's activities and decisions are in support of the future orientation, applying positive energy that magnifies and enlarges influence and effectiveness.
To illustrate, let's consider a few examples.
- Business Strategy and Roadmap
Proactive: Recognize how evolving business needs such as a market shift or even a new strategic client might be leveraged to create new opportunity for the business. Develop visibility to the opportunity and help develop the business case.
- Reactive: Wait for the business to come up with an opportunity and apply energy only to those ideas they bring forth.
- Performance and Scalability Assessment
- Proactive: Contract with a third-party performance testing center (e.g., the IBM center in Waltham, MA) to validate product performance and scalability. Work with the test engineers to define and execute an appropriate test environment and suite of tests that take into account the full scope of the product's capabilities, architecture, anticipated volumes, etc.
- Reactive: Turn the product over to an agency to do the testing, treating that agency like a "black box".
- Cost Reduction
- Proactive: Determine the operational cost of existing platforms and balance against business needs and expectations. Develop a strategy for refactoring, consolidation, and replacement as appropriate.
- Reactive: Allow 100% of your energy to be applied to the development of new products and features, ignoring the mounting debt of inefficient capabilities and decaying architecture.
- Multi-Project Synergy
- Proactive: Maintain a holistic view of the enterprise, recognizing potential duplication in effort, competing needs, opportunities for common frameworks and infrastructure, etc.
- Reactive: In the name of "efficiency", operate multiple independent project teams with no awareness of similarities or opportunities to cooperate with other initiatives.
To close, let's go back to the subtitle, "There's No Crying in Software Architecture." As architects, we sign up for intense accountability for results - business results. It's our job to be proactive and help navigate occasionally murky waters. In this role, we must be sure not to deflect responsibility. When things aren't going right, we're to assume responsibility and help find the way to dry land.