Want a custom app or site for your business, but don't have the skillset to pull it off in-house? There's no shortage of dev contractors out there to help you, but choosing the right one can be nerve-wracking, and getting optimal work from outside help isn't always easy. In this article, we'll explore the most common ways things can go wrong with outsourced dev projects and what you can do to ensure the best possible output from your contractors.
You deserve great work from anyone you hire, and the overwhelming majority of developers out there live to deliver great work for their clients. Sometimes, though, the process just breaks down. Even assuming you've hired a genuinely talented contractor to build your app, a lot can go pear-shaped on the road to project completion. This is true of any kind of contractor relationship, of course, but it's a particular concern for creative projects like app development, where subjective perceptions of how things are and how they ought to be leave lots of room for mismatched perceptions and misunderstandings.
How it should go
In an ideal world, your developer would be both a skilled technician and a trusted advisor, knowledgeable about the wide world of software engineering and attuned to the needs of your business and the demands of your specific project. He or she should quickly and confidently guide you through the process of scoping out your app and then communicate clearly throughout the development process while steadily hitting established deadlines as your app takes shape.
In broad strokes, the process of creating your custom app should look like this.
2. Scope Alignment
In the Discovery phase, you'll communicate your goals and expectations, and your developer will work to build a clear understanding of what it is you want to accomplish, what's most important to you, what's optional, and what you're expecting to see at the end of the project.
Once you've communicated all of your expectations, it's time to capture a clear picture of the project's scope. Scope is the full range of your app's features and capabilities. For most projects, you'll have a set of lists and diagrams describing the scope. For instance, a list of itemized features, a diagram depicting the way the app will work. Perhaps some mock-ups of the app's various screens. This is the point at which you and the developer come to an agreement about what it is that's going to be built.
With discovery and scope out of the way, it's time to start coding. Depending on the complexity of the project, this can take anywhere from a few weeks to several months, and may involve just one programmer working alone or could involve many engineers working in teams to create specialized components of your app. For a small project, expect to work with one developer, and perhaps a designer (to build the graphical interface for your app).
When your app is built, it's time to ship it. For Web apps, this stage is commonly referred to as production. Regardless of whether you've built a mobile app, a desktop app, or a Web app, you should look at this phase as an ongoing part of your app's development cycle. Apps are never really "done". There's no finish line. Now you can think about maintaining and enhancing your app.
Choosing a good developer
When you're ready to look for a developer, you'll find no shortage of options. Local freelancers, specialized firms, and online "app builder" services abound. Assuming you care about communication and dependability, it's not a bad idea to work with someone within your region. Sure, plenty of offshore firms can do very good work, but if you're new to the dev process, you'll appreciate the availability of a developer who's in your own time zone, and better still one who can come into your office for key meetings.
Hit up the usual suspects: Ask around in your circle of friends and colleagues. Google "software developer" together with your zip code or the name of your area. Post your job on Elance. If you're in or near a major metropolitan area, you'll have no trouble turning up a dozen or so compelling candidates. If you want a mobile app, include that in your search. iOS or Android? Does it matter to you? Be specific, and you'll find more fitting results.
Once you've got your list of prospective contractors in hand, start assessing them. Visit their websites and look for examples of recent work. Look for testimonials from businesses like yours. Call their references.
There are three essential questions to ask about a prospective developer:
1. Do they communicate? -- Building a custom app is all about good communication between you and your developer. A good contractor will go out of his or her way to fully explain anything you don't understand about the process, and won't shy away from tough questions or judge you for asking "dumb" ones. If you're at all hesitant about the clarity and candidness of a candidate's communication, that's a red flag. If you hear terminology you don't understand, ask about it.
2. Do they know their stuff? -- While there are no guarantees in life, you should be relatively safe with a developer who has built something similar to your project before. Ask every candidate for examples of recent projects like yours. Look closely at those examples. Do they work the way you'd want them to? Do you like the way they look? Pay close attention to little details, like whether buttons line up nicely where they should or how text fits into boxes. Good, clean design is often an indicator of skilled work on the back end. Or, more to the point, sloppy mistakes on the surface often indicate sloppy code underneath. Be sure to ask their references about the development process to get a sense of how well the developer handles bug fixes. All software has bugs, and one of the most significant differences between a good programmer and a bad one is how they handle fixing the bugs that pop up in their code.
3. Do they ship on time? -- Given enough time and money, anyone can build an app. But since it's your money and time we're talking about here, you need a contractor with a proven track record of shipping working apps on time. Again, ask their references.
Define your app's scope
Once you've found a candidate whose communication skills, past work, and shipping track record withstand your scrutiny, it's time to start scoping out your app with a round of discovery.
Discovery is all about surfacing the details about what you want your app to be and do. A successful discovery phase sets a project on a smooth course toward completion by clarifying expectations, dispelling misconceptions, and solidifying actionable items.
This is the part of the project where you and your developer learn from each other. A good developer will listen intently during the discovery phase, take copious notes, and ask thoughtful questions to better understand any nuances about your goals and objectives.
Bear in mind that this process requires not just a good contractor, but a good client as well. You can be a good client by coming to the table prepared with the following:
1. A clear description of what your app is going to be. If you haven't yet decided what you want a developer to build, hold off until you do.
2. A short list of key features your app must have. Keep this to the essentials only. These should be only the most basic capabilities that make your app your app.
3. A prioritized list of optional nice-to-haves. These are the nifty extras that will help make your app fun and interesting. Don't feel that putting these on a separate list from the essentials will force you to leave them out. A good developer can work with you to build these into the project's scope, and prioritizing them increases your odds of ending up with a great app that ships on time and includes the things that are most important to you.
4. Examples of similar apps that you like. The more the better. Be explicit about what it is you like about these other apps. Seeing what you like, and understanding what you like about it, will make your developer's job easier and ultimately save you time and money.
Your contractor may ask you for some additional information or ideas at the outset. Once you've collected all these things, take plenty of time to sit down with the developer and review all of it. Answer their questions as thoroughly as you can. Be as expressive as you can be.
All the while, be sure to maintain a clear sense of your priorities. Software development is typically defined by compromises, and adding certain kinds of features can limit your capacity for creating other kids of features. The clearer you are about what's most important to you, the better equipped you'll be to cut the rope when you're forced to choose between two conflicting options.
Be sure to communicate clearly about the project timeline, the expected ship date, and any interim deadlines for various components of the project. Be clear, also, about how you and the developer will handle future support for the app. Is he or she going to be available to fix bugs for some period of time after shipping, or will those be handled under a separate contract? Get these details in writing. Neither you nor the developer wants any surprises on this front.
After the discovery phase, your developer will present you with some documents that capture the full scope of the project. Be sure to review this thoroughly, line by line, diagram by diagram, before you sign anything. These scope documents are a map to your project and what you can expect to see once all the work is done, and most contractors will charge you extra if you later demand features or design touches that aren't explicitly included in the project scope. If anything looks wrong now, speak up, and get it changed before you sign off.
Once you've signed off on the project scope, your developer will get to work building your app. If it's a simple app, expect the developer to disappear for a couple of weeks and come back with some kind of working code. For more complex apps, you may have a series of deadlines for specific portions of the project. These details should be established in the project scope.
The key concern during this part of the process is to thoroughly examine whatever completed code you're seeing to ensure that it meets your expectations and complies with the scope of the project. Your developer should give you a thorough demonstration of the features you're looking at, explain them in detail, and give you an opportunity to try it yourself. Again, if anything seems off, be vocal about it now. It may well be that you're just seeing early code and that the developer is aware of some or all of the bugs or oddities you're noticing, but don't count on that.
In the 21st Century, there's no such thing as finished software. Apps need updates to stay ahead of the latest security threats, and users demand new features over time. Once your app ships, take a minute to knock back a glass of bubbly with your developer, and then start planning the next steps.