Friday, March 14, 2008

What is a Chief Architect (at AdvancedMD)?

It is public knowledge that AdvancedMD Software was recently acquired by Francisco Partners, a large private equity fund. This was an extremely important and promising event for our company, with deep implications for our management, employees, product, and customers.

One of the biggest impacts of this change is a recognition that we need to "grow up" as a company. While our products and services are quite mature, our corporate structure has evolved relatively slowly, in a reactive way, since we started out with 18 employees back in 2002.

In that spirit, we've examined my responsibilities as VP of Development, and have come to the conclusion that I was doing two jobs: Chief Architect and Head of Engineering. As I've come to realize, my combined strategic responsibilities (Chief Architect) and my logistical responsibilities (Head of Engineering) were overwhelming, and they prevented me from filling either post effectively.

So, as of a couple of weeks ago, I assumed the role of Chief Architect, and my good buddy and former Manager of Development, Sheridan Richey, was promoted to Director of Engineering (over all of our software and SQA engineers, documentation, and project managers).

So what does this mean? In the research that I've done since I heard that a title like "Chief Architect" even existed (hey, I've never worked for a technology company larger than 80 people until now), I've found that "Chief Architect" can mean a lot of things. In some companies (like AdvancedMD), they report directly to the CEO. In others, they report to the Custodian. Okay, that may be a bit of an exaggeration.

But the bottom line is that the Chief Architect is primarily responsible for directing the technology strategy of the company, while the Head of Engineering runs the day-to-day operations.

I have to believe that Ray Ozzie's job is dramatically different from what mine will be. Can you see Ray sitting down with a SQL Server engineer to review her code? But it follows that all of Microsoft's executives have different responsibilities than their counterparts at AdvancedMD.

If you really want to make your head spin, try reading the plethora of descriptions of a (Chief) Architect on this website by Bredemeyer Consulting (which I just googled).

So, what does the Chief Architect at AdvancedMD do?

1. Primary owner of technical architecture

This includes the underpinnings and overall architecture of our core applications, the tools used to administer and provision our software and services, and the physical infrastructure that supports them.

Of course, my title is "Chief Architect", not "THE Architect". The word "Chief" suggests that there are other architects involved in the process, and, of course, that's true. We have over a dozen senior-level software engineers in our Engineering group that are fully capable of architecting software solutions. But when strategic (NOT tactical) architectural decisions need to be made, the buck has to stop somewhere, and that's where I come in.

2. Bridge between Product Management and Engineering

Product Management does market research and decides what should be built. Engineering builds it. But do Product Management and Engineering speak the same language?

In the simplest of cases (I always use an online shopping cart for my example, but feel free to choose your own), there's very little for the business side of the business to explain to the engineering side. "Here's a screenshot, and here's what the buttons should do." In a ridiculously complex vertical like healthcare, the questions that arise from seemingly simple enhancement requests are many and varied.

We use Scrum at AdvancedMD, so features come from Product Management in the form of User Stories. Those user stories should theoretically describe the desired end-user experience in gorey detail. But what happens when technical (or architectural) challenges and questions arise during the implementation of those user stories? When code elegance butts heads with time to market, who works with Product Management to make the decision?

In Scrum terms, it seems clear that the Chief Architect and the product analysts who report to me are either Product Owners or (more likely) proxies to the Product Owners on the Product Management team, depending on where the Product Owner role comes to rest.

3. Industry standards and initiatives

Healthcare is the ultimate producer of acronyms. I understand that CMS still uses an old Cray supercomputer to generate the immense volume of acronyms required to run their operations. All of those acronyms represent attempts (pathetic as they may be) to establish standards that may one day reduce the cost of healthcare.

Medicare isn't the only organization creating new standards, and many of them have a direct impact on our lives at AdvancedMD and, more importantly, on the lives of our customers.

So, one of the roles of Chief Architect at AdvancedMD is to stay on top of emerging standards and standards-related initiatives like IHE. Eventually, it will probably make sense to paticipate in the creation of those standards, to protect our interests.

4. Champion of new technologies

How could AdvancedMD benefit from (relatively) new technologies like XAML and Silverlight? When should we migrate from SQL Server 2005 to SQL Server 2008? What will be the impact of IE8 be on our browser-based applications.

The exploration of new tools, platforms, and other technologies is obviously of interest to all software engineers, not just the Chief Architect. But determining how new stuff can and should impact AdvancedMD strategically falls into my bucket.

The rest of the processes of creating software now reside in our Engineering group, whose leadership is in Sheridan's capable hands.

As Sheridan and I discussed how to separate our responsibilities today, he suggested that the Chief Architect is primarily "upward and outward facing", while the Head of Engineering is primarily "downward and inward facing":

  • Upward facing: Dealing with requirements coming down from Product Management, and strategic priorities coming down from upper management.
  • Outward facing: Working with partners and other outside entities to understand and influence emerging technologies and standards.
  • Downward facing: Directing the day-to-day efforts of the Engineering teams.
  • Inward facing: Coordinating with other operational teams within AdvancedMD.

So, that's my best explanation of the Chief Architect role at AdvancedMD. I'm sure that it will evolve over time, especially as the rest of AdvancedMD continues to expand and adjust to accommodate our growth.