A messaging app started its development with a requisite to have the statuses next to individual names of people. As its earlier versions kept crashing constantly, Jan Koum, the app developer was on the verge of disposing of the effort, until Apple launched Push Notifications, which allowed users to be pinged even when they were not using the app. Koum changed his app feature so that everyone in the end user’s network would be notified when the end user’s status is changed. And this was the beginning of WhatsApp.
Mostly, these changes happen through the development phase. Koum was fortunate and apt to use a delivered offering. It will not be the same when the product is to be delivered to a client, as the product specification is driven by the client requirements. In such instances, to avoid uncertainty during the development stage an accountable task must be done during Software Development Planning.
In this article, we would like to share a few scenarios which were tackled during the development cycle of an integrated digital ad management solution to manage all marketing campaigns from a single tool for one of our clients in the digital advertisement domain.
Estimate Mapping and Equipping
Requirements gathering, the software development methodology, the team comprising of development and non-development members, software tools to be used to build upon, all these, and many more are critical decisions to be considered while planning.
How to strategically plan software development?
1. Elicit requirement
Draw out software requirements from the client. There should be a good clarity on requirements from both the Client and Project Manager. It is to be kept in mind that there can be variations again if the requirement gathered is from the client and not necessarily from the end-user. The requirement shared by the end-user of the product can have more clarity. Converting these as user stories by the Project Manager further enables developers to figure how the software features are to be built. Any unclear features should be discussed with the client much before the designing starts.
Etsy an online marketplace for handmade unique items drew large numbers of registered members, both sellers and buyers, in the first two years after its launch. Then Etsy realized that its sellers were not using the site’s listing tools the way the company expected them to. Users seemed to be fighting against the product to do what they wanted to do, by listing factory-made non-unique products on Etsy. Interviews with its sellers helped Etsy identify what the problem was, and from then Etsy lets its sellers test the prototype, allows them to recommend any big changes, and then starts the development cycle anew.
2. Gauge the resources
The software tools to be used should be based on the requirement, and not based on choice. Using third party integrations or tools can cause roadblocks in the project.
Adobe Flash, a software platform was used by our client earlier. Foreseeing Flash being deprecated, the decision was taken to build a new app with more features and flexibility. We had to be prudent on what the new platform was to be built on, as the platform had to support the new product specifications. As well, the team had to be equipped with the know-how of the platform materials.
3. Adding buffer for the unknown
Many a times, there will be possibilities to improve the current feature by including multiple small adjustments. One similar instance with our client was when we implemented some new filter designs. We realized there was a scope to include Saved Filters and Favorite Filters. The improvements though had to be considered as a byproduct of the filter and that added great value to the end-user experience. This scope had not appeared while discussing the requirements of the client initially. It is also possible that a client may come with changes or may identify any missing or nice-to-have features during the project development. The project scope will be impacted in such cases.
4. Deciding priorities
The client may change their priorities as the development progresses. Our client had to shift their priority from big businesses to small businesses. And so, there was a shift in the modules being prioritized now-and-then. Allowing the team to actively manage the functionality throughout the project helps the team to focus on the right set of priorities, as this way they are aware of any changes in the requirement. Otherwise, the team would get overpacked with multiple modules at the same time.
5. Software Methodology
Setting the project methodology, whether agile, scrum or waterfall, or any other, helps to improve the estimate. It assists the project to arrive at a successful conclusion through a proven series of steps. This helps to remain focused on the deliverables. Our client followed no methodology at the beginning of the project and faced coordination issues. But they later implemented Scrum towards the middle of the project period which helped in prioritizing and drawing pitfalls at an early stage.
6. Measure the effort
Effort does not only mean the time utilized to develop the product, but also effort utilized on designing the UI, preparing mock UI, unit testing, documenting the features, and the coding. Speaking about the design, our client had reworked the design multiple times and these were implemented within the UI. There was redesigning required particularly because the end-user at the client-side had different perspectives and their specifications differed from the initial designs.
7. Gauging the team’s solidity
Bringing together a team of like-minded members with skills complementing each other’s work are all vital decisions. So that no task goes unnoticed. Just as development, the non-developmental tasks like deploying, testing, etc. should be given equal importance. The Project Manager should anticipate the time for bug fixing and retesting.
8. Providing appropriate deadline
Hoping that everything will go well, there is a tendency for the developers to give an optimistic estimate to the client. But a Project Manager should add a buffer to the optimistic time. This will cover up the time to mitigate the hurdles caused during the development. Overpromising and delaying delivery causes impression loss for the business. Instead request a reasonable amount of time for delivery. The incident with Knight Capital Group, a financial services firm engaged in online trading, where a technician forgot to copy the new code to one of the eight SMARS computer servers and resulted in a $460 Million loss is still a nightmare for many. The background to this incident in short is that Knight’s software development team worked feverishly to make some necessary changes and the error was caused because of tight deadlines.
If a client is demanding shorter releases, the Project Manager should negotiate and target to provide a Minimum Viable Product, which is to provide the product with just the necessary functionalities.
Takeaways
The product needs to be always in a potentially releasable state and so the Project Manager should prioritize the functionalities so that it can be achieved in the given time frame. While allowing an overestimate of time may deprive a business of taking up new opportunities in that time frame, giving an extremely shorter estimate could sound overwhelming, but if the agreed deadlines are not met, the client could underestimate the business. Effective planning can be made based on historical data of similar projects, or on the functionalities to be delivered and the effort. No matter how fast the solution needs to be delivered, multiple reviews and tests must be given time and importance. And so, the planning should consider a buffer for time, cost, and resources.