In the mind of an architect
There are not many job titles in this line of business if you start sorting out the fake ones. We have our project managers and developers. Apart from that most positions in the development team are developers with different set of skills. A tester is a developer with testing skills. An art director is a developer with a pen and paper, and a user experience expert is also a wierd kind of developer. A developer is simply someone with a craft that will result in a system. All those in the development team are craftsmen at their line of work and also developers (except the project manager who is only shouting for status every 15 minutes, but doesn't really contribute to the actual crafting - no hard feelings, we love you anyway).
What bugs me right now are the architects, because I don't know what their special skillset are. What do they know that we don't? Nothing really, because an architect in the IT industry is probably
- A promoted developer
- Self-proclaimed title
Most common is the promoted developer that receives the title architect for long and faithful service to the company. He will continue to work with the same tasks as before, but with a new title and higher salary. This is also a way to get the very attractive developers to stay in the company.
The worst are the self proclaimed architects. They become architects between two jobs because they think they've been working with software development long enough and have the experience required for an architect. Often they like to boast about their title and tell others about bad design desicions they made, even if they don't have a clue.
It has become like this because none really know what an architect is or is supposed to be. They don't know what tasks are given to an architect and for most people in the IT industry, "architect" is just a synonym for "senior developer".
It is not like the nurse or the surgeon. I don't suppose that anyone would promote a nurse to a surgeon because of long service, or that a nurse would proclaim to be a surgeon when she applies for a new job. This is because there is a distinct set of knowledge a surgeon has that the nurse must learn to enable advancement. In the same way I would claim that there is a certain amount of knowledge a developer must face to call themselves "architect".
This is what I think defines an architect
- An expert in design patterns
- Master of many languages
- Broad architectual mindset
- Full insight in all current methodologies
- In the forefront of new technology
- Master of quality
I also think that an architect should
- Write a blog about his work
- Read a technical book every month
- Learn a new language every year
- Hold seminars where he share knowledge
- Go to conferences regularly
The difference between an architect and a senior developer is that an architect is not doing active software development in one project. He is assigned to many projects, to help out with his expertise and to guide the developers through hard architectual design issues. He is there to enforce high quality and to guide the development team in new technologies and methodologies.
To the company, the architect is the person that makes hard projects safe, and eliminates risk. He is the one that find the best solution to the real customer problem, both technically and in terms of functionality. The architect is the link between the customer and the high risk, high stakes to make it comfortable, and he is a comfort to the developers.
This is what an architect is in my mind, and I would be very delighted to meet one.
(* As a side note, I view myself as a junior developer with high sense of quality. I lack alot of experience and I learn new things every day. I know that my collegues sometimes see me as a mr KnowItAll, but I hope that they can forgive my enthusiasm and burning heart to share every piece of knowledge that I have, and just accept me for what I am - a coding ninja nerd)