- App Projects Are Not Small and Easy
- Apps Are Not Easy to Program
- Poor Skill Set Fit
- If You Get a Good Developer, You Still Have to Worry
- The Idea Is Not More Important Than the Execution
- Unwillingness to Delegate: Micromanaging
- Bikeshedding
- Poorly Defined Requirements
- Out-of-Date Requirements Documentation
- Constantly Changing Requirements
- Leaving the Worst for Last
- Cost Overruns
- That Last 10%
- The Whack-a-Mole Problem
- Poor Communication
- Abdication of the Management Process
- Wrapping Up
If You Get a Good Developer, You Still Have to Worry
Although it is certainly true that inexperienced programmers have far lower success rates than established firms, despite what the established firms might want you to believe, there is plenty of failure to go around. Once cost and schedule overruns are considered, even established firms have an uncomfortably high percentage of failures.
The good news is that with well-established firms, in order for a project to fail, something has to have gone wrong. The bad news is that these days, things go wrong surprisingly often.
Inexperienced Members of an Experienced Firm
In the current app development business climate, demand is outstripping supply by a large margin. This causes a number of problems: Hiring is nearly constant, turnover is high, and responsibilities are in flux pretty much across the board. It’s not unusual for most or all of a project team at a reputable development firm to have been hired in the past few months.
It’s also common for existing employees to be promoted from developer to lead developer, often so there is someone to supervise newly hired junior developers placed under them. The skills needed to be a successful member of a project team are but a subset of the skills needed to lead a project team, and mistakes made when learning development supervision and project management skills can mean the difference between the success and failure of a project.
Subcontractors
Another consequence of demand outstripping supply is that firms often have more business than they can handle. Instead of turning away business, many subcontract some of their business out to other developers, taking some percentage of the revenue off the top. Since the firm that signed the deal wants to make some money, it stands to reason that the subcontractor will be working for less money than the original firm’s prices (that is, the subcontractor is almost always a cheaper developer). The communication between the original firm and the subcontractor is also likely to be inferior to the communication that the original firm would have with its own employees.
Juggling Resources
When any project at any company goes wrong, the company working on it usually tries to fix it. The good news is that if your project is being developed by a reputable firm and something goes wrong, the company will likely do its best to marshal its resources and attempt to get your project back on track. The bad news is that if your project is going fine and some other project at the firm you are paying goes off the rails, the resources on your project may be pulled off (fully or partially) to try to shore up that other project. This can have a negative impact on your project and can seem to come out of nowhere, even when a project seems to be going well.
Contractor Company Overhead
Another question with large firms, reputable or otherwise, is what the firm considers billable. Some firms consider time spent on internal activities, meetings, emails, and conferences calls billable to you, even when those activities don’t involve your project (or involve it only peripherally). This can cause your budget to get used up by activities that aren’t related to your project.
Another overhead item is hours billed to project management (often at a high rate). If your firm is billing you for project management time, you need to make sure that you understand what that time is spent on and decide whether that amount of money is worth it to you.
It’s Important to Know What You’ve Signed Up For
The solution to all these issues (and many more) is to clearly document up front exactly what you’re paying for. You need to know what team is actually going to be working on your project, what their experience is, what their relationship to the firm you are paying is, and under what, if any, circumstances those staffing arrangements might change. You need to know what the firm considers billable work and what that work will be. If you’re paying higher rates to get an established, experienced development firm, then you are paying to have experienced staff working on your project, and you need to make sure that happens.