I have the privilege of working with some really smart folks here in MSIT. One of those folks is Gabriel Morgan. Like Gabriel, I’m passionate about Architecture and what it means to be an Architect (well at least as I think of it, anyway). In my time here at The Big Show Gabriel and I have had many conversations about the role of the Architect.
In these conversations one of the ideas that Gabriel and I fervently agree upon (like true Architects we don’t agree on everything ;-) is the concept of Architecture as Leadership.
For those poor souls who have had the distinct misfortune of working with me this idea is nothing new – it is something I’ve espoused for years. At the risk of boring these readers, I want to publish some thoughts on this subject today.
NOTE – While I’m using the specific example of the Software Architect here, I would argue that the ideas are readily transferable to Solution, Enterprise, or any other kind of Architects as well.
Some History, and Hype, of the Software Architect
If one was to take a very simplistic view of the subject leadership (which I obviously am for the purposes of this post ;-), one could make an argument that leadership takes two primary forms – leadership via influence and leadership via authority. In gross terms the former type of leadership is epitomized in the concept of Sales (can I convince/influence you do to something), while the latter type of leadership is epitomized in the concept of Management (you have to do what I say because I’m your boss). The corporate world has traditionally seen Management as the route to leadership within organizations. In terms of software, this tradition has manifested as Developers having to choose between hitting a promotional glass ceiling as Individual Contributors (ICs) or going into management.
Those of us who’ve been in the industry for a while (more than a decade) readily acknowledge that this situation was suboptimal. Arguably, the development of senior level IC roles like Software Architect were an inevitable outgrowth of the realization that potentially brilliant technical leaders (e.g., super-talented Developers) were not necessarily going to be brilliant managerial leaders (e.g., folks that excel at the care and feeding of the peeps, deflecting political BS, managing budgets, etc), and that both roles were needed if a technical organization was to be successful.
OK, I would postulate that like so many things in the software/IT industry the rise of senior IC roles like Architect follow a lifecycle typified by the Gartner Hype Cycle. To my mind, the Hype Cycle explains why we’ve seen an explosion in the number of folks in the industry with some sort of Architect title (“They’ve got their super geeks, so I’ve gotta have mine!”) and it further explains the proliferation of Architect-related titles (“If I have a BI Architect build my Enterprise Data Warehouse it would have to be, by definition, better than an EDW built by a Sr. Systems Analyst!”).
Using the Hype Cycle as a conceptual framework I would argue that the industry is still closer to the “Trough of Disillusionment” than it is to the “Slope of Enlightenment” in terms of Software Architects. I would offer the following as proof of this argument (based on personal experience and anecdotes I’ve heard from folks I trust):
To be honest, even as an Architect I still identify with the first two bullet points above. As both as a Developer and as an Architect I’ve had the misfortune of working with other Architects that fit the mold described by these two bullet points. I also must confess that at one point in time (a long time ago, mind you) I was an Architect that fit the second bullet point’s mold – although I’ve since been reformed (honestly, I really have).
To again use the Hype Cycle as a framework, if the industry is going to climb the Slope of Enlightenment and reach the Plateau of Productivity then we as software architecture practitioners are going to have to start doing some things differently – namely focusing back on the basics.
At the risk of being painfully obvious, I’m going to offer that we as Software Architects need to focus on our most basic responsibility – to provide technical leadership to the teams we work with. As described above, the rise of the Software Architect role was a response to the need of having dedicated expertise in technical leadership. I won’t bother going into the myriad of contributing factors (e.g., feature explosion, increased architectural complexity, globalization of development, the Internet, etc) driving this need for dedicated technical leadership – those of us in the industry know it all to well.
What I propose is a deceptively simple concept. I have a hard time imagining a dedicated Software Architect saying, “No, Dave. I’m not a leader at all. I enjoy getting paid to make life miserable for the Developers, it’s what I do.” However, I would argue that by saying that a Software Architect is first and foremost a technical leader that there are a number of subtle, but profound, ramifications to this view of the Software Architect role.
The Software Architect as a Technical Leader
One of the first ramifications of this view is the framing of the primary responsibilities of the Software Architect as a technical leader. What I’m about to propose is common in some organizations, but is foreign in many others. However, my experience has been that the following four responsibilities are required to enable Software Architects to lift teams out of the Trough of Disillusionment and move them towards the Plateau of Productivity:
I think it is worthy of note that none of the primary responsibilities listed above include something like, “The Software Architect is responsible to know more about everything than anyone else on the team”. I tend to think of this as the second ramification of looking at a Software Architect as a technical leader – technical virtuosity is a necessary, but not sufficient, condition for being a Software Architect.
Technical virtuosity is obviously required, otherwise the Software Architect could never deliver on the second and third responsibilities in an informed and efficient manner. However, the scope of modern software delivery has gotten so complex that I would argue that it is unreasonable to expect the Software Architect to be an expert in all technical subject areas on every single project.
Therefore, the Software Architect needs skills in interpersonal communication and consensus building – classic leadership skills.
That last point didn’t really hit me until 4-5 years go – and once it did I started to have greater success as an Architect.
Since that time I’ve been constantly amazed at how many of the lessons of the “business world” with respect to leadership are germane to the work of the Software Architect. Take, for example, the concept of leadership as leverage.
Out in the corporate world there exists a school of thought that leadership is a point of leverage (for some interesting ideas on the subject, check out “Certain to Win“or “Good to Great”). In essence, an argument can be made that one hallmark of great leadership is the ability for an individual to align the thoughts, motivations, and actions of a group of people towards a common purpose – human leverage. I subscribe to this point of view. If one considers some of the classic examples of leadership (e.g., Alexander the Great, JFK, Winston Churchill) then the concept of leadership as leverage is pretty apparent. I’m convinced that great leaders employ, at a minimum, the following ideas when building leverage:
Oddly enough, these ideas for building leverage map very closely to the four responsibilities of successful Software Architects outlined above:
This line of thinking has lead me to the third ramification of looking at a Software Architect as a technical leader – Software Architects lead best when they are a point of leverage for the team.
Software Architects Should Focus on Leverage
I once worked with a MS CRM Architect that described the role of an Architect as a “force-multiplier” for the team. I was immediately taken with the term for two reasons:
Using this new term, the best Software Architects are obsessed with the amount of their force multiplication. In fact, in an ideal world this force multiplier could be calculated and Software Architects would be compensated based on this number (right now I imagine a legion of Developers clapping furiously in response to this idea ;-).
While all this high fa-lootin’ theory is intellectually satisfying (being an Architect, I do love the high fa-lootin’ ;-), I’m a delivery guy at heart.
As such, here’s a non-exhaustive list of practical ways for Software Architects to raise their force multiplier. I can personally attest that they all work, and Developers will end up respecting you – I swear!
Whoa!
That’s quite a bit of pontification. I would be highly interested in the thoughts of other Developers and Architects…