Next: see part 3 here
Previous: see part 1 here
An idea struck me on my commute home today so I decided to create a new installment on what was originally intended to be something of a series of posts anyway.
I've done hundreds of technical interviews in the past few years, and I've picked up on a bit of a disturbing theme. Many, many software developer candidates like to use titles such as "Senior Software Architect" on their resume, even if they have only a few years of experience.
More often than not, however, these impressive-sounding titles fall short of the reality, and the candidate struggles with even basic things such as string operations, inheritance, or I/O. This is often paired with a dismissal of being something they haven't done in a while.
Well, what else have you been doing to earn your senior software architect title? UML diagrams and WSDL? If you can't perform the basic operations, how is anyone going to trust your ability to design a high-quality, scalable and high-performance software application?
The idea that struck me on the way home today was that calling yourself a software architect is analagous to calling yourself a chef. Ordinary software developers are the cooks. (It actually takes more than calling yourself one to be a true Chef de Cuisine, but I'm keeping this analogy simple).
If you were to apply for a job as executive chef of a restaurant, you'd be expected to be responsible for creating a menu of elegant and tasty dishes suited to the clientele of that restaurant. But ultimately you would be in the kitchen with everyone else, cooking. How would it look during your interview if you admitted you hadn't set foot in a kitchen in a while, or that you've forgotten how to separate an egg?
If you want to work your way up from a cook and become the executive chef of a restaurant, you need to be rock solid on your cooking fundamentals. You become so good at these basic operations that doing them is no longer at the forefront of your mind while you are cooking. You can go beyond the basics and begin to create better dishes, try new things, apply more complicated cooking techniques. The other cooks in the kitchen begin to look to you for inspiration and guidance in their own cooking.
Similarly as a software developer, if you want to become an architect, you should be rock solid at writing code. It's not a task that is now beneath you from your exalted post as architect, but rather a task that you have mastered and used as the foundation for a higher level set of skills. The other developers on your team look to you for software design inspiration and guidance because of the trust you have built in the high quality of the software you write, not because you call yourself an architect.
