Steps of the Development Path
Regardless of the scope of the project, there are steps that should be followed in every product development path. Most of them are given below.
Problem Definition
To better understand the purpose and the vision for the product which needs to be developed, the following two key questions should be answered:
- What problem is the application/product trying to solve?
- What are the user troubles and pain points with the existing solutions, if any?
The best way to collect this information is to talk to the end-users of the potential product/application directly. Try to discover how the user is currently solving the issues. Try to recognize the unnecessary manual work, the possible automation and the possible speed-ups of the slow part of the work. Hear out the client, but do not stick to the client wishes blindly. Instead, focus on the problems they are facing.
Investigation
Check the existing products/applications which are trying to solve the same or similar problem available on the market. When you know the client’s pain points and see the existing solutions, you will get a better picture of what needs to be developed. It is also possible that some of the existing services/products already solve the problem (or at least a part of it). These can be used as an integration from which your client would benefit, or which would speed up the work in the development process.
Use Cases
When you have got to know the client’s pain points, and you have investigated the market placement and have a better picture of what needs to be done and why you can define how your product will help the client. List out user pains and define the list of rough solutions for every pain point. Then beside the solutions, add the exciters, which will provide the users that extra value for which they will love your product.
Wireframe
Sketch out the idea of the solution and the user flow in product/application, and pinpoint what steps the user needs to take to get to the key points of interest.
Prototype
This step is a very important one although it is very often left out in the development process. Prototyping helps the client/customer to understand and visualize how specific features will look and feel, this is the very best time to get early feedback from users. Also, it helps the development team to understand the product which needs to be developed and to start considering the edge cases which can often cause troubles during the development and testing phase.
Programming
Programming represents the actual development of the solution for the client. At this point, make sure that the team works closely together, and that they completely understand what needs to be developed and why. During this phase, the developers often come up with very good ideas for improvements and simplification, make sure you collaborate with the team and get all these great ideas. Verifying the product quality should be done conscientiously and in detail.
Testing
Verifying the product quality should be done conscientiously and in detail. The quality of the delivered product is a mirror of your team’s quality. This is why the quality should never be negotiated when it comes to short deadlines.
Getting Feedback
Do demos or reviews regularly. Collect the feedback before the product is in the later stage of development so you can know if you are on the right track. Sometimes the feedback will be about really small issues, such as changing a color or a label. However, sometimes it would imply major development efforts. Make sure you communicate the estimates on requests or feedback items correctly with the client. Then you can prioritize these new items together by comparing the importance of these improvements with the other stories which need to be developed. Make sure you communicate the estimates on requests or feedback items correctly with the client.
Maintain the Team Project Culture
Get the team involved in the whole development cycle and work together on problem-solving from the start. The most important thing for the team is to understand the end user’s pain points so that all team members can connect with user personas and think from their own perspective how they can solve the issues.
Refine the backlog often. Help the team understand what needs to be developed. Moreover, before the actual refinement meeting make sure that you understand the requirements. If there are some trailing questions, try to get the answer from the customer or the end-user. You can also do research on the given topic in order to make the meetings productive – no one likes to participate in non-productive meetings.
Encourage the team to collaborate and suggest solutions. Hear out every suggestion and talk about it. A lot of great ideas and solutions are a result of communicating with the development team.
Try to keep the focus on one major feature at the time during the development process. Assign sprint goals to increase productivity. Focus your daily standups on a sprint goal. What have you done yesterday and what will you do today to archive the sprint goal? A lot of great ideas and solutions are a result of communicating with the development team.
Maintain Close Contact with the Client
Focus on understanding the client’s needs and problems. If possible, talk directly with the end-users to hear the feedback at first hand.
Provide estimates to the client, so they can know how big their request is. However, avoid providing time estimates. If possible, use story points or relative size estimates to communicate the team effort needed.
Never plan your team’s capacity to be at 100%. Save some time in the sprint for possible bug fixes, architectural changes, meeting time to discuss questionable items with the team, and adding small improvements after feedback. After all, no person can work effectively for 8 hours a day. Therefore, plan a maximum of 5 hours of productive work a day.
Collect feedback as often as possible. Show screenshots in the middle of the sprint. Organize review meetings to go quickly through new stories which are currently in development. This will help the client to engage and understand how the development process works. As a result, you will avoid possible surprises on the demo, and it will improve the transparency from the team to the client.
Align the Team and the Client Expectations
To begin with, create a roadmap. Fit the time, budget and scope of the project which will be transparent to the team and the client. If possible, work together on the roadmap. Encourage the team members to express their concerns if it seems that something on it is not reachable within the provided time. Prioritize appropriately in collaboration with team members and the client.
Secondly, plan ahead at least two sprints. If you have the top of the backlog refined, estimated and prioritized, the sprint planning will be much easier even if something goes wrong with the initial sprint plan. Prioritize appropriately in collaboration with team members and the client.
Demo regularly the sprint deliverables to show progress. Allow the team members to demonstrate the features they have been working on. This way the team members will put an extra effort to finalize and test their features and get positive feedback on the developed stories.
Finally, be transparent in communication with the client and warn them about the consequences of scope changes, or tight deadlines.
Precondition for Success
For all of these pieces of the development cycle to fit together a few things need to be in place:
- Have an accountable person on the stakeholder side. They will be responsible for the project and be available for the team to provide feedback or some additional info at any time if needed.
- Have a fully cross-functional team which will be able to plan and deliver the product from beginning to the end.
- Nurture a healthy team culture. The team needs to understand how every role in the team is contributing in order to deliver the product the client has asked for.
- Automate as much as possible to skip the unnecessary and boring manual work of the team members.
- Document as much as you can, and keep the knowledge base up to date, so you do not have to repeat the important information every time. Create a habit of documentation. Make sure every team member can add/edit the documentation as soon as something is modified. This proves to be very helpful in many cases when you wish to know why and when something changed during the development process.
Development of a product, depending on the organizational structure, can be very complicated if you skip steps and do not organize well. The communication between the development team and the client can then become very stressful, especially as the deadline approaches. This is why maintaining transparency and collaboration culture is very important from the beginning of the project.