3

Master Plan for becoming a Software Architect

 2 years ago
source link: https://azeynalli1990.medium.com/master-plan-for-becoming-a-software-architect-be7ba13f0999
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Master Plan for becoming a Software Architect

Photo by Danist Soh on Unsplash

Software Architects are senior level actors in software development team. It takes time and experience to become the one. The skills and knowledge that you need to accumulate are cross-functional. Besides having challenges first of all in technical sphere, this position also demands from architects to have a well-established social skills. Before starting to look at master plan for becoming a software architect, let us have a glance at typical types of software architects:

  • Solution Architect/Software Architect— low-level architect that is usually previous or active senior software engineer. He/She is in charge of technical design and architecture of a product with link to business people. Often leads developers.
  • Enterprise Architect — high-level architect that has overall “Big Picture” of a product with less information in details. This position mostly appears in very big complicated software products even sometimes just right after CTO.
  • Domain Architect — this is a popular form of software architects that are seen in multiple companies. The purpose of this position is to be an architect of specific use case, tech stack. For Example: cloud architects are responsible for a given cloud supplier. Data Architects are in charge of database operations, design, coordinations. Mobile Architects are taking care of mobile version of a software product. This counting can be very long…
  • Functional Architect —this type of architects are mainly in charge of business side, being less informed about technical world. Mostly this people are experienced business analysts that design and lead business logic of a software product.

We can extend this list further, since each company might have different name for a specific position. The roles and responsibilities of above given software architecture positions can vary from company to company but essence is the same. Take a look at following graph to have a better understanding in which relation different architect roles stand in respect to technical/business skills and knowledge.

1*ABWRww4SSn3nD3pdDcAFpQ.jpeg?q=20
master-plan-for-becoming-a-software-architect-be7ba13f0999
Business versus Technical relation graph

Master Plan:

One thing should be till now crystal clear: Software Architects are Super Senior Developers (usually…) except those who really come from business background. I tried to list different topic areas out, in which software architects should be comfortable:

1.Data Structures and Algorithms —the very basic fundamentals of programming should be no problem for Software Architects. DTs such as Arrays, Queues, Stacks, LinkedLists, different types of Trees, Graphs should not only be familiar to a Software Architect, but he/she also should be able to recognise right moment where to use which DT. Well established Software Architect should know different algorithmic techniques like Searching, Sorting, Recursion, Dynamic Programming etc. In daily life, no architect writes for example “Merge Sort” algorithm from scratch, or discovers a new data structure. But knowing basics help them to make a right technical decision in especially pull request reviews.

1*iCxbqFAOCJv1by9N5MoswA.png?q=20
master-plan-for-becoming-a-software-architect-be7ba13f0999
Introduction to Algorithms

Bonus: Introduction To Algorithms is the perfect allrounder book to master DTs and Algos.

2.Tech Stack — whether it is backend or frontend, Software Architect must know currently used tech stack very well. Learning syntax of a specific programming language is the easiest think. But gaining experience is what it takes time. Different libraries and frameworks that software product bases are also valuable assets to know.

1*t_q4UlOs_u4uqCV3YaMpiw.png?q=20
master-plan-for-becoming-a-software-architect-be7ba13f0999
Clean Code

3.Clean Coding — getting a software system to work is not the ultimate goal what Software Architect targets.Every time Software Architect makes a code review first questions that come to his/her mind are: 1. Can I make this code more performant? Can I make this code to take up less memory? Do clean code standards are applied correctly? Can I make use of different OOP techniques? Bonus: Clean Code will definitely help you improve your refactoring skills.

4.OOP — Object Oriented Programming offers great possibilities to make software system more flexible, effective and readable. Experienced Software Architects are using those techniques regularly. (if tech stack suitable…)

1*35AmH4gEo_QNFaokmjnWjQ.png?q=20
master-plan-for-becoming-a-software-architect-be7ba13f0999
Design Patterns

5. Software Design Patterns — speaking of OOP, we should not forget the importance of different Design Patterns that where firstly gathered and introduced by GoF. Knowing these Design Patterns will for sure help you make your software system better use of object oriented design. Bonus: take a look at this book for more information.

1*X0eyhA9HunyPoWCtTqajaA.png?q=20
master-plan-for-becoming-a-software-architect-be7ba13f0999
Clean Architecture

Bonus: following principles can be acquired from R.C.Martins famous book: Clean Architecture.

6. S.O.L.I.D. Principles — these component principles are fundamental techniques that need to be taken into account in software component design. Experienced Software Architect will quickly recognise violations in code, if he/she mastered these principles.

7. Cohesion/Coupling Principles — Principles like REP, CRP, ADP etc. are vital principles for a Software Architect especially when constructing, bundling plugins together/apart. So these techniques copes with more high-level design.

1*vCj4RuptHcv-1rmgQEwVKA.png?q=20
master-plan-for-becoming-a-software-architect-be7ba13f0999
Software Architecture in Practice

8. System Design — There are plenty of Software Architecture patterns like: Master-Slave, Client-Server, Microservices, Model-View-Controller, Unidirectional Architecture depending on backend or frontend projects. Of course it is impossible to know all of them. But depending on a project, Software Architect should be master of underlying design. The very basics starting point is Domain Driven Design. Bonus: take a look at this book for more theory.

9. Documentation — this is a vital point in Software Architects daily work. Drawing different UML Diagrams, ARC42 documentation is inevitable part of this position. There are plenty of tools such as:

  • draw.io — free and easy-to-use tool
  • plantUml — plugin for IDEs like Eclipse, Intellij. Very useful and my favourite tool, drawing through scripting.
  • yEd — handy tool, available as a desktop app.
  • MS Visio — rich functionalities, but not Free!

10. Certificates —There not much certification alternatives for Software Architects that are globally renown but nevertheless, there is the International Software Architecture Qualification Board (iSAQB®) that offers the Certified Professional for Software Architecture (CPSA®) certification scheme. CPSA® certifications are globally recognised.

So becoming a Software Architect takes time and effort, as you can see from above list. But it is pretty doable :).


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK