Delivery On Time
Everybody had faced a situation when some package was not delivered on time. Usually, this is not a big deal. However, there are many situations in software projects when delivery of some functionality must be done on a specific day and time. Let us see how to build a process in the way to deliver it on time.
Planning
Everything starts with planning. First, you need to have a clear understanding of the features that customer wants to be delivered. Then, there should be a detailed implementation plan for every feature and every piece of functionality requested by the customer. Finally, all participants (project manager, system architect, deployment team, customer) have to understand when each feature will be available for users, how new features are going to affect user experience, and how they will work together.
This initial planning should answer most of the technical and organizational questions. Having this information is essential for the successful project implementation and delivery, especially if functionality must be completed until some specific date.
Risks
Planning also has to cover risk management. There is a chance that every feature is not going to be finished on time. You should cover such cases, prepare alternative solutions, and discuss them with the customer.
There is a best practice to recalculate risks every iteration (e.g., sprint) and inform all team members about the progress. Such an approach does not also allow them to be able to react to the found issues appropriately and fix them at the early stages. It also opens the possibility of a proactive approach in project management to identify potential problems before they appear, address them timely, and decrease overall risks.
Alternatives And Rollbacks
Every crucial feature should have an alternative way to work. It means that you need to discuss with the customer how the system has to behave if the feature will not work as expected, and users have to have a workaround (or “plan B”) to do what they need to do. Searching for a suitable alternative requires creativity and the ability to think outside the box, and often it can also increase the total cost of the solution.
Another best practice is to have a rollback plan in case users are not going to accept the way feature works. The simplest way to do it is to allow them to turn the new feature off and fall back to the previous functionality. There are two possible approaches here — either enable the feature by default for all users and allow them to disable it, or send a notification with new feature description and the way to turn it on. Both are valid — however, you need to check with the customer which one suits users better.
Delivery
Finally, when everything is discussed, planned, and implemented, you are ready to deliver new features. Delivery should be done during the non-working hours to do not prevent users from doing their regular activities. Automated delivery is always an option — however, if you are doing it for the first time, it is recommended to monitor everything in real-time and be ready to intercept the delivery process.
After you have delivered features, you have to do superficial (“smoke”) testing to make sure that each feature works as expected. It is also a good idea to test workarounds and rollback plans to be ready to enable them on demand. When all these activities are done, you can be sure that users will be able to use features on time, and the customer will be happy.