Based on our experience with enterprise and startup projects, we wanted to create turnkey applications in a structured fashion while preserving flexibility. Following a series of diagnostic and design workshops in 2020 – 2021, we came up with the ITIDO Software Delivery Process (ISDP) that incorporates some industry best practices.
Designed to be ergonomic to customer needs, ISDP is a framework for delivery of high-value end-to-end web and mobile solutions. It fosters alignment within the development team and with all stakeholders. The process is divided into six phases, including:
- Quality assurance
- Release, and
In the acquisition phase, prospective/existing clients and partners provide information about the request. Whether the customer seeks an outsourcing service like team augmentation, or needs a turnkey solution is the first question ITIDO tries to answer. If we talk about outsourcing, ISDP is actually not needed. The process continues only if the team identifies an end-to-end project request.
This phase involves collecting business and technical information, evaluating the request, providing high-level estimates regarding the needed efforts and resources. At the end of the acquisition, ITIDO decides whether to accept, reject, or re-evaluate the project request. If it’s a “yes”, we prepare the necessary paperwork for signing.
The preparation phase focuses on clarifying the scope and requirements of the project. It includes activities such as problem diagnosis, product discovery, and project planning. Stakeholders collaborate to define goals, features, UX flows, technologies, and testing approaches. The project manager makes sure everything is documented in a software requirements document. All agree on communication channels and project timelines. A key result of the phase is the time-and-material estimation for completing the contracted scope. The team hosts an internal kick-off meeting and performs a pre-mortem exercise. After that, developers kick off the programming part.
Here comes the gist of the process. During the execution phase, the software development begins. The team reviews the contracted scope, targets, and deliverables. Depending on the agreed method, the project manager (PM) breaks down the deliverables into work packages, epics, spikes or other work items that fill the project backlog.
Before every sprint or development iteration, the team performs backlog grooming and planning to set the scope for the sprint. Development is underway. When ready, engineers commit their code to version control systems like Git. Developers conduct code reviews to one another and ensure code is shippable. DevOps engineers set up the infrastructure with continuous integration / continuous deployment (CI/CD). This is provided the project complexity calls for such a process early on. The PM handles change requests in line with the agreed scope and budget. Engineers then release the code on testing environments.
Quality assurance phase
The quality assurance (QA) phase focuses on testing and ensuring the quality of the software. QA engineers create test cases, often with the shift-left strategy in mind. The responsible person reports bugs that engineers fix. Retesting is performed to verify expected behavior. QA engineers create test reports. Customer representatives give the green light before changes are released to the live environment.
Quality assurance is closely related to agile development and modern CI/CD practices. So the whole team is involved in ensuring quality code that delivers end user value on time.
Release and support phases
Depending on the complexity of the project, deployment to production can be a manual, semi automated or completely automated process. In these last two phases, emphasis is placed on monitoring how software performs in a production environment and providing assistance with troubleshooting and hot fixes as necessary. When a project matures into a full-blown product, it is wise to consider implementing advanced CI/CD tools if this has not been done to that moment.
Here is an overview of how all six process stages come together. Some might say that too much of a focus on processes is bad for agility. Yes, “individuals and interactions over processes and tools” is a core value of the Agile Manifesto. Many software companies declare that they try to adhere to it.
However, we don’t see ISDP as an impediment to human interaction. It is not a regulatory-driven initiative. Rather, ISDP provides internal guidelines so that we have a higher chance of delivering projects on time, on scope, on budget and with high quality. For us, the process provides a structured approach to software delivery, ensuring customer satisfaction, alignment with objectives, and high-quality solutions.
MORE FROM OUR BLOG
For Konstantin Iskrov, a kart racer and an engineer, IaC can be a “well-oiled pit stop”
Our colleague Ivaylo Bandrov, Software Engineer at ITIDO talks about how he’s overcoming challenges as Python developer