I had a long conversation with a colleague the other day concerning the state of software architecture. I asked the question "are software systems these days architected?" The reason for asking is that it appears to me that more and more of the challenges that faced architects (throughput, concurrent users, security, etc.) have been tackled by features of the platforms and components that we build software systems upon. Don't get me wrong, there are still some software systems that suffer from some really bad architecture decisions, but some of the examples if have seen are decisions any good developer should have flagged.
Take your average IBM WebSphere shop. It is my assertion that it is fairly easy to find developers that have written software for some fairly complex systems on top of the IBM WebSphere middleware stack. And I would also assume that there are some fairly well established best practices that by now are mainstream and common knowledge. (For the record, I am not one with this type of experience, so I am speculating here).
So how much architecture is necessary these days when it comes to building a transactional web application on WebSphere app server? I would say that the understanding the different flavors and deployment options you have with WebSphere is the architecture skill that is necessary. Understanding the non-functional requirements of a proposed system and choosing the right middleware/hardware deployment is the needed skill? IBM offers server sizing for all types of situations. Is there a need for an architect here?
If you move down a level of abstraction, creating the correct EJBs can sometimes be tricky and I would assume you could make some bad decisions here. But I would also expect a developer seasoned in creating EJBs would be able to navigate this area and make good decisions. Again, is architecture needed here?
Jason Bloomberg wrote a blog entry last year. His assertion was that no one is doing enterprise architecture because most enterprise architectures are created after-the-fact. You wouldn't hire an architect after a bridge was built to document its architecture, but most enterprise architectures are created this way. Granted the goal is to ultimate create a to-be architecture and steps to get there, but the initial architecture was not architected, it was grown.
What is the state of any of the architecture professions these days? How has it evolved?