Software can be developed in numerous ways. Based on the route you choose with respect to managing your project, success or failure can be predetermined. There are many reasons for bad outcomes, including poor project management, technical issues, an inappropriate business environment and organizational culture.
Believe it or not, according to the Standish Group’s Chaos Report, most software projects end up being unsuccessful. Its estimations say that only 29% of them succeed, with 19% turning out to be total failures. Even more disturbing is the McKinsey report. It states that 17% of large scale projects are conducted so poorly that they pose a threat to the very existence of businesses.
Here, we will explain to you why the discovery stage is essential for any SDLC (software development life cycle) and how exactly this phase can help avoid failure situations. You will learn about its numerous advantages for the development process, with step-by-step instructions on how to introduce a product successfully. Read on to make sure that your product will be more competitive and attractive for customers.
So, what actually does this magic word “discovery” mean? Discovery is the first stage in software development, which roughly implies doing research and sketching a plan for the whole digital project. The main purpose here is that all stakeholders in the development process have a clear comprehension and share the same vision of the final product.
There are reasons why some companies, especially startups, tend to skip this stage at the beginning — they think they will save some time and money by omitting this step. However, we know from our own experience that a product risks being inefficient if the stage is ignored.
Let’s sum things up. Check the following red flag situations where this preliminary stage can’t be skipped and is vital in developing a software product:
Long-term and complicated projects. Once the project concept gets very complex, the discovery phase should be started. Among other things, this includes projects with complicated and numerous requirements for the final product, when the market is already saturated, there are many interdependent stakeholders, lots of competitors, etc.
The concept of the final product is not finalized. There might be a general idea of what should be achieved, but the concept is not well thought through or is a bit blurry. It might also be hard to tell how exactly to implement it. Starting with discovery can be the best solution in such a case.
Numerous project participants. In the case of many responsible and interested parties, some ideas or requirements may be inconsistent with each other. This situation can be remedied during the discovery process to define the most important steps for a successful project implementation.
A lot is at stake, e.g. multi-million construction projects — This is about development projects where even the smallest mistake can lead to project termination or worse still, business insolvency.
If you have a concept about building a software product but are not sure whether to start with discovery, contact the LANARS team to help you get started.
Discovery is a critical step in Agile. The biggest trick is that it helps you understand which problems should be solved in your IT project from the very start. In a waterfall model, discovery takes place at the beginning and lasts about four to twelve weeks depending on the project. Discovery in Agile is different. It is also done in advance, but only takes up one or two weeks at the start of each sprint. Since the Agile approach is time-sensitive, it is important that the whole team understands the significance of setting priorities. This way, optimization of the final product can be reached.
Roughly speaking, this initial stage is about finding out what you currently have, what you strive to achieve, and what is needed for that purpose. Discovery results in estimates for the best project implementation by means of describing and agreeing on which product output you want to have.
Take a look at the main steps of the discovery process, which can serve as the foundation for your project:
Identifying stakeholders — Stakeholders are both internal and external representatives. There should be a list of all responsible and interested parties including developers, business process owners, product owners, end users, investment decision-makers, administrators, etc. Take your time to gather feedback from all participants, to reap the benefits of a more focused process of software development.
Exchanging ideas with all participants — There should be a clear vision of the final product. It should also be possible to reach out to other people in cases where some stakeholders have special requirements. Make sure you have identified all the influencers in your project and understand entirely their vision before actual development begins.
Reviewing internal documents and available research — Check internal documents available within your organization. Internal documents are an important part, because the information they contain may not be so apparent when talking directly to other team members and intended users. Likewise, research data may already be available, since many companies regularly conduct research and surveys to study the market.
Creating user infographics and journeys — Creating user infographics and journeys will help you generate a clear visual representation of what the experience with your product will look like. These tools make it possible to understand the potential issues and find the best solutions possible.
Researching market environment — Study the competition regarding your project, define the pros and cons of available solutions and identify the market segment for your product. If the correct market niche has been selected, you will create software with higher quality, which can then result in bigger revenues for your business.
Analyzing data and creating SRS — Gathering and analyzing data is essential, since this information will then be a database for the document called Software Requirements Specification (SRS). Basically, SRS is the road-map that every team member in the development process should follow. It is also used to access critical information.
Estimate budget and time frame — Assess the time and financial effort needed. This can be achieved by formulating a baseline time schedule and budget. Come up with a total budget after the budget for separate features has been assigned.
There are many advantages of the stage. Basically, such initial analysis and discovery research define the nature of the final product together with its software components as well as describe project milestones.
Thanks to the discovery process, you will receive the following advantages:
Clear goals — The discovery phase results in establishing business objectives, project scope as well as product requirements. It’s important to adhere to these goals during the whole software development process, especially when/if any changes are introduced to the product.
Definition of the desired outcome — The business discovery process makes it possible to agree on the desired milestones of your project. Here, it is important to set project objectives as well as to define what will be sufficient to reach the sought-after results.
Completion of user research and customer journeys — By the end of this stage, you will know the needs of your prospective users. We think that knowing the nature of your potential audience and their experience with your product is crucially important, not only for discovery but also for the whole project. Plan enough time for your team to interview users. In doing so, it is also important to record those interviews, since journey maps will make sure you are going to design the right product.
Analysis of market and competitors — At the first stage, it is essential to carry out efficient and honest competitive analysis, to define whether the market conditions are appropriate to introduce your product. The discovery phase will help you validate the market and analyze the competitors. It may also demonstrate how your product can excel.
Doing discovery at the project start helps to set the direction for the whole team and share a common vision. Here, we enumerate some roles which can form a typical team in the discovery phase:
Business analyst is in charge of analyzing the market and competitors. The role also means establishing and monitoring the quality of data metrics and the reporting process;
Project manager oversees planning and organizes meetings with the customer to ensure cooperation, this role also implies preparing the necessary documents for the discovery phase;
Technical lead determines the technical requirements for the required features and is in charge of technical software solutions;
UI/UX designer works on product usability, navigation and innovative design;
Solution architect is responsible for creating the solution strategy for a problem statement and defines the logic of all project stages.
In practice the number of team members is dependent on how complex your software development project is and what its goals are. The following checklist will give you an indication of when the discovery process can be initiated:
- Team members have relevant experience in developing similar products
- Requirements for integration with third parties (if applicable) are specified
- Specifics of a certain region is known, e.g. customer preferences, regulations, and how to deal with third parties
- Examples/templates of previous discovery documents are consulted
- Process of documentation management is defined
- There are appropriate tools/systems (for example, Google Drive, Confluence) to store documents
- Client representatives are available for participation in the discovery stage.
If all the points are already ticked off, the discovery process can be initiated. The development team and the client can start defining the foundations for software development, so that the final product fulfills expectations right from the start of your IT project.
At the beginning of a new development project, it is recommended that you initiate the discovery process to know how all future tasks can be completed, as well as how to achieve fruitful results. Such an approach will help eliminate the danger of getting an ineffective solution at the end and save on unexpected extra costs during the project. There are also other benefits of doing the discovery stage. Its predicted results for a business, technological solution and the overall project vision are just some of the most important ones. We believe that the discovery stage can bring a lot of added value to the development project. David Hussman once said: “Yet while the ability to deliver frequently is valuable, if you don’t know where you are going, it is easy to iteratively not get there.”