Scaling for Big Enterprises of a Complex E-Commerce Product through Consulting the Founders

  • Duration: 2 years 6 months
  • Industries: E-Commerce; Finances; Supply Chain, Inventory & Order Management
  • Services: IT Consulting; Project Management; Early-Stage Innovation, R&D Services; Software Reengineering, Refactoring and Modernization. Cloud Migration
  • Software Categories and Types: Integration Solutions; ERP/CRM Systems; Document Management Systems (DMS); Supply Chain, Inventory & Order Management Systems (SCM, OMS, IMS, Warehouse)
  • IT Architecture Paradigms and Approaches: Test Driven Development (TDD); Software Frameworks Development; Plugins Architecture and Development; Architectural Patterns
  • Technical Expertise: Research and Development (R&D)
  • DevOps Expertise: Advanced build organization; CI/CD Basics; CI/CD Advanced; Virtual Machines; Docker
  • Technologies: Amazon Web Services (AWS); JUnit / TestNG; Liquibase; Data Bases; Git; Enterprise Architect; Project Management, Collaboration and Bug Tracking; Jira; Docker; CI/CD Automation Servers; TestContainers; Jenkins; Apache Tomcat; XML; Frontend; Apache Groovy; MindManager; BitBucket (Stash); MySQL; Java; XSLT; Cloud Platforms; Testing Frameworks; JVM Languages; Allure Framework; Backend; Various Editors; XML based technologies; Containers and DevOps Tools; Mockito; Test Automation; CloudWatch; Source Code Management (SCM); Microsoft Internet Information Services (IIS); Apache JMeter; CI/CD and DevOps; Languages, Protocols, APIs, Network Tools; Software Engineering and Management Tools; Confluence; Web and J2EE Servers, Java Runtimes; DB Tools
  • Team size (1):
  • 1 Project Manager

Provided services

IT Consulting, Project Management, Early-Stage Innovation, R&D Services, Software Reengineering, Refactoring and Modernization. Cloud Migration

Client

Software development company, one of the leading providers of solutions for warehouse management, procurement and accounting.

Product

Multifunctional system for the management of orders, products, warehouses, customers.

The product was commercially successful by the start of the project, but the owners were going to expand their client base and move to cooperation with larger companies.

Challenge

For further commercial development of the product, the client wanted to adapt it for use by large retail enterprises. However, the product had accumulated a significant technical debt. The challenge was to seamlessly eliminate technical debt and scale the product without disrupting its functionality.

Additionally, the company was managed by multiple co-owners who had different perspectives on product development and overcoming the project’s crisis. This lack of shared vision among the stakeholders further complicated the situation.

Project context

Technological complexities

The system was difficult to maintain due to a large codebase with a non-trivial, confusing architecture and mixed layers of code.

Unit tests were practically absent. There were no unit tests in the Definition of Done, as well as no requirements for the level of code coverage. Regular product quality checks were not conducted, and only manual testing was performed.

The system components were not isolated, resulting in the appearance of bugs even with the smallest code changes. Scaling the product or implementing new features was extremely challenging.

Delivery problems

The principles of Continuous Integration and Continuous Delivery (CI/CD) were not implemented. The product was built and the servers were updated manually, leading to a slower product delivery.

Delivery problems were also caused by unrealistic estimates. The engineers were given tight deadlines, to which they agreed, even though it was clear that the task could not be completed on time.

Also, there was no practice of task decomposition and risk assessment on the project. As a result, it was impossible to accurately estimate the resources required for solving problems.

Team problems

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 proactive behavior and technical leadership from the engineers, as well as the accumulation of technical debt over the years. The neglect of initiatives aimed at introducing new engineering practices that would benefit the project in the long run resulted in a loss of motivation among the developers.

Stochasticity in processes and management approaches

The processes of business analysis, testing, and delivery were not established. There was no clear approach to task estimation and risk assessment on the project. The founders were focused on achieving short-term business goals.

Mule solution

Solution

Phase 1. Mediation of the conflict between the founders and the establishment of a common vision for the project

Dmitry, the founder of JazzTeam, joined the project right from the start to contribute his extensive consulting experience. He acted as a mediator, an independent party tasked with promoting consensus among the product owners who held different points of view. While the owners recognized the need to improve processes, the options they proposed did not address the root cause of the problem. Each owner was an experienced specialist, staunchly defending their own perspective, making it challenging to reach a shared vision and collectively decide on a management strategy.

Dzmitry’s thinking of an IT company founder helped him to overcome barriers in communication with the business owners. Through regular 1:1 consulting meetings, Dzmitry facilitated productive discussions and guided them toward reaching a consensus.

Phase 2. Processes reorganization

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

Instead of using a schematic, limited, and incomplete task statement that only experienced project employees could understand, a unified and transparent standard was introduced for the entire team. This allowed for the integration of development and testing teams, clearer acceptance criteria, and improved synchronization with the end customer to achieve the desired result.

Quality control was intended to be an essential part of the project lifecycle. Before the client turned to consulting services, testing of the system was performed by the developers and one of the product owners. Dzmitry, after analyzing the current quality and stability issues of the product, recommended that the client expand the team with specialists in manual and automated testing. This would help improve the overall quality of the system.

To address the issue of constant release delays, it was decided to revise the task estimation process. The goal was to provide all team members with a realistic understanding of the current project status. As part of this revision, the labor costs were more clearly broken down into different types of work such as business analysis, design, development, automated and manual testing, and bug fixing. Additionally, a unified table of possible risks was introduced, with each risk assigned a probability that would impact the initial estimate.

Additionally, a list of criteria for completing the task (Definition of Done) was created for each type of work. This was necessary to organize systematic acceptance. The development team gradually acquired practical skills in estimation. With gained experience, the engineers were able to more accurately and realistically estimate the necessary labor costs for implementing specific tasks. These measures resulted in realistic estimates, ensuring timely delivery planning without delays.

Dzmitry was regularly involved in the project to analyze the effectiveness of the improvements made.

Phase 3. Dealing with technical debt

To reduce technical debt, the following measures were taken:

  • CI/CD was implemented to automatically build the product, regularly monitor its quality, and automate product delivery.
  • A framework was created for black box testing of the application, which allowed the team to begin building automated backend tests. Prior to this framework, engineers were unable to create unit tests due to the large codebase with a non-trivial and confusing architecture, as well as mixed layers of code. The tests are now run as part of regular builds of the project, both on schedule and on-demand, to ensure the stable operation of the product when changes are made.
  • To ensure comprehensive and consistent coverage of important system functionality, GUI automated tests were employed. To efficiently create and maintain a significant number of GUI automated tests at minimal cost, a test framework was developed. This framework facilitated the creation of a substantial number of UI automated tests within a relatively short timeframe (several months).
  • Dzmitry used his technical background and qualifications as an engineer, architect, and CTO to establish a process for dealing with technical debt. Also, a dedicated manager was involved throughout the process to oversee the extensive work required to eliminate technical debt.
  • Phase 4. Implementing the best development practices and fostering a culture of value

    In agreement with the business owners, it was decided to strengthen the role of engineers in the project and increase the team’s self-organization. For this purpose, the best practices of Scrum methodology were used:

  • Daily stand-ups improved the synchronization level of the geographically distributed team.
  • Demonstration sessions of the new functionality were conducted for the entire team to establish a shared understanding of the current project status.
  • Misunderstandings and problems were promptly resolved during regular retrospectives. The topic of the importance of a realistic approach to development was constantly emphasized: the team had to be honest in task estimation and assessing their capabilities. All project participants had their opinions heard, and product owners started considering and addressing suggestions and comments from the engineers.
  • The systematic knowledge transfer within the team was established through regular lectures and meetups focused on technological or domain expertise. It helped to improve the psychological climate. Engineers became more independent and were not afraid to show the initiative.
  • A healthy psychological atmosphere was established in the team, leading to increased sincerity and trust among project participants. 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 and avoid a large number of risks and conflicts.
  • Mule solution

    Result

    The owners have reached a consensus on the development of the product and business. They have started openly discussing current problems and taking collective action within the chosen strategy, considering the interests and opinions of each party.

    The client was able to consistently and timely deliver new functionality, which allowed for the development and scaling up of the highly sophisticated product. The degradation of quality at the production level was eliminated. All of this created opportunities to strengthen the company’s position in the market and collaborate with larger customers.

    Thanks to implementing effective practices in process management and task estimation, the client’s company transitioned to the Time and Materials (T&M) business model and increased its sales revenue.

    The team adopted a value-based approach to development. The product owners started listening to the team’s proposed initiatives that would deliver long-term value. They transitioned from focusing on short-term goals to adopting a strategic approach to product development. Additionally, the product owners began investing in the implementation of essential engineering practices such as CI/CD, unit testing, and test automation. They also started addressing technical debt during each sprint and conducting long-term technology research.

    The main technical debts were worked out:

  • Thanks to the introduction of CI/CD, the process of building and delivering the product was automated, making it fast, transparent, and secure. This enabled regular releases.
  • The product’s complex codebase was covered with unit tests, making it possible to stabilize the system’s quality when making changes.
  • Systemic coverage of code with automated tests enabled the quick detection of bugs during the implementation of new functionality. This allowed for timely development to maintain the product’s competitiveness.
  • The synchronization level between the distributed team members and product owners was improved. Engineers were motivated to take a proactive approach when working on tasks. The overall psychological climate in the team was also improved, and the development process now takes place in a relaxed atmosphere, free from unnecessary stress and nervousness.

    The product owners and development team became more realistic in their planning, task estimation, and risk assessment. This ensured the predictability of work for the engineers and reduced team nervousness. Additionally, the use of composite estimation accelerated the process of introducing innovations and engineering practices to the project.

    Thanks to our professional approach, all required changes were accepted and successfully implemented. The development team was not only retained but was expanded by adding new specialists. We also involved the founders extensively in the technical aspects of the business during the consulting process to enable well-informed business decisions in the future.

    Screenshots

    Clients about cooperation with JazzTeam

    Related projects

    Recent Work

      Contact Us

      What happens next?
      • 1

        Leave your project request. We will contact you and schedule a call.

      • 2

        Signing of the NDA to ensure the project info confidentiality.

      • 3

        Negotiation of your request and the required services.

      • 4

        Team forming, coordination of workstages.

      • 5

        Contract signing and project start.