Contents
  1. Business challenges
  2. Main problems on the project
  3. Results of comprehensive work
  4. Consulting format
  5. Approaches and solutions
  6. Work stages
  7. Consulting strategy
  8. Customer's achievement
  9. Review

Mediation of the relationship between the company founders and scaling of a complex in-demand product in the field of e-commerce

Project implementation period: 1.5 years
Other cases

Business challenges

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.

Situation on the project

  1. Technological complexities. The system had a large codebase with a non-trivial, confusing architecture and mixed layers of code, which made its maintenance difficult. Few Unit tests were applied, there were no Unit tests in the Definition of Done, as well as no requirements for the level of code coverage. Product quality checks were not carried out on a regular basis, and only manual testing was used. The system components were not isolated, bugs appeared even in case of the smallest code changes due to the high level of cohesion. The product was very difficult to scale up, and it was extremely difficult to implement new features.
  2. Delivery problems. The principles of continuous integration and delivery (CI/CD) were not implemented, the product was built and the servers were updated manually, which negatively affected the speed of product delivery. Unrealistic estimates were another cause of delivery problems. Hard deadlines were set for the engineers to which they agreed, although initially it was clear that the task could not be completed on time. Also, there was no practice of tasks decomposition and risk assessment on the project, which did not allow to realistically assess labor costs required for solving problems.
  3. Learned helplessness and high toxicity within the team. Constant failures to carry out releases caused dissatisfaction among the business owners and end customers; nervousness and stress arose in the team in response to the pressure exerted. The situation was complicated by a lack of proactivity and technical leadership on the part of engineers, and the technical debt accumulated over the years. Initiatives aimed at the introduction of new engineering practices that benefit the project in the long run were neglected, so the developers faced learned helplessness.
  4. Stochasticity, no systematic approach in control processes. The processes of business analysis, testing and delivery were unavailable. There was no clear approach to estimating and assessing risks on the project, the founders were focused on achieving short-term business goals.

Main problems on the project

  1. Unscalable, difficult to maintain product with a large codebase and confusing architecture.
  2. Irregular deliveries.
  3. Toxicity and a tense atmosphere in the team.
  4. Management processes were not aligned.

Results of comprehensive work

the owners reached <br>a consensus
the owners reached
a consensus
on the development of the product and business
the technical debt <br>was worked out
the technical debt
was worked out
they began to pay attention to its elimination during each sprint
releases became regular
releases became regular
thanks to the introduction of CI/CD, the process of building and delivering the product is automated now
the revenue increased
the revenue increased
the company switched to the T&M business model and was able to increase the sales revenue

Consulting format

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.

Consultation roadmap
  1. Personal consulting in a 1:1 format with the owners of the company
  2. Mediation of the conflict between the founders
  3. Engaging a dedicated manager to implement improvements (set up and manage business analysis, delivery, testing)
  4. Involvement of a separate dedicated manager to manage the process of working with the technical debt. This was necessary due to the very large amount of the technical debt and the amount of work required to eliminate it. At the same time, a manager who did not have much experience in dealing with technical debt was deliberately appointed for this task, because he had no prejudice about the unrealism and too high complexity of this process, which helped a lot in the future
  5. Regular inclusion of Dzmitry in the project to analyze the effectiveness of the improvements made

Approaches and solutions

Having started consultations with personal communication with the customer, Dzmitry developed work with the company in several directions

  1. Mediation of the conflict between the founders and establishment of a common vision of the project among the leadership
  2. Reorganization of processes
  3. Dealing with the technical debt
  4. Implementing the best development practices and generating a value culture in the team
Work stages
  1. Stage 1. Mediation of the conflict between the founders and establishment of a common vision of the situation on the project

    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).

  2. Stage 2. Reorganization of processes
    1. Dzmitry qualitatively transformed the process of business analysis. Instead of a schematic, concise and incomplete statement of tasks understandable only to employees with extensive experience on the project it was decided to introduce a unified standard transparent for the entire team. This made it possible to integrate development and testing teams, provide clearer acceptance, significantly improve synchronization with the end customer for the desired result, and use the formulation to create test cases that were the basis for manual and automated testing. Also, this approach reduced costs for product support and maintenance.
    2. Quality control was to be a critical part of the project lifecycle. Before the customers turned to consulting services, testing of the system was carried out ad-hoc, the role of a testing engineer was performed by the developers and one of the product owners. Dzmitry analyzed the current problems with the quality and instability of the product and encouraged the customers to expand the team with specialists in manual and automated testing. The manager hired by Dzmitry to manage the implementation of improvements on the project took over the task of building the testing process.
    3. To combat constant release delays, it was decided to revise the task estimation process, so that all team members could realistically understand the current status. In addition to a clearer decomposition of labor costs into types of work (BA, design, development, automated and manual testing, bug fixing, etc.), a unified table of possible risks was introduced. The probability was set for each risk, which influenced the initial estimate. Also, a list of criteria for completing the task (Definition of Done) was created for each type of work, which was necessary to organize systemic acceptance. The development team gradually acquired practical skills in estimating. Having gained experience, the engineers each time more accurately and more realistically estimated the necessary labor costs for the implementation of a specific task. All these measures produced realistic estimates that ensured delivery planning without delays.
  3. Stage 3. Dealing with the technical debt

    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:

    1. CI /CD implementation for the automatic build, regular quality control and automation of product delivery. The process was complex, painful and required a number of studies to achieve complete automation of product build and delivery. It was necessary to overcome the mistrust on the part of the team, as well as insist on the mandatory use of CI/CD by everyone. Based on the results of the work carried out in this direction for six months, an automated delivery of the product was introduced.
    2. Creation of a framework for blackbox testing of the application with which the team was able to start building automated backend tests. Without this framework engineers were not able to create Unit tests due to the large codebase with a non-trivial confusing architecture and mixed layers of code. Tests are run as part of regular builds of the project (on schedule and on demand) to ensure the stable operation of the product when changes are made.
    3. Full and regular coverage of important system functionality with GUI automated tests. To quickly write and maintain a large number of GUI automated tests with minimal costs, a framework was created. It  helped to create the base of UI automated tests from zero to several hundred in a short period of time (several months).
  4. Stage 4. Implementing the best development practices and generating a value culture

    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.

Consulting strategy

In the process of consulting, Dzmitry applied a triad of his experience.

He used his technical background, qualifications of an engineer, architect and CTO to set up the process of working with the technical debt

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).

Using the mindset of the owner of an IT company in the process of consulting, Dzmitry was able to overcome barriers in communicating with the owners and earned a great reputation

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.

Dzmitry also used his skills of organizing product delivery processes to ensure systematic work on development processes improvement (business analysis, testing, setting and estimating tasks)

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.

Customer's achievements as a result of cooperation

    1. The owners reached a consensus on the development of the product and business, began to openly discuss current problems and act together within the framework of the chosen strategy taking into account the interests and opinions of each party.
    2. The customers were able to deliver new functionality on a regular and timely basis, thereby developing and scaling up the most complex product. Degradation of quality at the production level was eliminated. All this opened up opportunities for strengthening the company in the market and cooperating with larger customers.
    3. Thanks to the implementation of effective process management practices and task estimation, the customer company in relations with its customers (product customization) switched to the T&M business model and was able to increase the sales revenue.
    4. The team established a value-based approach to development. Product owners began to listen to the team’s proposed initiatives that deliver a long-term value, shifted from short-term goals to a strategic approach to product development. Also, the product owners began to invest in the implementation of the necessary engineering practices (CI/CD, Unit testing, testing automation). They began to pay attention to technical debt elimination during each sprint, long-term technology research was generated.
    5.   The main technical debt was worked out:
      • Thanks to the introduction of CI/CD, the process of building and delivering the product is automated now, it has become fast, transparent and secure. This allowed making regular releases.
      • The complex codebase of the application is covered with Unit tests; so, it became possible to stabilize the quality of the system when making changes.
      • System coverage with automated tests made it possible to quickly detect bugs when implementing new functionality. This provided the opportunity for timely development to maintain the competitiveness of the product.
    6. Improved synchronization between the distributed team members and product owners. Engineers were motivated to overcome learned helplessness, to use a proactive approach in the process of working on tasks. The psychological climate in the team was improved, the development process takes place in a relaxed atmosphere now without unnecessary stress and nervousness.
    7. The product owners and development team became more realistic in planning, estimating tasks and assessing risks, which ensured predictability of work for the engineers and reduced team nervousness. Also, the use of composite estimation accelerated the process of introducing innovations and engineering practices on the project.
    8. Thanks to Dzmitry’s professional approach, all the necessary changes were accepted by the specialists and founders and successfully implemented. At the same time, he managed not only to retain the development team, but also to expand it with new specialists.
Review
Client's review of consulting

“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.”

Client's review of consulting
Product Founder (company name under NDA)
rect
Get FREE checklist «How do you know if your project is in danger?»
photo

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.