A successful business professional – let’s call him “Jack” – had an idea for a specialty business app to address a huge challenge faced by his customers, and already had strong interest from several of them. They loved the idea. And they were ready to commit real money.
There was only one problem. Jack wasn’t in the software business. He had no app development team, and was as non-technical as they come.
A friend referred him to a programming company down the street. They sounded like they knew what they were talking about and told him exactly what he wanted to hear. “We’ll get that done for you in three months. No problem.”
After about six weeks of “It’s coming along great!” and “We’re making real progress!” he started to get nervous. He hadn’t seen anything actually working yet, and kept getting vague answers when he asked for progress reports. He asked to come over to take a look at what they were doing.
After a half hour in their office he felt a deep pain growing in his stomach as he realized just how little progress they had made. He was sweating, even though the air conditioning was cranking. He had only one thought: “I’m completely screwed.”
The company did eventually deliver…four months late. But the app was buggy and slow. Jack’s customers stuck with him for a little while, but quickly grew tired of waiting for an app that actually worked. All but one of them abandoned their commitment.
Don’t Be Jack
For non-technical business leaders, it’s easy to feel held hostage by custom software development companies.
With just a few questions Jack could have been empowered to make a better decision about which company he should go with. Not only that, he could have had much better visibility into the project along the way.
Use this post as a cheat sheet when evaluating development companies for your next custom software development project to avoid making the wrong decision.
1. Will I have an ambassador on the team?
The number one critical success factor on custom software development projects is ensuring there is one individual who is responsible for conveying your vision to the team. They are the one person with overall responsibility of making sure what the team delivers is aligned with what you want.
Depending on the company they may call this role something along the lines of “Team Lead,” “Project Lead,” “Project Owner” or “Product Owner.”
They key thing you’re looking for here is ensuring that you have one point of contact to talk about what you want. They should be in charge of translating your wants, needs and desires – i.e. your vision – to the technical team members throughout the project.
To be clear, this is someone that the company should provide. You shouldn’t have to embed your own team member on the team to get what you want.
2. Will I see regular demonstrations of shippable software?
With software development there is one – and only one – metric that matters: shippable software.
Shippable means just that: as far as the team knows, what they’re showing you is ready to put into end-users’ hands. All of the coding, testing and bug fixing has been completed. If end-user documentation is required, that’s done too.
You should see a demonstration of all of the completed, shippable features on a regular schedule, typically every 2, 3 or 4 weeks depending on the company’s process.
Once you see a set of features you’d like to ship, the team should be able to prepare a version for release, do their final testing and publish it the app store in a couple of weeks.
(Keep in mind that your iOS app may not appear right away in the Apple App Store, since there is a manual review process and that can take some time. The Google Play store doesn’t have this restriction so your Android app should be available in a few hours.)
3. Can I change priorities along the way?
At the start of a new project, you usually have a fairly good idea of what you want, but things change over the course of time as the app gets built.
As you see the app coming together, and as you start to demo it your prospective end users, you’ll get feedback. Many of those ideas will go into the “future features” list, but some will be so important they can’t wait.
You want the ability to adjust priorities along the way, as certain features become more or less important.
4. Do you build for all platforms simultaneously?
In some cases you’ll decide to target only one platform. For example, if you’re looking to penetrate a niche market that has 95% iOS users, you might choose to build the app only for iPhones and iPads.
For most apps you’ll want to release an app for both iOS and Android at the same time, to avoid alienating half of your target audience. (You might be surprised to learn that Android is the #1 overall platform, both worldwide and in the US.)
If you want to release for both platforms at the same time, the app should be built and tested on both platforms all along the way. Otherwise, the app really isn’t “shippable.” (See question #2 above).
5. How much code do you share between platforms?
A few years ago there was only one way to create an app that runs on both iOS and Android: write it twice.
Today there are technologies that let software engineers write code once and share it on both platforms. They write “core” code that is included in both the iOS and Android apps, so they don’t have to write it twice.
The mobile app development company you’re talking to should be able to share a lot of the code they write between mobile platforms. They shouldn’t need to write the entire app for Apple iOS and write it all over again for Android.
This approach saves a huge amount of time–and your money–not only for initial development but when you want to make adjustments later.
The amount of code that can be shared varies, but using the Xamarin mobile app development platform we’ve been able to share as much as 90% of the code on some projects.
6. How often will the schedule be updated?
Initial proposals should include a timeframe, but what happens when you decide to start making changes (see question 3)? You need to know what impact that has on the project schedule.
App development companies that know what they’re doing should be able to provide an updated schedule every time you get together to review progress, as long as they’ve built a few features to get a feel for how quickly the project is actually moving.
7. Will you provide exact dates or a range of dates?
Custom software development is a moving target, and it’s extremely difficult to predict in an exact manner, though there are proven techniques to estimate the required level of effort.
Because of the degree of unknowns, you should always be provided a range of dates whenever the team provides you with a schedule.
If they give you an exact date, it’s almost certainly going to be wrong.
8. How does the date range change over time?
Early in your project, there are a lot of unknowns. After all, no one has ever created your specific app before.
Before the project starts, the date range should be fairly large–as much as plus or minus 50% –but as the team starts to build your app, this range should start to get more narrow. They’ve gained experience with your app and they know how long things are taking to complete.
After six to eight weeks they should be able to narrow the range to about plus or minus 10%.
9. Do you write automated unit tests?
A key aspect of moving quickly and keeping the app shippable at all times is leveraging automated test tools to detect any bug that might have crept into the code.
As the app grows, this becomes more critical. After a few months of adding new features, there’s no way the team is able to manually test everything and demonstrate shippable software every two or three weeks.
An important tool for the team to use is automated unit tests. These are code-level tests that are run automatically, typically every time code is added for a new feature. If anything was broken by the new code, the test tool will immediately alert developers so they can fix the issue before moving on.
10. Are bugs fixed before creating new features?
Bugs are a problem if you want to know how long it’s going to take for your app to be done.
Why? Because the time to fix an individual bug is almost impossible to predict. Some bugs can be fixed in a few minutes. Others can take days of painstaking research, experimentation, and the developers pulling their hair out. That’s the nature of custom software development.
If bugs are left un-fixed, they’ll start to build up and render your schedule worthless. The team might predict, correctly, that new feature development will be complete in about three weeks. But they have no idea how much longer it will take to fix all the bugs in the list.
They may be telling you it’s three weeks…when it’s actually three months.
The mobile app development companies you’re talking to should recognize this and have a policy in place to “fix bugs first.”
11. What kind of support will I get once the app is released?
Getting the app into the app store is only the first step. Once your end users start using the app they’ll have lots of suggestions. They’ll also discover bugs that didn’t come up during the development process.
You’ll want to make sure the company you select is ready to support the app. They should be prepared to answer your questions that come up as well as provide bug fixes as necessary.
You may want to think about keeping the team in place after the release to continue to make enhancements to the app as you get feedback.
It’s easy to feel like you lack control once you sign on the dotted line with an app development company. You might not have felt equipped to ask the right questions during the evaluation process, especially if you’re non-technical.
By digging a little deeper, you can get a better handle on whether the company is really equipped to deliver what you need.
The right company can be a huge asset, acting as a trusted virtual extension of your company that can quickly deliver on your business goals.
It’s just a matter of asking the right questions.