190 Projects Daily: Maintaining Quality in Software Development
In over 20+ years of software development, SimbirSoft has expanded from a team of four to a company of 1,500 employed professionals. Our portfolio boasts over 1,200 projects. We design and tailor information systems to address business challenges for clients across various sectors, including the development of high-load systems using machine learning and data science. The company's steady growth is largely due to our quick adaptation to fluctuating market conditions, robust management, and streamlined processes.
The cornerstone of our success is our commitment to consistently deliver quality products for businesses, irrespective of the client size or reputation. To excel, we delve into the clients' business specifics and identify the primary reason for their approaching us. We are managing nearly two hundred projects simultaneously. In this article, we will share what enables us to ensure quality across several hundred projects and how we manage to deliver results under such a workload.
Treat our clients' teams as if they were our own
Our clients and we are in the same boat, and we have a shared objective: a quality product that addresses an existing business issue. Therefore, we do not just follow instructions, but delve into the core of the clients' problem and identify what is needed for its resolution.
If we understand that the client does not require the costly information system they initially wanted, and their issue can be resolved with a more affordable solution, we will inform them downright and suggest alternatives.
Our primary focus is the business needs, and we channel all our energy into delivering the most effective and high-quality results: utilizing new technologies and avoiding errors. We design even the simplest products in a way to provide maximum value to clients and end users.
Clients might not always possess the necessary skills and experience, but if this ultimately impacts the progress and outcome of the project, we will certainly suggest compensating for the shortfall by involving our own expertise. Typically, clients support us in such situations: they are always keen on collaboration if it aids in achieving the desired outcome and solving tasks. This approach allows for maximum flexibility in adapting to clients' needs.
Staying on the same wavelength with clients
Over the years, we have established several client interaction principles that assist us in understanding clients' desires and acting in line with their demands. Here are some of the key ones:
Staying in touch. We engage frequently with clients, discuss visions and details to ultimately deliver the desired result, while staying in touch at all times.
Establishing accountability. At the project outset, we develop a responsibility matrix outlining the client's objectives and expectations and assigning roles and duties. If something is not going as planned during the process, we conduct a retrospective review, allow all stakeholders to express their views, and make adjustments based on their feedback.
Setting control points. We obtain approval for the conference call schedule with the client in advance where we showcase the project progress.
Being consistent. All project processes are transparent to the clients: they are aware of the current status and duration of each phase. Project manager oversees this process.
Developing new concepts making use of experience
After each project, we hold a retrospective review to discuss lessons learned, successful ideas that can be applied to other IT systems, and adjust our processes to prevent future errors. This way, we maintain a relevant knowledge base where our team members can review past projects and their outcomes.
We also maintain a technology knowledge base. Naturally, SimbirSoft has its own successful technical solutions that we aim to reuse where possible. This approach reduces labor costs required for a project, thereby saving the clients' money. Hypothetically, a professional might spend a week designing the architecture, but instead, they leverage the existing solutions and complete the job within a day.
Striving for the best possible outcome
As mentioned, we always aim to provide the clients with various solutions for their business challenges, considering budget, timeline, and quality constraints.
To best meet the clients' expectations, we:
- Adhere to and continuously refine our development process. Strict adherence to the standards and practices developed over 22 years of project work produces predictable results;
- Place a high emphasis on analytics. The more thorough it is the less uncertainty there is, resulting in fewer bugs and discrepancies between the final solution and the clients' vision;
- Ensure quality. Our company employs a comprehensive set of processes to guarantee the quality of our projects: a pre-established workflow, structured testing procedures, and so on.
However, we strive not to obsess over perfection to the point of failing deadlines and exhausting the clients' budgets – that is not how we operate. If the product meets the clients' needs and addresses their business issues, we deem it finished and finalized.
Checking in at milestones
In the analytics stage, it is vital to grasp the client's actual business objectives and minimize functional and technical ambiguity in the project. To effectively complete this significant milestone, we engage all the professionals required: an analyst, a project manager, a team lead, and a QA lead. After the client approves the artifacts (technical specifications, prototypes, architectural concepts, etc.), the team commences the development stage.
We aim to base our product development on Agile methods, utilizing key Scrum events. Their objective is to deliver the required outcome to the client as swiftly as possible. At the conclusion of each sprint, we hold a mandatory project demonstration for the client and a retrospective review. We discuss the challenges our team is encountering and our plans to overcome them. If said issues arise due to the client's mistakes, we request corrections, ask for more information, or assign a professional to assist them.
Correcting errors properly
Regardless of how well we perform from the outset, errors are unavoidable. There can be instances where clients have specific expectations, but discrepancies occur somewhere along the line. During the project, some unforeseen details may emerge that we had not previously considered, impacting the project progress and results.
We view each of these instances as a valuable lesson learned and use them to enhance our company's processes. In other words, when an error is identified, our first step is to rectify it promptly, followed by an investigation into its causes. Our experts investigate it, identify its root causes, and implement proper changes to our processes and knowledge base. This approach reduces the likelihood of similar errors in the future.
In conclusion
The primary objective is to resolve the clients' issues. It is essential to focus on this and propose a sensible solution, rather than steering clients towards an expensive and unnecessary product.
Effective communication and information gathering are crucial. The more we know about the clients' expectations and requirements, the better equipped we are to meet them. We utilize checklists with product-related questions, conduct comprehensive interviews at the onset, and maintain regular communication through calls.
We ensure execution of the development processes in a streamlined manner and constantly strive for improvement. In the realm of development, continuous learning is a must, and it extends beyond just technology. Therefore, we refine our processes after each case and learn from even the smallest of errors.
With such an approach, managing two hundred projects simultaneously knows no bounds.
You can learn more about our processes here. For more cases and useful materials for business, visit our LinkedIn and Medium accounts.