Hello everyone! My name is Margarita, I have been working in IT for more than 10 years and currently I am interested in the topic of Application Architect.
In the article, I collected all the recommendations, so this material will be useful for both novice programmers and experienced specialists who are thinking about how to further develop their career.
I am currently interested in Application Architect, so I have a long way to go on the career ladder. But in this article I will share my experience of how to grow from a trainee engineer to an architect.
First, I suggest considering what kind of position "architect" is, what duties it entails.
An architect is a technical expert who makes high-level product decisions and ensures that the team implements them correctly. The architect makes the decisions themselves, guided by business requirements, non-functional requirements and constraints. With business requirements, I think everything is clear. Non-functional requirements are, for example, the ability of the application to withstand the load when many users access it at the same time, security (protection against attacks), etc. The architect should extract the above requirements and restrictions from the customers. This means that he communicates directly with customers and has to find the key to communicating with different people, often with complex personalities.
How to grow up to be an architect
Now we can focus on the key points that will help on the way to the desired position.
Versatile development of hard skills and pet-project
As a Web UI engineer, I immediately set myself the goal of becoming an expert in my field and at the same time I was interested in server development. In my opinion, it is the versatile development of an engineer that is important. If the project does not provide an opportunity to learn a new programming language or a new direction (for example, you write JavaScript for the browser, but you want to write JavaScript for the server), I recommend coming up with an interesting home project (pet project) and working on it in your spare time.
The project must be complete: if it is a website, then it must have a domain and be on the public Internet, if it is a mobile application, then it must be listed in the App Store or Play Market. This will make it possible to understand the full development cycle and close the required area. I like pet projects, so I brought one charity project into production myself, having learned an interesting set of technologies thanks to this. Then this work gave me material for public presentations - that's a bonus :) We will talk about the importance of presentations later.
Continuous learning and self-improvement
The main advice: never stop and continue to constantly develop and learn. Any methods are suitable: books, trainings, conferences. I will especially note the conferences. I started visiting them in 2013 and continue to this day. Conferences allow you to experience trendy things, meet experts in the field. I recommend not focusing on specific events (for example, only JavaScript events or only C#), but visiting various forums.
I continue to actively study because there are still many areas where I would like to gain experience and strengthen my competence. An architect should keep his finger on the pulse of technologies and constantly analyze what is appropriate to use in projects and what is not.
The ability to speak and convey one's opinion
I think public speaking is the best way to develop these skills. I started preparing my first presentations back in 2013, dissecting interesting topics and telling about it at separate meetings to my team members. Then there were performances at internal events within the company. And later external presentations.
The skills I have gained during presentations give me more confidence both in negotiations with clients and in communication with the team
The ability to take on new challenges and overcome them with dignity
Not being afraid of challenges is an important skill for an architect. In my career, I always try to take on projects of any complexity, because this is the fastest way to learn and improve. If you are offered to become a project leader, you must agree. Even if the project seems difficult, or you have heard feedback that there are many problems. It will be difficult, but you have to learn to overcome obstacles.
It is incredibly difficult to understand that your task now is not only to write high-quality code, but also to organize the work of the team, talk to people, and listen to them. Not everything worked out, I made mistakes. Sometimes he was too demanding of his colleagues. Now I see that this was the cause of additional stress on the project, and I try to be more understanding of the problems of specialists because life is different and we all make mistakes.
Development of soft skills and leadership qualities
Soft skills (English soft skills) are a set of non-specialized, super-professional skills that are responsible for successful participation in the work process, high productivity and, unlike specialized skills, are not related to a specific field.
Eastern Kentucky University has compiled a list of soft skills for business leaders. These are communication, kindness, flexibility, integrity, interpersonal skills, etc, positive attitude, professionalism, responsibility, teamwork, work ethics.
Programmers often neglect the development of these skills. And in vain - it is the problems with soft skills that often become an obstacle on the way from a line engineer to a leader. So my advice is this: if you want to grow into a leader, pay attention to soft skills at the start of your career: it should be pleasant to work with you in the team (both colleagues and clients), and the project manager should be able to rely on you.
It is not for nothing that it is recommended to have leadership experience for the position of an architect. That is, an engineer must work for a certain time as a technical leader and only then can he move into architecture.
Conclusion
So a good architect is a leader with strong technical knowledge, rich experience and excellent soft skills. The future of the project/company depends on the successful work of the architect because he must extract from the customers/owners the necessary information for building the system and prove to them that the decisions made are correct. And also to ensure that the development team properly implements these decisions.
This is what inspires me in my work: the opportunity to realize myself in difficult conditions and help make the business of customers successful or strengthen success.