Intro
It is not easy to become a software architect, being a software architect is like the holy grail for most of the software developers.
Maybe you only want to be a good software developer and just want to do development work, or you just want to be a system administrator and deal with system configurations and problem troubleshooting, that’s totally fine, but from my personal opinion, you should really push yourself to become a software architect or at least, have a software architect mind/background, it will help you become a good developer or a solid system administrator.
Warning
I guarantee you will enjoy the process of becoming an architect, but I also want to warn you: The process takes time, takes a lot of self-study and self-learning, sacrifice of your own personal time, continue to be self-disciplined, and you might not even see/feel the immediate result or benefit until months or even years later, but at the end, this delayed gratification will make you appreciate all your effort and time, and that’s feels pretty good. This is a huge commitment, but the rewarding is also very attractive.
I’d like to share my own story of how to become a good software architect in a series of blogs.
What does a software architect do?
Let’s take a look at some of the things that an software architect do:
- Understand the business line or logic well, since business drives requirements, requirement drives architect/design/technology stack/implementation and programming language and tech stacks are just tools, they serve business to make profit
- Translate business logic into system/technology requirements
- 4 + 1 views
- Logical view
- Process view
- Physical view
- Development view
- Scenarios - Design system components architecture
- Define design patterns
- Create system/architecture documentations and UML diagrams
- Sequence UML diagram
- Use case diagram
- Component diagram - Mastering one programming language
- Data structure
- Algorithm - Being the communication bridge between departments/teams
- Identify possible system bottlenecks
- Application/system testing and performance tuning
- etc…
Mind Map
I collected some key requirements from software architect job description, these job descriptions are from top tech companies such as Bytedance, Alibaba, Google, Amazon, ..etc. and made the following mind map about what’s required to be an software architecture and what are the job responsibilities. I hope you enjoy it.