What does Software architects do?

2017, Aug 11

I'm not a Software Architect (yet). However, I worked directly with architects. In this post I summarize what I saw architects do in my years of experience.

iam-the-architect.png

  • Software architects evangelize for architecture changes and desired outcome. Trying to get the buy-in of the engineers, product managers and other stakeholders working on the project with the minimal pushbacks in some cases.
  • They write code themselves, often codereview and pair-programming sessions as well.
  • Architects mentor and help others grow both professionally and personally.
  • Teachers by nature.
  • Learners, keeping up with the technology changes even though its very hard and time-consuming.
  • Leading software teams. They empower people and ask for contributions in architecture decisions. However, in some cases such decisions would need more experience, thus, it's his job to take these hard decisions even when not all the parties agree.
  • Strategic thinker and tactical executioner. Very good at writing lists, you can't develop a strategy without knowing what needs to be done.
  • Making decisions that can survive time and commercial innovation. it's the fate of software architects is to have one architectural decision after another that might contradict with changes in commercial software industry.
  • Good communicators. Architects communicate with documents, verbally and with code.
  • Always evaluating the architecture and that it works. As in, Software keep achieving required tasks.
  • Ask questions to stakeholders, to find hidden requirements or non-functional requirements.
  • Measure (things)! Good engineers track and measure impact of their work on users of the system. Good architects do that as well and beyond.

workload.png

I like that definition from the book "Clean Architecture" by Robert C. Martin

A software architect is a programmer; and continues to be a programmer. Never fall for the lie that suggests that software architects pull back from code to focus on higher-level issues. They do not! Software architects are the best programmers, and they continue to take programming tasks, while they also guide the rest of the team toward a design that maximizes productivity. Software architects may not write as much code as other programmers do, but they continue to engage in programming tasks. They do this because they cannot do their jobs properly if they are not experiencing the problems that they are creating for the rest of the programmers.