Software Architect Roadmap

Alaa' attya
4 min readApr 17, 2018

--

In general software architect is like the architect in real-life. He’s responsible for making high-level design decisions. One of the main responsibilities of an architect is keeping everyone on the same page without everyone needing to understand or even know about the big picture because let’s face it, sometimes that picture is just too big to worry about for any single engineer.

Objective 🚩

The objective of this document is giving an overview about the skills required by software engineers to level up and become a software architect. Still there’s no ideal skills required to be gained, but this is just a roadmap to be followed to highlight the main skills to be gained.

There’s no standard roadmap or specific methodology to follow to become an architect. Being a good architect is getting achieved by applying and implementing more than reading.

Let’s first define the 3 categories of software architects

Solutions architect [very detailed architect]

Solution architect is mainly the one responsible for translating requirements into code. Sometimes we can call him the “project development team lead” for a specific project. He’s responsible for the following:

  • Guiding the development team through the implementation process in every technical details.
  • Making sure that the developed solution meets the designed architecture.
  • Making sure that the developed solution meets the functional requirements.
  • Participate in choosing the right design patterns for solving problems.

Solution architect would be guided by the “Enterprise architect”.

Application architect

Application architect is the one responsible for the following:

  • Choosing the technologies that will be used to implement the application. He’ll be
  • Making sure that the team is meeting the standard of the technology used.
  • Responsible for choosing and cooperate in developing packages/frameworks that will be used by the team.
  • Reliability and scalability of the application.
  • Maintaining/refining the development life cycle of the application.

Sometimes they choose one of the development team to be the application architect.

Enterprise architect [highly abstracted architect]

Enterprise architect is the very highly abstracted architect responsible for the following:

  • Designing the high level organizational development process.
  • Designing UML that will be used by application/solution architects.
  • Should be engaged more with the business mission of the company and the IT strategy.
  • Raising the skills of the development team and maintaining their knowledge.

Below is a broadway roadmap that you can follow to start being a software architect.

  1. Start by sharpening your software engineering foundation skills
  2. Get hands on the most famous design patterns. At this step you should practice it in your day to day join. Start using these design patterns you did learn to solve your problems while coding.
  3. Learn TDD basics. Try to create a mini project that uses TDD patterns. By applying TDD you’ll learn how to write more clean testable code.
  4. Read more open-source projects. At this step you’ll can start reading the code of your favourite farmework or even the code of your most used packages.
  5. Try to learn some refactoring patterns. You can start checking your old projects. Check the code-smells, bad design and try to refactor it. You can also try to write unit test for your old projects, and for sure you’ll find lots of untestable code that needs refactoring.
  6. Start contributing to some open-source projects. You can start picking an open-source project and check the issue tab and try to fix it. You can even start writing more unit tests and improve the code coverage. You can also start applying some engineering improvements.
  7. Now you should join a team that really care about software engineering (not to mention Tajawal :wink:). Always remember architecture is being learnt by doing. You need to work at least under one or two talented architecture to guide you.
  8. You need to gain some trust from the people around to let you guide/lead design and implementation at least for one project.
  9. Now you need to learn about some architectural patterns like micorservices, Domain driven design, layered architecture (multitier architecture), client/server architecture, service oriented architecture,…
  10. You need to learn some communication patterns like message stream processing, event sourcing, remote procedure call (RPC), Enterprise service bus,…
  11. Now you’re an architect that lead some projects but you need to learn some diagrams to show your team your suggested architecture. You should start learning how to do UML, Data flow diagrams, Interaction diagrams, ERD, …

You can check the diagram blow it summarizes the above mentioned roadmap.

For contribution you can check the following github repo https://github.com/AlaaAttya/software-architect-roadmap

References

--

--

Alaa' attya

Software engineer, #coding tweaker, Web Apps killer, techie fan. #PHP is my mother tongue, Gopher, Staff software engineer @deliveryherocom