So who is a software architect?
A software architect is the person or persons on your team with skills, knowledge and experience to address the challenges an application will encounter before, during and after construction. This person may not have the architect title but we all know he or she has the best intentions of the development team, the business and the application in mind. This person has the knowledge and skills to take a project from an abstract set of business goals to reality. This person quite often can stand in for any role on the project from business analyst, project manager to developer. He or she is available to fill any gaps on the project, no matter what skill is needed. This person is committed to the success of the project no matter what curves, technical or otherwise are thrown at it. He or she is basically the swiss army knife of the project.
Software Architect Defined
Wikipedia defines a Software architect as:
“a computer programmer who makes high-level design choices and dictates technical standards, including software coding standards, tools, and platforms.”
Generally this is true but those of us who have occupied this role know it is much more than this.
Master Technologist & Collaborator
I think a more realistic description of the role is used by Rebecca Grinter in her article titled: Systems Architecture: Product Designing and Social Engineering. In the article she describes the architect as a not only a master technologist but a master collaborator responsible not only for designing the solution but making sure that the solution is accepted and supported by all groups in the organization that will build it and use it. She says that:
“architects work in ways that allow them to accomplish their dual mission of designing technically possible and organizationally feasible products. They bring people from all over the corporation in to consult on their technical knowledge, and at the same time learn about other groups’ priorities and schedules. The architects present their work to different groups to ensure that the solutions are attractive to build, buy, and sell. Finally, they continually look outside the company to align their work with standards agencies and competitors. All of this is necessary design work, without it, solutions might work, but could not be built or sold.”
Designing large software solutions is a highly complex task requiring architects to not only be technical experts but also to be effective communicators, listeners and perhaps most important collaborators. Effective architects recognize that the delivery of a software solution does not begin and end with design. It begins with an abstract idea that must be first be heard, then understood and finally synthesized into an architecture through communication and collaboration across the organization. The architect must be able to coordinate with each group of stakeholders effectively, based on their needs and goals. Stakeholders include developers, marketing, business, project management, quality assurance, change management, executive and customers, many of which will have competing goals. The role of the architect is to collaboratively work with all groups involved to agree on a design and facilitate construction of the solution. If that sounds daunting that’s because it is.