Microsoft's software portfolio is so large and diverse, however, that it's hard to imagine anyone who would be up to the task of architecting such a complex ecosystem. Certainly Ray Ozzie was as good a choice as any. The mastermind behind Lotus Notes, Ozzie has been a driving force in software since the early days of the PC. He was born the same year as Bill Gates and cut his teeth on computing at about the same time.
The worst habits of software architects
But Ozzie is no Gates. A Microsoft outsider, Ozzie lacks Gates' intimate understanding of the company's product line, its processes, and its organizational structure. He also lacks Gates' aggressive personality and hands-on management style, which arguably played an essential role in growing Microsoft into the empire it is today.
When Gates stepped down as CEO of Microsoft, it was easy to see the chief software architect title as a way for him to keep a hand on the company's reins while leaving the drudgery of dealing with Wall Street to Ballmer. With Ozzie in the role, however, it was a whole different kettle of fish. Lacking Gates' long history at the company and his dominating presence, it was easy for Ozzie to fall into the typical bad habits of software architects.
At their worst, architects are seen as the ivory-tower academics of software development. They create plans that they expect others to follow, but they don't actually lead -- which inevitably causes friction with business line managers. What's more, ambitious plans are often seen as unrealistic by hands-on coders, who resent the architect's lack of experience with the realities of the development process. And when project goals aren't met, the blame goes to the teams whose job it was to implement the plans, not the architect who dreamed them up to begin with.
As the disconnect between architecture and actual development widens, the overall impression of the software architect within the organization becomes that of someone who gets to act like a superstar developer but who doesn't have to confront any of the responsibilities, risks, challenges, and compromises that "real" developers face. Little wonder that recent reorganizations at Microsoft have seen Ozzie's pet projects, including Azure and Live Mesh, farmed off to veteran managers at other groups within the company.
Make room for architecture
But if Ozzie's role at Microsoft didn't sit well with other execs and managers, he doesn't deserve all of the blame. In a sense, he was never given a proper chance to begin with. Microsoft is an aggressive, competitive business culture, one that wasn't necessarily a good fit for Ozzie's temperament, according to insiders. What's more, by granting Ozzie the lofty chief software architect title before he had proven himself at the company, Gates all but ensured Ozzie would remain a perpetual outsider.
Maybe that's the real lesson to be learned here: Architecture can be an important part of effective software development, but only if it is seen as part of a collaborative process. If your business culture values competition over collaboration, placing a software architect in an artificial position at the top of the pyramid will only engender resistance and resentment among senior managers. That's a recipe for failure -- but blaming the software architect when it happens is letting the tail wag the dog.
This article, "Are software architects necessary?," originally appeared at InfoWorld.com. Read more of Neil McAllister's Fatal Exception blog and follow the latest news in programming at InfoWorld.com.