Galin Iliev's blog

Software Architecture & Development

Architect or developer?

I recently came across good article The role of the Software Architect by Fabrice Marguerie and I have some comments I would like to share. There was an paragraph that says ( about comparing architects with developers ):
Michael Platt wrote: "Architects are a lot slower in getting a solution, especially if the problem is simple!". Probably we could add that "Architects are much likely to come up with complex and costly solutions, especially if the problem is simple!".

I am not quite sure this is true. Building software solution is not much different than building construction (or building a car) - the main principles are same:
  1. understand business needs
  2. create it durable (and usable)
  3. give time and price estimations (for implementation and use)
  4. try to understand future changes and integrations (or easy repairable)
I wont discuss how this is done but let's say it is quite difficult to let this out from the stakeholders (point 1 and 4).

Getting above things done is much different in software for number of reasons but mainly (according my opinion)
because software industry is much younger and technologies are changing ( and constantly lowering development cost and time).

But let's back to paragraph above: Why Architects should create much complex solutions!? Based on their experience they would try to guess future needs and cover them. This is the only explanation I have... But ( in opinion again ) I think customer/stakeholders should known main decisions taken regarding solution built for them. In this case they will be told all main assumptions and constraints. Knowing these ( as well as how important it is represented by time and money :) ) they will closely involved in defining goals and scope.

I agree that architects, based on their experience, would notice much more details and would have much more questions to stakeholders. But this doesn't make solution more complex or expensive. This makes goals much clearer and allows setting good solution architecture as well as avoids changes in later stages.

Indeed, an architect can have to write lines of code (at least to create prototypes or mock-ups), but also has to get his hands dirty with code to validate the quality of what is produced or resolve a particularly technically difficult situation.

About this paragraph I absolutely agree :) Definitely the architects should be able understand and influence what 's done by developers and even could be able to participate in first stages of development.  But  not too close because  pure developers won't have the chance to take design decisions on certain levels of solution and would be obstacle to for them in gaining valuable experience.

Thus make me think about my career :) Since very first days I was having to deal with clients, to get their needs and build appropriate solutions. According my knowledge in Bulgaria most of senior devs fulfill these activities. I am calling them senior devs because we are involved closely in development, team lead, solution design and, of course, matching clients' needs (and managing their expectations)

So what are we - Architects or Developers?! By being the person who gets the project, and make it happens, are we developers because we are highly involved in implementation/code phase or we are architects because we do much more things beside implementation?

What is your opinion on this?

I highly recommend reading the article - The role of the Software Architect by Fabrice Marguerie