I do, yes ... and I think that modern software architects should ideally write code too. This doesn't mean they need to be the best coders on a team, but my experience is that most good software architects are fairly decent coders.
I do think a good architect should be a good programmer. A good architect needs logical thinking and troubleshooting skills to be successful. However, the inverse is not always true. A good programmer will not necessarily make a good architect since other skills are needed to. Some of which involve talking to people.
I don't know about a system architect, but I do believe that a software and solution architects should have a background in programming - and keep up with what's new in the languages they're designing for; otherwise how will they know that their solutions will work?
I think it's best if they were a good programmer too. As an architect, I draw upon my knowledge and experience as a programmer when working with the developers implementing the things I've designed or help them design, and understanding good programming practices helps me see where things are headed.
Just my two cents,
SCJP, SCJD, SCEA 5 "Any sufficiently analyzed magic is indistinguishable from science!" Agatha Heterodyne (Girl Genius)
sharp shooter, and author
Joined: May 10, 2000
Burk Hufnagel wrote:I don't know about a system architect, but I do believe that a software and solution architects should have a background in programming - and keep up with what's new in the languages they're designing for; otherwise how will they know that their solutions will work?
That's my view too, and it's why architects do need some technology knowledge and experience.
Here's a question to everybody else ... given that the software development industry is moving so fast, how do you keep your technical skills up to date?
Simon Brown wrote:Here's a question to everybody else ... given that the software development industry is moving so fast, how do you keep your technical skills up to date?
The same way you get to Carnegie Hall: Practice, practice, practice! and Read, read, read! Social media like Twitter and G+ are helpful too although when you follow too many threads it starts to be like sipping from a firehose.
I learn what I need when I need. JIT learning. I keep track of the trends, but don't go into specifics of a technology/tool unless the need arises. After spending 17 years in the industry, I know I can pick things up "on the job". So, I don't worry about not learning things
Back in 2005, I was all into web development using Struts. we would roll our own controller, service layer, DAO layer. I started getting into bit of AJAX. EJB was rolling over people at that time, but I never bothered learning it. Then, I joined a search engine company, and this product was about shaving microseconds of response times. So, again it was Struts controllers that talked to our custom backedn search engine. I didn't learn any "new" technologies, except that I learnt how to build kick-ass, high performance, grid enabled software. By the time I came out of this company, the EJB cloud had already rolled over the industry, and Spring was the hottest thing and cloud computing was bubbling up. So, I went straight from Struts to Spring. Skipped the whole EJB crap that everyone else had to deal with
One tool that can help individuals and organizations navigate the technology landscape and prioritize focus and effort on learning new technologies is the Technology Radar: http://www.thoughtworks.com/radar
Paulo Rezende wrote:A goog civil engineer should be a good mason?
Analogies are only as good as the similarities between two things. I think there are more differences between Good Civil Engineer:Good Mason vs Good Software Architect:Good Programmer that make it less useful as an analogy.
A better one would be that of coach:player. There are many coaches who are really good because they have the added dimension of being able to play the game as well. My daughter's volleyball coach is like that and that's what makes her great as a coach. Going back to your CE:Mason analogy, though, I don't think that having hands-on experience in masonry would diminish ones ability to be a good Civil Engineer even if it may not necessarily be must-have experience either.
Instead of advocating for my analogy, in which one I really believe correct I'll answer the original question of the topic.
No, a good architect should not be a good progammer because an architect doesn't need a previous experience as a programmer. Being an architect is not the resuming of an professional experience as a developer.
Can a developer become an architect? Of course! But, in my option, it's the same of a mason becomes an enginner (back to my analogy!), it's a totally new world, new duties, new demands, new artefacts as result of the work, it's a new view over the software development process, is everything new.
Paulo Rezende wrote:No, a good architect should not be a good progammer because an architect doesn't need a previous experience as a programmer
Language differences and nuances aside, I think we're at a crossroads here and it simply boils down to a difference in perspective/opinion. The #sa4d book will resonate with people who think that architects will be better at their jobs if they also not only know *how* to code but also actually *do* coding. In my experience, this is absolutely true. Your mileage may vary. If you don't agree with that premise, then the book may be less useful for you.
Paulo Rezende wrote:No, a good architect should not be a good progammer because an architect doesn't need a previous experience as a programmer.
On the other hand, I find it difficult to trust the judgement of anyone who claims to be an "architect" yet doesn't have at least rudimentary "nuts and bolts" knowledge and experience with the technologies that are used in the systems they design. Cynical thoughts of "resume padding" would be my reaction.
The way I would phrase it s that a good architect who comes from a programming background should be a good programmer. Programming not the only way to grow into an architecture role. You could be a kick ass IT engineer who has loads of experience with working with OTS applications, and have a good understanding of how to interact with software development teams, and you can become a good architect. You could be an awesome DBA who has been supporting softwares built on top of the database that you have a good understanding of how software works. in both cases, maybe you can't do the code yourself and can;t review code, but you can interact with software developers and help them solve problems. You can come up with solutions that have worked somewhere else
To be a good architect, you need several soft skills. There are lot of avenues to grow those soft skills. You need to have a broad range of experience to gain those soft skills. You can;t just teach someone how to draw a bunch of diagrams and expect them to be an architect!