Noapes's Blog

Stay hungry, Stay foolish



Image Url: Kongfuofarchitect

Origin Url: The Path to Becoming a Software Architect

Have you ever wondered what career opportunities a developer has? What directions are open, beyond what horizons to grow. And most importantly, where are developers beyond the age of 45? Is there a developer among your friends who is over 45? I know several developers beyond this age, and many of them are hardcore programmers who even saw punch cards back in the day. 你是否想过对于开发人员来说存在哪些机会?哪些方向是足够开放的,可以超过视野快速成长.最重要的是,一个年过45的程序员会在哪里了?你的开发朋友中有没有年过45的了?我知道有个开发者已经超过了这个年纪,他们中的大多数是见过穿孔卡片计算机资深的程序员.

There are several career paths a developer might take:

  • The first and obvious one is to grow in the area in which you are working. If you are a junior developer, then become to middle, then senior and lead roles.
  • Transition to another technology stack. A significant number of developers moved into the mobile area when iOS and Android OS gained ground.
  • Grow into a manager role. As a developer, the hugest staffing issue I saw was the shortage of competent managers. Smart managers are expensive, hence they are scarce. If the manager has a technical background, that will allow him to be on the same wavelength with the developers.
  • Become a software architect. This direction will be considered in this series of articles.
  • Get out of IT. Sometimes this happens. It is never too late to do what you like to do.
  • 第一步也是最明显的一步在你当前工作的领域成长.如果你是一个初级开发者,那么接下来努力成为中级开发者,高级开发者和领导角色.
  • 转换到另外一种技术.举个例子,OS和Android开始普及以后,大量的开发人员进入到移动领域开发.
  • 努力成为经理.作为一个开发者,我觉得最大的人员配备问题就是缺少一个能干的经理.能干的经理薪水很高,因此他们很稀缺.如果经理具有开发背景,那么他们很容易和开发者产生共鸣.
  • 成为一个软件架构师.这个方向正是这一系列文章将要谈到的.
  • 走出IT.这也是会发生的,做你喜欢做的事情永远都不会太晚.

Article series

  1. The Path to Becoming a Software Architect
  2. Stakeholders in Software Architecture
  3. Types of Software Architects
  4. Quality attributes in Software Architecture
  5. Documentation in Software Architecture
  6. Certificates in Software Architecture
  7. Books in Software Architecture
  8. System Design Cheat Sheet

Yes, This Was My Path

In the past eight years, I have worked with Java EE, then moved to iOS, and became a team lead. I managed various developer teams, including Android, and Web stacks. Created the architecture of the network layer for several services developed by the company, with sockets and REST API. I became acquainted with the managerial role and the prospect of growing in this direction while in the position of team lead for over two years. In my next role, my goal is to grow as a software architect.

在过去的八年中,我在工作中一直使用Java EE, 然后转向iOS, 然后成为团队的领导者.我管理过许多开发团队,包括安卓和Web技术.使用socketsREST API为公司服务构建过网络层架构.在担任团队领导者的两年时间里,我熟悉了管理角色和这个方向的前景.我的下一个目标角色是成为一名软件架构师.

For most developers, the function of the architect on the project is often unclear, so in this series of articles, I will try to find the answers to these related questions. Who is an architect, what is the scope of responsibilities, and how to grow in this direction and outline an action plan for myself and beginners wanting to move along this path?


Who Can Benefit from This?

This series of articles will help you if you belong to one of the following categories:


  • IT developer or engineer. You are still growing as a developer, but you are looking ahead and planning your career. Even if the goals are initially vague, a person who consciously sets strategic goals will reach them much quicker than a person who does not plan where she is heading.

  • IT开发者或者工程师 你是一个正在成长的开发者,但是你是一个向前看的人,打算规划你的事业.即使这个目标最初是模糊的,但是有意识的设置战略目标的人会比那些没有计划前行的人更快达到他们的目的.

  • Team leader, lead software engineer. You are at the highest stage of the software development discipline. To grow further, you have a choice to either learn one more stack of technologies, pursue a career outside software engineering, or to become a software architect.

  • 团队领导者,核心软件工程师 你正处于软件开发专业的顶端.为了长久发展,你需要需学习更多的技术栈或者学习软件工程之外的知识或者成为一名软件架构师.

  • Software architect. You recently took this position, or have been working in this field for a long time. Perhaps one of the main qualities of such a specialist is the understanding that there are always areas that a person does not know and that the learning process is continuous.

  • 软件架构师 你刚刚达到这个位置,或者你已经在这个领域干了很长时间了.这种类型的专家可能具备一个特征是总能理解别人无法理解的领域也知道学习的过程是持续渐进的.

  • IT manager. Although you are a manager, you understand perfectly well that you should at least approximately understand what your subordinates or colleagues are doing. The acute problem of management is the technical incompetence of the manager in the field in which he or she is managing.

  • IT 经理 虽然你已经在经理的位置了,但是你能很好的理解你最好需要了解你的下属或者同事正在做的工作这个事实.管理的最严重的问题是管理者在其管理的领域技术能力不足.

Who is an Architect?

Before moving on to more specific questions, it is necessary to define the software architect role and responsibilities.

A software architect is a software expert who makes high-level design choices and dictates technical standards, including software coding standards, tools, and platforms. The leading expert is referred to as the chief architect. (Wikipedia, The Free Encyclopedia, s.v. “Software architect”,

Like most high-level positions, there are no clear criteria that define this role. However, it is possible to identify several responsibilities and qualities that contribute to the career of the architect.

First, let’s consider the characteristics of the architect:

  • Communicability. Having talked with many software architects, I heard that it is one of the essential characteristics of this specialist. During the working day, they have to speak with customers in the language of business, managers of all levels, business analysts, and developers. If you have a natural charisma and you know how to convince people, then this will be a huge plus, as it is crucial to explain your actions correctly. Architects are laconic, eloquent, and competent speakers. The software architects with whom I spoke have highly developed skills in communication and persuasion. Another reason why this characteristic is most important is that the architect in this role participates in most discussion making processes, and often compromises must be reached that is acceptable and beneficial for all involved parties.

  • Broad and deep technical knowledge. It should be obvious since one cannot become a software architect with a medical background. Besides, the architect usually has expertise in several technological stacks at a decent level and should have a good understanding of a few other ones. The software architect should also be prepared to compose a large number of technical documentation, reports, and diagrams.

  • Responsibility. You should understand that architect decisions are usually the most expensive. Therefore, a person in this position should take the most responsible approach to his work and the decisions made. If the developer’s error costs a couple of days of work of one person, then the architect’s mistake can cost person-years on complex projects!

  • Stress resistance. You will have to make decisions because in this role, you will be asked to do so, and you will need a response. You will be working with different people from different areas, and you will have to deal with rapidly changing demands or even with changing business environments. Therefore, it is necessary to be ready for stress and to look for some ways to escape negative emotions. Work is always more pleasant when it brings pleasure. So if you choose this role only for the money, then think again.

  • Management skills. This includes both organizational and leadership skills. The ability to lead a team, which may be distributed and composed of very different specialists, is essential.

  • Analytic skills. Even if a specialist has a broad erudition in technology, he has tried many things on his own or participated in projects of various types. It does not guarantee that he can easily change the style of thinking to an architect. One of the most valuable tasks is the ability to represent an abstract problem in the form of some finite real object of the system, which developers are already evaluating, designing, and developing. Excellent communication skills are essential to represent the abstraction in the form of the final system to the members of the team and the customer. It will be necessary to communicate with both business and development, which is still to be done.

If we talk about the responsibilities of the architect, then here is the perfect example from the 19th century about bridge construction. At that time, the tests of the newly constructed bridge were the following: the key group of engineers, architects and workers stood under the bridge while the first vehicles were on it. Thus, they staked their lives upon the construction and the strength of the structure. So if there is a question — what is the responsibility of the software architect on the project? The answer is, he is responsible for everything.

If you give up loud and beautiful phrases, then the architect’s work includes:

  • Identifying the stakeholders on the project.

  • Identifying business requirements and requirements of the stakeholders on the project.

  • Designing the entire system based on the received requirements.

  • Choosing the system architecture and each component of this system at a high level.

  • Choosing the technologies for the implementation of each component and connections between the parts.

  • Architectural review. Yes, yes, it exists.

  • Code-review.

  • Writing project documentation and support it.

  • Creating unified development standards in the company.

  • Controlling the architecture during the next iteration of the system release.

It is only a subset of the software architect’s responsibilities. The most important responsibility is full technical support of the project from the moment of inception, through product release, to the development of enhancements. And supporting the next releases. It will be necessary to switch a lot between different tasks during the working day.

How to Become a Software Architect?

To begin with, it is requisite to define milestone goals that lead to achieving your strategic goal of becoming a software architect. For me, such goals for the next six months are:

  • Understand and try several technological stacks. My current knowledge is concentrated in the field of iOS. It is necessary to try Android, several server languages, to start python, and refresh Java EE skills. The architect is a full-stack developer, so it is essential to have a broad technical knowledge.

  • Reading literature. It is required to determine the most valuable books and articles that will help to grow in this direction. Usually, the most effective way to find such literature is to ask other professionals in this field for their recommendation. In one of the future articles, I plan to give you such a list of literature.

  • Find a mentor. It is desirable to find a software architect at your current place of employment. It is always easier to get experience from a trained specialist than to start considering a particular area from scratch. It is requisite to be prepared to ask the right questions from your mentor.

  • Study courses/obtain certificates. There are many courses and certifications available, but only a few are worth their money, and the higher level courses cost a lot of money. I have attended the architectural courses of Luxoft (, which have proven to be a worthy investment. It is crucial that the lecturer of the course be a professional in this field and be able to answer questions. As for certificates, before starting, it is best to understand whether there are authoritative certification systems for architects and whether it is worthwhile obtaining the certification. This point I will discuss in a future article of this series.

One of the essential parts is a clear and stable plan review. What has been done, what should be reviewed, and where to accelerate or which goal to remove as useless.

Check Your Readiness Level

If you are interested in this introductory article from the series on how to become a software architect, or if you suddenly have thoughts to try this path, it is worth making sure that you want it.

Firstly, people are afraid of everything new. A new position, new kind of stress, as opposed to the comfortable status quo. Of course, the choice is not always unambiguous and depends on how much you are willing to change something in your life. At the same time, it can depend not only on you but also on the family, your financial commitments, parents, and other factors.

Secondly, this path takes several years. The process of becoming a software architect does not happen overnight. As a team lead, I realized what to do and how to deal with stress only a year after I was appointed to an official position. At the same time, six months before that, I performed it unofficially. One software architect I know said that he understood what his responsibilities are 18 months after he was promoted to this role. Such intervals of time are reasonable, and you need to know whether you are ready to move in this direction. Even if you do not have a stable plan available, it is better to start taking small steps that move you ahead, rather than remaining in the same place. Standing in the same place in IT is a synonym for stagnation and personal fetters in life.

Recommended Books