So, you decide to apply for a job, or maybe a headhunter calls you with an exciting opportunity, so you apply, or whatever. You end up across the desk or phone line from me to discuss working on the team.
Your resume says you are an “Architect”. Nice lofty title, that one (especially when its granted after 1-2 years of actual development work – I really love that one). Lets hope you have the knowledge, skills and experience to back it up.
But for fun, waste my time. When I ask you about the SOLID principles, just tell me you’ve never heard of them. I definitely want to recommend we hire an architect who hasn’t heard about those – no sense wasting brain storage on such a trivial thing – its only 5 letter, how important can it be?
Tell me you’re not really familiar with design patterns. When I list some off, tell me about how you use the factory pattern everywhere, then don’t really give me a definition of it. That’s OK – you’re an architect. You don’t need to know anything about the details of anything – you’re a big picture person.
When I ask you about IDisposable and leaks, tell me about how its important to close your SQL connections. Great. I’m glad you know that. But what about those insidious event leaks? That crazy singleton class that somebody didn’t write properly that holds references to all kinds of disposed objects. How can you call yourself an architect if you haven’t seen crazy edge cases like that?
When asked about ORMs, just tell me you’ve never heard of them. When I spell out what one is, and use NHibernate as an example, keep pleading ignorance.
When asked about the methodology used in your shop – are you using waterfall, agile, or something different/in between, tell me you don’t know what those words mean. An architect doesn’t need to bog themselves down with learning about development methodologies and project management practices.
And the clincher: when I ask you what the last technical book you read was, ponder it for a few minutes, then tell me “some O’Reilly book about C# 3.0”. Good guess – I’m sure such a book exists without even looking. And when I ask what you learned from it, tell me “nothing”. I don’t need you to know anything in depth about current topics. I don’t want you to try and stay current. That’s just wasting time you could be hacking out code.
I’m not saying you need to know everything about these topics. I don’t even expect you to know off the top of your head about all 5 letters of SOLID and the exact meanings. But I expect that you will have some idea what the ideas are. I expect that you have some exposure to them.
I expect an architect to be a software development renaissance person. If I ask a question about a topic that’s a little outside of the mainstream, I expect that you know SOMETHING about it. I don’t expect everyone to know everything, but I expect that you are trying to constantly learn new things and stay as current as possible. I expect an architect to pick the best tools and techniques for the job – not just what they know from their last project.
Am I expecting too much?