Before you actually start reading, I must warn you - my opinions, expressed in this post are quite contrary to what you’ll most likely see in some companies (especially consulting services ones). It’s on you what you’re gonna do with that - accept their way or deny it (like I did).
Very. Important. Lesson. About Architecture.
First, some statements:
Statement #1: Technical Architecture IS evolving. To remain up-to-date, you need to learn all the time.
Statement #2: You learn particular technology in ONLY ONE WAY - by using it.
Statement #3: ”If you want to be an architect, you better be the best in the team.”
In other words - when you start getting “content-free”, you’re getting USELESS as an architect. Technical Architecture IS evolving. Today we have a palette of new options that were not available few months ago - some of them make a HUGE difference and not considering them is handicapping yourself. You won’t learn all the pros and cons by memorizing Gartner reports - you have to ACTUALLY PUT YOUR HANDS on product.
What does it mean for people who shape career paths?
Experienced technical architect HAS to keep coding, even if he’s Manager or a Senior Manager (I personally know one Partner, who never stopped coding) - it doesn’t mean he should do the same work other programmers do. Good architect should always be responsible for PERSONALLY creating the foundation of application architecture, preparing working Proofs of Concept and most critical / advanced components of project products. THIS is architect’s responsibility. And this is what architects do worldwide (like in typical software houses) - they prove their value with their skill, they make things work in a way no-one else is able to.
One common mistake made on almost every project in consulting companies: "Coding is just coding - nothing really special. Smart student can do it. Creating code is something so low, that consultant shouldn’t downsize himself to do such thing."
It’s so, so wrong. Whether we like it or not, on our IT projects we introduce and deploy pieces of software - shaped and suited for our clients’ sophisticated needs. We have to make sure we actually make something BETTER that anything any average student can do. Products we make HAVE TO be maintainable, scalable, secure, efficient, reliable, etc. Today, technology is so advanced, that with proper skills and perfectly chosen tools, you can create something very valuable in a very short time, but not everyone can do that. There’s a huge difference between product made with bunch of students in easiest (no-brainer) way and product developed by skilled, experienced engineers based on professional architecture design. It’s like comparing Yugo and Lamborghini.
Another common mistake: "I’m a manager, let me remain high-level. Details are irrelevant on my level of career."
If you don’t have control, who does? Projects keep failing, because of mistakes made on the low level. Improper communication pattern may cause huge performance issues. Wrong data design can boost actual database sizing. Incorrect tools / technologies may even make your project unable to complete. We’re consultants, we’re expensive, because we ADD VALUE. We’re expected to ADD HIGH VALUE for high price. As a Manager you should drive people, show them the correct path, validate their work by utilizing your experience - do you rest assured when you leave application architecture in hands of fresh out-of-college analysts?
From my personal experience:
Like I’ve already written, in last few weeks I did some coding in MVC3. To be honest, I already considered myself skilled in this technology (I used MVC2 for some time before, I’ve read 1 or 2 books about MVC as well). I was sure I’m fully capable in that area. Three weeks of raw coding brought me down straight on the ground level. There were so many limitations I wasn’t aware of and I had to learn them all “by-doing”. Yes, it’s not possible to be an expert in everything and we sometimes make assumptions we can’t keep. But I realized, that with my current knowledge I’d give different advices when asked about web client technologies in .NET than I’d do 3 weeks ago. That’s how critical it is TO BE UP-TO-DATE.
Inspiriation for this post:
Check this link (A-MUST-SEE) - http://www.subbu.org/blog/2012/02/architect-overrated