Being a software architect involves much more than just knowing technology. Aside from being an excellent developer, you also have to be a leader.
It is expected of you to:
- Analyze technology, industry and market trends and keep current with those latest trends.
- Analyze current technology environment and recommend solutions for improvement.
- Ensure compliance with the architecture
- Have exposure to multiple and diverse technologies, platforms and environments
- Possess exceptional interpersonal skills, including teamwork, facilitation and negotiation
- Define architecture and design principles to guide technology decisions for the enterprise
- Understand the political climate of the enterprise and be able to navigate the politics.
Main aspects of this role are:
- leadership and communication
- technical knowledge
- business domain knowledge
- methodology and strategy
Leadership and Communication
- communication (effectively communicate ideas, concepts, issues and solutions to stakeholders)
- collaboration (get stakeholders involved in the architecture process and solicit ideas and feedback early and often)
- clarity (articulate the architecture solution in clear and concise terms as appropriate to each stakeholder)
- “Business is constantly changing to meet demands of the marketplace” -> Agility, Maintainability
- “Due the new regulatory requirements, it is imperative that we complete end-of- day processing in time” -> Performance, Scalability
- “We need faster time to market to remain competitive” -> Agility, Maintainability
- “Our plan is to engage heavily in mergers and acquisitions in the next three years “-> Flexibility, Scalability, Integrations.
- “We have a very tight timeframe and budget for this project” -> feasibility
Triangle of knowledge
- at the top: stuff you know (technical depth)
- second level: stuff you know you don’t know (technical breadth)
- third level: stuff you do not know you don’t know
Focus on the second level.
- golden hammer antipattern - one platform to rule them all
- overview multiple platforms to solve the problem
Business domain knowledge
It is important that an architect understand the business.
- communicate better with the business
- better understand business goals, issues and trends
- gain trust by speaking the business language
- design the system to better handle the future changes
- better determine the correct architecture pattern
Methodology and strategy
Once you know where to go, how do you get there?
Be aware of many different methodologies. You can influence on the business to choose right methodology
Scanario 1. Do not choose Waterfall Model
- incomplete requirements
- you expect a lot of change
- tight budget and timeframe
Scenario 2. Do not choose Scrum or agile
- large and complex project
- multiple remote teams
- integrated maintenance
Scenario 3. Hybrid
- try to create a hybrid to strike the right balance
Regardless of what you do, as an architect you have to make it work!
- 97 Things Every Software Architect Should Know
- A Practical Guide to Enterprise Architecture
- Software Architecture in Practice 3rd Edition