Wednesday, November 17, 2004

What are Software Architects?

In recent times I have met many technical resources with the titles such as Software Architect, System Architect, Lead Architect and/or Enterprise Architect. Some of the architects that I met had no more than 3 years of IT experience. I began to ask the question – what is a Software Architect? What sort of skills should they have? The first thought that I had was that a Software Architect was synonymous with software delivery WISDOM.
Software delivery WISDOM is the key to my definition of an architect. It is the sum total of an architect. Thus in order to earn the right to be an architect one has to acquire wisdom. Delivery is important since these wise people can balance and trade off issues between delivery of solutions and technical perfection. They understand the place of IT within the broader context of solutions. They understand that IT does not exist for the sake of IT but rather as an enabler to solving real world problems.
How does one develop this skill? The question has to be asked of a person that does not have this skill – Is he still an architect? I THINK NOT. WISDOM has to be a prerequisite to have the title of architect. In addition to WISDOM, there are a few core essential skills that are essential to call oneself a Software Architect.
The next logical question is – how does one acquire WISDOM. One acquires this by working on and delivering a number and variety of large solutions in multiple domains and in different capacities. The minimum time period that I would attach to this is 7 years of experience. This experience must come from working in multiple domains on various sized systems. Also important, is experience in working with a range of different technologies. Responsibility for successful delivery is a key component. More importantly, developing insight into the factors that contribute to the failure of a project is essential.
Architects must have experience in other areas of the software lifecycle in addition to development i.e. deployment, operational areas, maintenance and decommissioning. The other areas provide feedback on the decisions taken early in the lifecycle of the software. The architect needs to experience the conveniences and pains of earlier decisions in order to develop architectural character. Having to live with the consequences one’s architectural decisions develops a respect and cautiousness for such key decisions.
Experience gained by using various technologies provides an architect with knowledge and understanding of various technologies. Like all things in this world each technology has its strengths and weaknesses, and it is important that architects understand the variants and subtle nuances of each. This understanding cannot be achieved at a theoretical level and has to be experienced in a hands on fashion. Once this understanding has been developed, it enables an architect to harness technology appropriately for complex solutions that he needs to deliver. If not the old adage that if you have a hammer all in the world looks like a nail always proves itself true.
Architects must also be leaders. Any sufficiently large software project requires a team of people to successfully deliver it. This team needs a leader. The architect provides this leadership. He directs all the effort towards a successful conclusion. If the architect is clear about the road ahead, then the team is able to work successfully on that road. The architect is an inspiration and leads by example. They are respected for their technical wisdom. The leader can always see the forest from the trees, providing the correct focus at the correct times.
Architects must also understand the business world in order to align his technical solutions to the relevant business problem. The architect will use this knowledge to balance technical perfection for business agility. He would be able to make the appropriate trade offs and prioritization easily.
Architects must have project management skills so that they can plan their solution implementations better. This skill provides the architect the ability to manage their delivery and teams on a day to day basis.
Architects are technical decision makers and decisions are dependent on one’s analysis and design abilities. This is the foundation on which architects are built. If this is not one of their character strengths and then unfortunately I do not think they would ever be good architects.
Architects can only produce the extraordinary and provide the technical edge over competitor solutions with creativeness and innovation. Architects need to develop their creativeness and outside the box thinking to become truly great architects. They would be able to use old technology in new ways thus extend the usefulness and competitiveness of systems. Architects are constantly seeking better and more elegant solutions and do not suffer from the NOT INVENTED HERE SYNDROME.
Architects need good communication skills. They need good listening skills and look towards their development teams to provide feedback and ideas on improving and enhancing their designs. They must have good oral and written communication skills so that their ideas can be expressed eloquently and influentially. In the architects world there is no right and wrong but rather more or less appropriate solutions.
The skills of software architects can only be learnt through mentorship and coaching by a number of other architects. So if you are still keen to develop into a world class software architect, your first step is to find a great software architect and get on his/her team and learn as much as you can.

1 comment:

Anonymous said...

An excellent article! so true , in Canada, we have 88 "enterprise IT architects" by title....to me I would say probably about 15 of them can call themselves Architects.....We have Infrastrucutre architects , solution architects even Desktop Architects.....and lastly Data Architects who are in the lowest levels of Architects heaven knows why? Data is an important asset to the Bank....especially security, encryption, data modeling, data integration, data placement, Data Integrity.......hopefully one of the days an executive would wakeup and shout "We Need Data Architects" before the systems come crumbling down like misplacing a customer Identifier....or having redundnat data - non normalized in varous silos of DBMS....and no metadata documentation..
Excellent Article! I always said that IT Architects of today at our bank are glorified Systems Analysts mainly with Application knowledge from a technical viewpoint and not business related, Unfortunatley the Business ANalysts are also regarded on a lewer level than outr glorified systems analysts....oneday they will relaize that the business drives the systems built and not the other way around....cheers....fellow from Mooketsi - Canada.