I got this question about software architects. Basically the question is are software architects still relevant today. I’ve gotten a couple of people that have asked this so I figured I’d talk about the role of the software architect and where I see it.
A lot of people are talking about how software architects are—why software architects are employed in this new age of agile development in cloud computing. So a lot of teams, development teams basically use an Agile process where they don’t necessarily have roles or everyone wears different hats so where does the software architect play into this so that’s a good question. I think that it’s kind of weird because this is one of the failings of kind of Scrum and Agile methodology is that we tend to—I like the iterative development process, I like the idea of taking something and building on it and really the whole Agile idea or only building what’s necessary and talking to the customer and getting feedback and iterating. But a lot of times we need architecture, we need to plan upfront as well. I think we’re going to get to a point where we eventually can sort of take both these ideas and find the middle ground. I always talk about this idea and it applies especially in software development. It’s like this pendulum, right?
The pendulum swings one way and it swings the other way. We have lots of different pendulums where we go from one direction like for example everything was desktop apps then we went to the web, then we went to mobile apps, and then now we’re trying to make the web look like mobile apps or make the web look like desktop apps. Things go back and forth, technology does. I think the same thing happens with this—is going to happen with this whole idea of kind of the waterfall methodology where we’re designing everything and planning everything and engineering everything upfront whereas on the Agile Scum side we’re kind of swung all the way the other way and we’re like, “No, we don’t need architects. We don’t need plans. We’re just going to go and build the software.” There are merits to both of these things but every time that this pendulum swings back and forth it also swings forward, right? It’s three dimensional so it’s going forward and closer. We’re actually making process as we go from extreme to extreme. I think that’s what’s going to happen here.
The role of a software architect
Right now the role of a software architect is sort of weird in these Agile teams because you can’t really have that authoritative role. Different peoepl have to assume that. I do think that software architects are relevant though and that we’re going to see more and more of this. I think what we’re going to see is probably teams where they have sort of an architecture type of team, especially in bigger organizations that kind of set the pace for the rest of the company and the software project being worked on. I think that role is still important because when you think about it it’s—all developers should know how to do software architecture to some degree, but it’s a very still specialized and custom role. You have to understand more than just writing code and writing algorithms to be able to do software architecture and a lot of that comes from experience. You can’t just take one person on the team that has not experience and doesn’t know architecture and an experienced architect who has been doing this for a long time and have them have the same kind of power or rights or voting rights in the project. You’ve got to be able to somehow take that software architect’s experience and role and make that be useful to the team. Otherwise you end up with sloppy architectures that aren’t thought out ahead of time. I think this is a really good question. I don’t have a perfect answer for this actually at this point, right? Right now I can’t figure out where to put a software architect on a Scrum team or an Agile team except to put them over it and kind of violate the rules of that. Like I said, I don’t think we have a working system right now that actually is optimal. I think we’re going to get there eventually. For now if you have plans of being a software architect I think it’s a totally fine way to go. You have to realize though that what is not going to be acceptable going forward is being the kind of, what do they call it, the white tower architect where you basically can’t code but you just design the system. You’re going to be expected to be able to code as well.
It’s more now that you would be specializing in architecture but you can still do the other functions. We’re becoming more so that software developers have to have a larger baseline of skills. They have to be able to do some testing and QA and understand that they have to be able to do some architecture and they have to be able to code. You could choose—I think what I would envision is seeing that people have different skills in different areas. Maybe if you’re in QA you have—the testing skills are kind of higher. If you’re just doing programmer then that skill is higher. If you’re doing the architecture that skill is higher but you have all 3 of those skills. Yeah, I think software architects are still relevant but we’ll see what happens in the future. All I know is that we’re not going to build software without some kind of architecture so that role is going to be required and I know that the skills required to have good software architecture are skills that come from experience. They don’t just come by random chance. They have to be practiced and developed over time and not everyone has those skills. Yeah, I hope that answers your question. Like I said, I don’t have an absolute answer for this. I can’t really tell you if you should specialize in being a software architect or if that even makes sense, but the role has definitely changed and it will change in the future. Anyway, thanks for that question. That was a good question for all of you that have asked that question.