Firstly, I'd like to state, that the process itself is useless. You could take SCRUM and apply it to your company, but it won't work if you do not follow the Agile manifesto. Vice versa, the process described in the PMBOK would be overkill if you are agile in your core.
Thus, when working on different projects we could mix the practices, but we always stick to our values. They are Transparency, Inspection, and Adaptation. I will expand on them during this post a little bit later.
Our delivery process, in a nutshell, consists of the following phases:
- Monitoring and Control
Let's walk you through the each one with some more details:
1. Pre-study. Usually it starts when we have some Request for proposal from our client. A Client sends us either and email with requirements or we discuss this via call. This phase goes under control of an experienced Account Manager who has worked on many projects and knows where it's possible to save the budget and where you should extend the quote for the future benefits.
We allocate a team of developers who can check the requirements and come up with a Preliminary Estimate which shows the Scope of work, Budget, and Timeline. If these are within Client's expectations, we are moving to the next step - Project Planning.
2. Planning. The aim of this phase is to make an Accurate Estimate and come up with a Project Plan, so you'll have a clear understanding of the Milestones, deadline and possible risks. When it comes to a web development, you always have dozens of pitfalls and it's really important to mitigate them upfront.
Also, during this step, we finalize the Contract and NDA agreement. It's crucial for us that all IP will be protected and all agreements made on the paper. For the each project we also create a Statements of Work document, which describes all the smallest project details.
3. The Implementation phase goes right away we have an approval on the project plan. For each project, we have a team of:
- Project Manager, who could control the scope, budget, timeline, risks and quality. Who communicates with the client, team and other possible contractors. He is a primary contact person responsible for the project delivery.
- Tech Lead, who is an experienced developer with exact skills to work on this particular project. Meaning he has already done the similar Drupal module or functionality.
- Tester, who is capable of manual testing of the functionality and compatibility testing with the mobile devices.
- Account Manager, who oversees the business relations and terms of work.
This team setup helps us to keep the following rituals:
- Often releases and Demos. Yes, we do like to ship fast and show demonstrations of the functionality to our clients.
- Team stand-up statuses. If we work only with our team, we do this offline in our office. If we work with the Client’s team, we do this in Slack. Yep, we use Slack for all internal communication.
- All tasks are kept in a Redmine, customized for Agile development (we have a Kanban board). We divide the whole scope of work into stages with the estimate in hours for each one. So, we could track progress for each milestone in separate and we also can track progress for the whole project in total.
- All code is on GitLab and code commits are assigned to tasks in the Redmine, so it’s really easy to track down each commit. We use merge requests, so every single moment a developer wants to deliver a feature, he assigns the merge request to a Tech Lead. All commits over come through a review procedure.
- Project Manager sends a weekly time report each week. And a monthly project progress overview with completed milestones and statistics on a budget.
4. Project Monitoring
In case you have a fixed budget to pay and we have a work to be done. But still, in our case, we do believe that it's not the best way to manage projects. We think that it's more valuable when our clients have an access to our Redmine and can view the actual amount of spent hours versus task completed. This keeps things transparent and fair.
In case it’s a T&M project, we work with project budget with even more energy and report offten. This helps our client to decide what’s important and what is not.
Once the project is completed, the assigned project manager creates a close-out report with the lessons learned. This could help to work on the project during the next phases. For example, we had a project with a Commerce module for D7, customized specifically to work with the event's tickets. The customization was made by another team with no documentation, so our team has a made a reverse engineering to understand how the things work. And then, this was transferred to a module specification which was transferred to a client as a part of a close-out report.
This is a short process overview which is missing some details. Our team is always ready to provide more details and even show some presentation of a trial project. If you are interested in this, please send us a request to [email protected]