DEV Community

Discussion on: What should I know to be a software architect?

Collapse
 
yaser profile image
Yaser Al-Najjar • Edited

Software architect is a job title, meaning if you want to become one: start acting like one!

Someone already mentioned knowing the requirements and doing business related conversations but that's part of the software architect role.

There are many other important stuff as well:

  1. An end-to-end knowledge about building/testing/deploying systems.

  2. Given point #1, you will be the focal point in your team, so you will help the others with anything that comes up.
    By anything, I do mean it literally; it could be designing the database, or could be fixing a deployment pipeline, or even showing a frontend dev how to fix a UI bug.

  3. Knowing various programming languages, programming paradigms, design patterns, software design approaches (ddd, tdd, bdd... all kind of D's), and a handful of architectural styles and patterns.

  4. Practical knowledge of distributed systems and its related parts, like: networking, service oriented architecture, and caching.

  5. Willing to learn all the above on a daily basis!

I believe CS courses won't really help as much as learning from exceptional devs, some names that come up to my mind: Martin Fowler, Uncle Bob, Greg Young, and Udi Dahan.