Developers and Architects
In this post, I’m listing some differences between software developers and software architects from three different perspectives:
About decision making
- An architect makes architecture decisions and defines design principles without imposing an specific technology. e.g. “We must use event-driven communication between services when possible” instead of “We must use Kafka for inter-process communication”.
- A developer must decide what specific technologies to use in order to meet architectural decisions and design principles defined by the architect. Of course, architect can propose to the dev team an specific technology with a pros/cons analysis.
- Both of them must expose their ideas to the rest of the team. Architect and developers must be in synchronization with each other to succeed.
About decisions compliance
- An architect must ensure developers follow architectural decisions to meet architectural characteristics (security, agility, scalability…)
- A developer must follow the architectural decisions and ensure programming conventions are met by the team (coding style, design patterns, unit testing…)
- Both of them must improve their interpersonal skills to deal with bad situations with workmates.
About learning
- An architect must focus on technical breadth rather than technical depth. It’s more valuable for an architect to be familiar with 6 different technologies and their pros/cons than to be an expert in one of them.
- A developer must focus on technical depth rather than technical breadth. It’s more valuable to be a master in a programming language than being familiar in 10 of them but not fluent in any. (Note I’m not saying you should not explore new languages, frameworks or whatever. Please, do it. But, first, be sure you master one or two of them.)
- Both of them must keep current with latest trends.