markdown guide
 

A software architect is usually software developer/engineer with a lot of experience. They are in charge of designing software starting from the highest abstraction levels. They decide the design of the software, technologies used, tools, platforms, coding standards, etc. The design and understand how everything in the project/software will fit together so others on the team can implement their design.

 

They are responsible for matching the โ€œqualitiesโ€ of the software to what the business needs. Ex. Ops cost, dev cost, maintainability, reliability, performance, and many others. You canโ€™t have them all, and different architectural patterns make different trades. If you ask business these questions directly, they will say all of them are important. So you have to interview the stake holders to properly frame the discussion. There are certain qualities the business is willing to spend money (dev labor) to ensure. And others that ultimately wonโ€™t affect the bottom line.

The architect finds a combination of strategies that fits. Ex. Stateful or stateless, micro or mono, request or event driven, and many more. (And different business capabilities may warrant different quality combinations.) In an ongoing role, they assimilate new services in a way that preserves the desired qualities. And of course, the business changes focus on what qualities are important over time.

Classic DEV Post from Jul 17

My 2019 Remote Office Tour ๐Ÿš€

Victor Homem Heck profile image