Main problems on the project
- Unscalable, difficult to maintain product with a large codebase and confusing architecture.
- Irregular deliveries.
- Toxicity and a tense atmosphere in the team.
- Management processes were not aligned.
The customer was going to expand the client base and move to cooperation with larger companies, but the product developed by his team reached a critical amount of technical debt. It is extremely difficult to scale up a system with a large number of functions and modules, since it is impossible to control its stability, if no automated testing is applied. Attempts to make changes and develop the product lead to release delays and bugs that arose at the production stage, which negatively affected the customer’s reputation. Development and delivery was challenging and stressful for everyone involved. The situation was further complicated by the fact that the company was managed by a few co-owners having different points of view regarding product development and the strategy for overcoming the crisis on the project.
On this project, Dzmitry provided consulting on several axes. The situation required the elaboration of technical difficulties, improvement of processes, establishment of a constructive and effective communication between the co-owners of the company, and psychological situation stabilization. For the effective implementation of improvements, it was important to gain the trust and assistance of the founders and the team.
Having started consultations with personal communication with the customer, Dzmitry developed work with the company in several directions
Dzmitry acted as a mediator – an independent party promoting a consensus among the product owners with different points of view. The owners were aware of the need to improve processes, but the options they proposed did not help eliminate the source of the problem. Each of them was an experienced specialist uncompromisingly defending their point of view, so it was very difficult for them to achieve a common vision and jointly choose a management strategy.
Dzmitry’s high level of empathy played a significant role in establishing trust. Initially, the cooperation between him and the founders had a lot in common: both parties had experience in managing their own IT company, investing and launching a high-tech commercial product, as well as using services of a third-party consultant. The cumulative background in these areas allowed Dzmitry to clearly define what fears and doubts each owner experienced. Understanding their pains and fears, he set up the founders for long, productive work explaining why it is impossible to stabilize the situation on the project within 1-2 months. It was important for him to show that the team lacks a culture of working with technical debt, that there were a lot of technical problems accumulated on the project.
Another important task was the involvement of a commercial project manager in the peculiarities of software development processes who did not have knowledge and experience in this area. It was necessary not only to explain the benefits of implementing engineering practices for business, but also to interpret complex engineering concepts and approaches in simple language, as well as constantly remind why certain improvements could not be implemented quickly. Dzmitry gave real examples from the practice of his company, and told about similar problems on the project that he had to face. At all stages of improvement, he immersed the owner in the technical nuances of the product and in the current IT processes. Ultimately, after a year from the moment of the first communication, the commercial director of the customer company was well versed in the concepts of software development and could independently initiate improvements on the project (for example, increase the level of code coverage with automated tests).
In the process of personal consultations with Dzmitry, the business owners realized the need to implement engineering practices and work with the technical debt, began to engage more deeply with the IT side of the project and immerse themselves in the development process. If initially the commercial director could not raise the topic of technical debt when communicating with other founders, now the owners jointly and openly discussed the strategy of working on it.
To achieve a common opinion, Dzmitry initiated complete honesty and transparency in the communication between the founders: open feedback, notifying other owners of any decisions made regarding the project (by email and through messengers).
The amount of the technical debt made it critically difficult to deal with it consistently throughout each sprint. At first, it was necessary to earn the trust of the team and, with small iterative changes, demonstrate the possibility of working through the debt even in the conditions when developers are constantly engaged in commercial tasks.
Patience and perseverance were the most important success factors at this stage of consultation. At the beginning of cooperation, Dzmitry explained in detail to the founders and the team the need to work with the technical debt, then gradually initiated improvements. Keeping the high priority of the commercial work, the engineers advanced each day in the task of eliminating the technical debt (1 hour per day). This approach made it possible not to lose focus on commercially important deliveries, but at the same time to consistently make progress in working on the accumulated technical debt.
This strategy led to the fact that engineers began to demonstrate technological leadership. The founders and the team saw that the improvements they initiated did not pose a threat to them, but, on the contrary, brought tangible benefits. In the process of improvements, the following was worked out:
In agreement with the business owners, it was decided to strengthen the role of engineers in the project, to increase the degree of the team’s self-organization. For this purpose, the best approaches of Scrum methodology were used. Daily stand-ups increased the synchronization level of the geographically distributed team. A demo of the new functionality for the entire team helped to achieve a common understanding of current statuses on the project. Misunderstandings and problems were promptly resolved at regular retrospectives. The topic of the importance of a realistic approach to development was constantly raised: the team had to be honest in estimating tasks, assessing their strength. The opinions of all project participants were heard, the product owners began to take into account and handle suggestions and comments of the engineers. A systematic transfer of knowledge within the team was established – the practice of regular lectures and meetups on technological or domain expertise was established. All this helped to improve the psychological climate and overcome learned helplessness of the engineers. They became more independent and were not afraid to show the initiative.
A healthy psychological atmosphere was established in the team, the project participants became more sincere and began to trust each other. Thanks to the constant initiation of communication, the practice of general discussion of topical problems and issues was introduced. When all project participants were honest and did not hide the difficulties that arose, it became possible to find the most optimal solutions, to avoid a large number of risks and conflicts.
In the process of consulting, Dzmitry applied a triad of his experience.
Dzmitry’s vision was not the point of view of only an engineer dealing with technical debt or an entrepreneur focused solely on the business component of the project. Dzmitry used all his experience, analyzed the situation from different angles and concentrated on the deep essence of the situation that had arisen (such problems as lack of leadership and learned helplessness among engineers, refusal to invest in the technical debt).
Since the situation on the project was really difficult, one of the main goals that Dzmitry initially focused on was not to harm. It was important not to worsen the relationship between the founders. Therefore, he carefully analyzed the psychological aspects of the project and delicately, avoiding getting into trouble, established the communication. At the same time Dzmitry did not allow political games, but acted honestly, which was appreciated by the customer.
When the owners entrusted the transformation of their company’s processes to a third-party consultant, they were very wary. With extensive management experience, Dzmitry clearly understood why the founders were hesitant. And one of the primary tasks at the start of consulting was the establishment of trusting cooperation. In this situation a sincere approach played an extremely important role: it was necessary to structure the consulting process in such a way that would make the owners and the team trust Dzmitry and would not allow thoughts of provocation or deception. For this, he always argued in detail and explained all his actions and decisions.
The managers participating in the consulting and organizing the improvement process did not demonstrate their superiority to the team, patiently made progress relying on their own extensive experience in decomposing and estimating tasks. Innovations on the project were gradually introduced, while Dzmitry constantly drew the attention of the owners and engineers to small, but very important results they achieved.
Due to the fact that Dzmitry soberly assessed the situation on the project and was constructive, he managed to make the team feel well. Predictability and optimism fueled the strength and confidence of the company’s owners and engineers.
“We turned to Dzmitry to accelerate the development of our product and overcome the technological crisis. The project had difficulties with delivery planning, assessing tasks and risks. Releases were disrupted and passed with delays. We wanted to sooner resolve the issue of release instability, scale the product and implement effective technological approaches.
Initially, we did not realize the scale of the problems on the project. After several meetings with Dzmitry, we began to understand that we need to be ready for playing the long game. Some processes needed to be built from scratch. Already a few months after the start of consulting, the project team was actively working on the implementation of automated tests and CI/CD. In the process, we were receiving small positive results on a constant basis and this was motivating us to work on difficult tasks too. After the introduction of Scrum and communication with Dzmitry, the developers began to express their opinions more actively, started to write Unit tests and assessed their tasks more accurately. In general, the processes, costs, productivity of the team and the results of its work have become more predictable.
Though we entrusted a lot to Dzmitry, there was always a feeling that everything was under control and that the solving of our problems was delegated to the professional. During the consultations, he explained in detail the benefits of different tools and practices, and argued each solution. We recommend Dzmitry as an attentive consultant who takes care and respects what you have created.”
Greetings! My name is Dzmitry Harachka. Specially for you, I have prepared a checklist that will help you determine if your project is in danger and provide a clear quantitative assessment of the complexity of the situation.
In the process of creating this document, I applied many years of my experience in managing, coordinating, supervising and consulting on more than 100 IT projects. Every checklist item is a reflection of the most common challenges I have seen in the development teams during my consulting practice.
Moreover, the checklist contains a large number of practical tips: this will help you move forward in solving problems on your own.