No two software projects are alike.
Whether it’s a retailer looking for an ecommerce site to sell imported goods, or a financial services company seeking a complex system integration to facilitate transactions, development teams need to make sure they fully understand how to support a client’s objectives and create an ROI for the business, no matter what they’re building.
But this isn’t easy.
If a development team doesn’t ask the right questions to extract proper requirements and get a full understanding of the client’s business needs, the project and all parties involved will likely fail the development and management of the product. If you’re not on the same page with your client, major problems are bound to present themselves.
Unfortunately, this is not an uncommon problem. Requirement errors on software projects:
- Cause 47% of projects to miss their goals
- Require 80% of rework and are attributed to 50% of project defects
- Lead to problems costing 200 times more to correct in a launched project
Knowing what to know
One essential step to avoid failures in development is to gather the right information from the right people before the real development lifecycle kicks off. While all parts of the software development lifecycle are critical, the discovery process is too often overlooked and sped through to conserve time and money. This is a mistake, because the discovery process is incredibly important to the success of the overall project and needs to be exhausted before moving forward.
Typically, development teams are creating solutions based on specific problems. Whether it’s fixing something that’s actually broken, streamlining a process or automating a solution, we’re turning to technology to solve a problem. Without the time spent on full discovery to fully understand the problem, the solution could hit a roadblock. There’s a lot that goes into the technical architecture of a technology solution and certain decisions need to be made in the beginning in order to achieve the maximum benefit. Everything from the language something will be developed in to the tools and people used to develop it need to be planned out and agreed upon in advance.
Based on 16+ years of experience developing custom software solutions, here’s how we approach the initial discovery process and start to the SDLC cycle at Liventus.
Step One: Extract Information from Key Stakeholders
We approach discovery as an extraction process. We need to extract a lot of information from stakeholders on what’s working, what’s not working, and what needs improvement, as well as broader questions like what the goal is for the technology over the coming years, what the state of the business is now, and how this new tech is going to improve or impact it.
We talk with decision makers — whether that’s the CEO, CIO, or IT manager — and get discussions happening that force communication, both one-on-one and in a group. It’s amazing the different types of information you get in a one-on-one conversation vs. in a group setting.
The key is that, with our in-depth experience developing technology solutions, we come in already knowing what questions to ask and how lead the information gathering so that it will guide the project without wasting time. During this process, we keep an open mind, ask open-ended and well-prepared questions, then listen closely to the responses. We review the information gathered with the team afterward to make sure everyone understands the needs.
Note: While agile software development allows for some flexibility, without a comprehensive approach to the discovery phase, your agile development cycle may never get off the ground
Step Two: Review Infrastructure
After we have extracted the information we need, our DevOps team reviews the technical aspects of the client’s existing environment. We find out what applications, business applications, legacy systems, ERP, web and other platforms they’re using. We learn about their technology team.
Knowing what they already have in place and how well it works saves time and expense by avoiding redundant development efforts – optimizing the use of existing infrastructure and human resources. Then we get a good idea of how the client is leveraging these resources to support its business processes, reviewing what works and what doesn’t. Is there a solution in place that might address some of their new requirements?
Step Three: Collaborative Brainstorming
We love technology!
At Liventus, we bring together the people necessary on all sides to brainstorm the best solution, using the latest virtual conferencing technology to collaborate with video and digital whiteboarding with all parties involved. This all starts on day one so that everyone is on the same page.
This is not to be confused with requirement meetings. But before planning and even pre-planning meetings take place, it’s important for everyone to agree on the direction of the overall project. We’ve extracted all of the information that we as a development team need to know; now we collaborate together to step through everyone’s combined vision.
We lead brainstorming sessions to bring together important contributions from all sides. Since everyone has differing opinions on how certain things should work, this kind of environment is important for reaching unified agreement. There are no “wrong” answers in these sessions. Once complete, we work with the group to tailor down the information into an outline that everyone can agree on.
Step Four: Establish Goals, Set Owners
After we’ve successfully extracted the project requirements, it’s time to set some clear goals. Many times this revolves around a phased approach – what are we setting out to accomplish in “phase 1” or “MVP”? What’s the timeline? What’s the budget? All of this comes out naturally through our process.
Once the goals are defined and the product owners are set, we can start our systems development life cycle (SDLC) and the creation work begins.
Understanding Agile and SCRUM
The process model that we adhere to (depending on the client requirements), is Agile using SCRUM.
Agile software development is an approach that allows requirements and our solution to evolve over time and with constant collaboration between our development teams as well as the cross-functional client teams. It is adaptive for every part of the lifecycle and allows for continued improvement over time.
Using SCRUM within Agile helps break the development iterations out into sprints, creating daily communication and defined sprint schedules. We have found this process to be the most successful in our software development solutions, minimizing time and budget while maximizing results.
Thinking like the client
Throughout the requirements elicitation process, it’s always important to consider your client’s business as your own.
We think about how thorough we would be if we needed to address one of our business’s critical needs. What kinds of functionality we appreciate in our own work. And how we expect our systems to function.
When we do that, whether working on an ecommerce platform, big data analytics, a mobile app or an ERP implementation or automation – we are more likely to get accomplished what the client actually wants and needs, leading to more happy clients over time!