There is a feeling that this is something that is done initially and then does not change.

The program is quite easy to write and without much knowledge in architecture. The question is rather what will happen over time: without attention to architecture, the development of new features will practically stop due to a significant number of errors.

In general, architecture is the satisfaction of contradictory conditions. For example, there is a team (or it is easy to hire) that knows the language 1. At the same time, the specifics of the application are such that it would be good to use language 2. What should I choose? Just a question for the software architect, and his work.

In general, it is extremely important for an architect to have a “lookout”: most possible solutions should come instantly, and for each of them there should be some experience in order to understand their features. And the job is to choose and coordinate many of these choices among themselves.

This is a great similarity with the architects of buildings. At the same time, it is clear that even in such an old industry as construction, incompetent people are often found in fairly responsible roles (architect). Although there is more than enough knowledge in the industry. What can we say about the much younger field of software development.

The main difference with building architects is that software development conditionally never ends, which means that architecture constantly needs to be adjusted to new requirements and circumstances. Often a little, rarely dramatically. At the same time, the absence of these “few” rather quickly accumulates into real development problems.

Answer: almost constant refactoring, but at the same time fast (does not take much time), because it is small at a time.