Custom Web and mobile apps, once the exclusive purview of large companies with vast resources, have become a common hallmark of successful small and mid-sized businesses. Externally, apps can offer deeper engagement with customers through online and mobile access to useful tools and information. Internally, they can help workers communicate more effectively with highly customized real-time data on their desktop and mobile screens. But reaching the promised land of apps and money can be daunting, and not every app development adventure ends in success.

If you want to put a custom app to work for your business, you'll first need to make one critical decision: Should you outsource it, or try coding it in-house? This decision is so fundamental that many people overlook it entirely without even realizing they have options here. And failing to consider it carefully can cost your company dearly in both opportunities and money. We'll examine some of the most significant factors to help you make the best decision for your business, and give you a sense of what you'll experience if you decide to go the DIY route.

Assess your business's app needs

Does your business really need a completely new app, or will you get more benefit from an existing package that can be tweaked to meet your needs? The answer to this question depends largely on what you're looking to accomplish. If, for instance, you just want to add blogging or social media feeds to your website, you can get the job done with any number of free, easy-to-configure options. Or if your goal is to improve internal communication about customer accounts, you'd almost certainly be better served by a proven customer relationship management (CRM) package than by a homegrown database app.

If, however, your idea is more novel, like, oh... let's say you wanted to crank up customer engagement at your landscaping business with an app that lets customers submit sketches and pictures of their yards, then you'll probably have to go totally custom (or at least build your solution out of a variety of existing components).

Do you need your app to work on a specific platform, such as iOS, Android, or Windows? Do you need cross-platform functionality? The question of whether to create a native app that runs on a specific platform or a responsive Web app that can run on any device with a browser shouldn't be taken lightly. The answer will depend on how the app will be used, as well as your budget and development time. Native apps typically require more development time than Web apps, and if you need the app to work on multiple platforms, going the native route can double or triple your up-front costs and add considerable expense and complexity to the maintenance of your apps.

Naturally, the importance of the app and the data it will manage are essential considerations, too. Regardless of whether your app is totally original or built from an off-the-shelf platform, apps that will handle sensitive data or that are critical to the functioning of the business can demand a different level of investment and diligence than apps that are merely nice to have. For sensitive, business-critical apps, it's usually advisable to put development in the hands of the most proven, experienced dev team you can get to ensure the data is handled securely and the app is optimized for performance and reliability--for the overwhelming majority small and mid-sized companies, that means an outsourced team.

Time is also key factor: Do you need this app launched with full functionality within a few weeks, or can you afford to give it more time, launch with a small set of features, and then iterate? If you need the whole thing working at launch time and don't have months to spare, outsourcing is likely again the best option. But bear in mind that even outsourcing development can take longer than many people expect. Development timelines are one of the most contentious issues between dev consultants and their clients, and business people are often shocked to discover that what they thought would be a quick, simple process is bound to take several weeks longer and many thousands of dollars more in development costs than they expected.

The pros and cons of outsourcing development

Handing your dev work over to an outside contractor can seem like a no-brainer for a business with substantial resource constraints. And in truth, there are plenty of benefits to relying on outside talent. But there are also some downsides to entrusting important dev work to outsiders. Here's a quick list of pros and cons.

The biggest benefit you'll get from an outside dev contractor is peace of mind. Assuming you vet your contractor thoroughly beforehand and scrutinize their references and examples of past work, you can enjoy some assurance that you're dealing with someone with a proven track record of shipping high quality apps in a timely fashion. Experienced dev consultants can counsel you to avoid potential pitfalls, narrow the scope of your app's functionality in ways that will benefit your users (the importance of this cannot be overestimated), and plot a development strategy to build the best possible app for your needs.

Experienced developers will also save you a lot of time on the front end. Not only will they most likely already have the required technical knowledge to build your app, but they'll probably also have already built something similar. So you can get often get your app up and running within several weeks rather than several months.

At the same time, these benefits often come with some potentially frustrating complications. Experienced developers are in high demand everywhere, and they command high consulting fees. Those fees don't stop once the app ships, either, since bug fixes and security updates will require additional work on an ongoing basis. There's no such thing as a totally finished, bug-free app. Budget accordingly, and hope your contractor sticks around to help with the maintenance.

Communicating with outside development teams can be surprisingly challenging for many in the business world. Business people often underestimate the complexity that goes into coding even a relatively simple app, and software developers often lack important insight into a client's business structure, team dynamics, and objectives. Miscommunication with an outside dev team can cost you time and money, so be sure to appoint a talented project manager from within your organization to ensure smooth communication with the developer.

Be especially vigilant to resist what developers call "scope creep." This potentially project-wrecking phenomenon occurs when clients fail to express important feature requests early in the process, assume that a common or popular feature will be included even though it hasn't been explicitly discussed, or decide they want to add new functionality after development has begun. Adding new features changes the scope of the project, and that typically translates to more money and time. Because of this, misunderstandings over project scope can damage relationships between clients and developers in ways that ultimately undermine the quality of the final product.

The best way to avoid scope creep is to diligently itemize every feature you want to see in the final product before any work begins. If you want to be able to search your customer database by hair color, make sure that feature is clearly accounted for in writing early on. It's also worth heeding your developer's advice on this front: Experienced developers can help you spot extraneous feature requests early in the process, and you may be grateful for the resulting savings in time, dev costs, and reduced complexity, even if it means your pet feature has to die in the womb.

Perhaps the biggest downside to outsourcing is the missed opportunity to build institutional knowledge about the app itself. As data becomes increasingly critical to business operations, it's good to have staff on hand who really know the ins and outs of the software that drives the business. Custom apps built by outside contractors present a unique problem for IT teams, because ongoing support generally depends on the availability and affordability of the contractor who built the software, and switching developers can be difficult and costly for highly customized apps.

The DIY approach

Tackling Web and app development in-house can offer some distinct advantages over outsourcing, but there are significant barriers to entry and some ongoing challenges as well. Here's a short list of the most striking pros and cons.

It's worth noting here that, for the time being, I'm deliberately ignoring the prospect of just going out and hiring an experienced programmer to join your team. Doing so can, obviously, help overcome many of the cons on this list, but it also comes at considerably greater expense than either of the options we're discussing in this article, since experienced programmers command salaries well above the six-figure mark.

The most urgent fact to focus on when considering cultivating in-house development talent is that the learning curve for software development can be immense. It's not excessively trite to say that some people just aren't cut out for it. Learning to code requires a highly analytical mind with a penchant for abstract thinking and incredible attention to detail, as well as a serious investment of time and mental focus. Those who succeed at it generally bring a single-mindedness to the work that eclipses their ability to focus on other things. (And make no mistake: Tackling custom app development will absolutely limit the candidate's ability to work on other projects.)

DIY development only really makes sense when you've got someone on your team whose background and interests already align with the task. Good prospects include IT staffers who've built some websites already or done some software customization or scripting in the past, or otherwise highly analytical types who enjoy delving into deep, thorny tasks and don't lose their cool in the face of apparently unsolvable problems. (Apparently unsolvable problems are a daily occurrence in the life of a developer, and the thrill of solving them is like crack to a good coder. So pick a tenacious geek and give him or her plenty of support and latitude to learn, explore, and create.)

A warning to sole proprietors and very small companies:Programming is massively time consuming, and development projects often require way more time and resources than we estimate on the front end (even for professional dev teams). If you can't afford to devote a full-time worker to nothing but programming for several months, you're better off outsourcing the project. If you're a sole proprietor thinking about doing your own dev work on the side, be prepared to sacrifice all of your nights and weekends for several months just to get started. I'm not saying it won't be worth it, but if you've got a family or a social life, you're in for quite a shock.

The right choice for your business

While it may be fair to say there's no right answer here, one approach clearly brings more risk than the other. Training and cultivating a new developer from within your own ranks is a tough proposition that offers no guarantee of a great app at the end of the process.

However, the cost of that risk can be surprisingly low in comparison to the cost of a development contractor. Sending a $60,000-a-year IT worker to dev training and giving him or her a few months to create an app can set you back less than $30,000. By contrast, a single fully customized, data-driven app built by an outside consultancy can easily cost you $30,000 to $50,000.

So if you've got time on your side and you'd like to build up some development talent within your organization, investing in in-house development resources can be a smart move over the long run. If, however, you need the assurance of rock-solid reliability and security within a shorter production cycle, you're better off enlisting the help of a proven development contractor.

This story, "DIY dev: should you build your own app?" was originally published by
PCWorld.