This is probably not your first time hearing this (especially if you’ve built software before), but it bears repeating: software projects are notorious for being delivered late and over budget. Successful software development is a process of discovery. To start building software with an idea and walk away with an application that does precisely what you had envisioned it would do on day one…inconceivable!
It is inevitable that requirements will change or that you’ll need a feature that wasn’t included in the initial plan in order to successfully launch your project.
Here at Foraker Labs, we use our own flavor of agile methodologies to deliver value quickly and consistently while adapting seamlessly to change, but this is not our endeavor alone. We view our clients as a part of our team, and as such it is incredibly important to us that we share with you what we have learned from 15+ years in the software business. Whether you are looking to start a new software project or have a team cranking out code as we speak, here are a few tips to help you work together with your development team to keep delivering features on time and within budget.
1) Understand and Communicate the Why
This should go without saying, but as a savvy businessperson, you and your team should be intimately familiar with the reason you are building this software and the purpose behind each feature. Your priorities will become our priorities and we will work with you to hone in on the most important pieces of your vision, which is how we can work together to decide what to build and when to build it. We believe that our clients receive the most value when we deliver the most important features (those that are most intrinsic to your vision) first.
As we progress through the process of building your project, we will constantly revisit these “whys” to ensure that neither our team nor yours has lost focus of the main motivations behind your project.
Some of the most expensive issues that plague software projects are major changes in requirements that crop up late in the game. The good news is that these are preventable with bulletproof communication. The most effective thing you can do to help prevent these issues is to make sure you and your team are on the same page about the requirements of a feature that needs to be built. All of your internal questions on the subject should be answered prior to requesting a particular feature. We will do our part as consultants to help you fully flesh out a feature and groom the details. However, if the details change after coding has commenced, it might be too late to make those changes without negatively impacting the budget.
2) Focus on the Problem, Let Us Provide the Solution
So here’s a fictitious scenario:
Let’s say your application has a feature that allows users to comment on photographs. The button to add a comment to a photograph is currently located at the end of the list of comments below said photograph. It is easy to find initially; however, as comments accumulate, that button moves so far down the page that adding a comment becomes very unintuitive because the button is no longer visibile when the page loads.
As a client, there are two ways you might address this issue. You might be inclined to…
A) Brainstorm potential solutions to the problem. You might think, “If we put the button at the top of the page where a user can see it right away, they will be more likely to comment on the photo.”
B) Focus on the problem that needs to be solved, and define it well enough to formulate a user story. You might think, “It seems that users are really having a hard time figuring out how to leave comments. As a user, I’d like the commenting mechanism to be very apparent so that I can easily post comments on a photograph.”
If you haven’t already guessed, we’d suggest option B. User stories are the bread and butter of our process. We utilize user stories to help define requirements of feature work. User stories allow us to brainstorm and build best fit solutions for problems described from the perspective of a particular user group and their desired interaction with the application.
Prescribing pre-emptive solutions to a problem can be limiting to your team because you are presenting them with a solution you’d like to see implemented as opposed to posing a problem in need of a solution.
3) Beware of Scope Creep
Scope creep is another one of the main reasons that budgets and time frames surpass estimates. It is inevitable that a certain number of stories will be added over the lifespan of a project. We plan for this by adding a roughly 20% cushion to initial project cost estimates to provide some wiggle room for details that may have been overlooked during the initial planning phase.
As a client, there are things that you can do to ensure that this 20% allotment is not exceeded. A few questions to ask yourself before adding a story to the scope of a project:
- Is this feature absolutely necessary for this phase of the project, or can we put it off until later?
- How often will this feature actually be used?
- Will there be enough usage up front for this feature to matter during this phase of development?
When you are building an MVP, it is all too easy to have eyes that are larger than your stomach. This is especially true if you are starting a new business. Many fancy features that may be helpful down the road but are costly to build, like a fully automated billing and payment system, can be performed by real live humans behind the scenes (we call this Wizard of Oz Prototyping until your user base grows to an extent where automation becomes a necessity.
4) Be Open to the Idea of User Testing
When a client is trying to trim their budget, user testing is usually first on the chopping block. This is disappointing because the reason we build software in the first place is so people will use it and it will be an improvement upon the current practices in place.
The extent and type of user testing that should be done can vary greatly from project to project. Investing money in user testing early and often can provide many benefits including but not limited to:
- Decreased bugs and defects
- A decrease in costs due to the fact that defects found early are simpler to correct
- An improved learning curve and higher retention rate of users in the system
- Decreased costs for future development and redesign work as a result of upfront feedback
- The ability to maintain focus on what matters to your target market/user group
5) Trust Your Team, Because We Want You To Succeed!
At the end of the day, don’t forget that we are working together because we believe in your business, ideas, and values. We want to see you succeed, and we will do everything within our power to make that happen so that we can continue to work together far into the future.
If you have any questions about our process, or are interested in building something with us, please do not hesitate to get in touch!