Your development team — whether in-house, outsourced, or a combination thereof — is often crucial to your product’s success. But choosing how to build your team can be difficult.
My company, SmartLogic, does outsourced application development, and through this work, I’ve witnessed these various methods in action. Depending on the needs and stage of your product and company, each model has serious merit. In our 10-year history, we’ve seen companies try to use outsourced development when they would be better off building their products in-house, and vice versa. Outsourced development companies aren’t a great fit for every situation.
When you need to build an app-development team, you should carefully consider three different approaches:
- Doing all development in-house
- Outsourcing all development
- Using a hybrid model
Understanding the Constraints
When considering building a Web or mobile software product — and how to build your app development team — it’s important to consider five key constraints:
- Time: How quickly do you need to launch? Once we had a client that needed to get a prototype of their application out in time for the upcoming Y Combinator application due date. Are you unable to start development until you’ve figured out some other piece of the puzzle (a seed round or physical prototype development)? Alternatively, are there marketplace constraints on when you need to launch your product? For example, we were part of a team that was hired to fix Healthcare.gov after the problematic launch. Open enrollment began November 15th, creating a hard deadline.
- Budget: What’s your budget? Can you launch a bit later in favor of spending less money? Or do you have lots of money but need to get the product out the door ASAP? If your company is profitable but you don’t have investment capital, the slower, steady pace of development done in-house might be best. On the other hand, a client of ours ramped up development quickly when it was funded in order to move ahead of its competitors.
- Long-Term Plans: Are you building the next Facebook (meaning you’ll have a steady flow of work, thereby necessitating that you hire thousands of engineers)? Or are you building a product where your development needs will ebb and flow or be seasonal in nature? We have a client that makes teaching evaluation software. The client ramps up development right before the school year begins, but becomes quiet during the year. It doesn’t have a steady need for a team of developers.
- Your Experience Hiring and Managing Developers: As with any type of specialist, if you don’t know how to manage developers, you are setting yourself up for failure. Someone involved with the project should have experience managing developers, or you will have an unhappy team and a bad product (whether you insource or outsource). Developers are passionate about creating clean, theoretically sound code. If you ask them to cut corners for speed or budget, you will create low morale.
- Your Experience Developing Software Products: If this isn’t your first rodeo, then you’ll have a better handle than most on what resources you’ll need to get your software built and launched. If you don’t have experience developing software products, you might think hiring one developer will get the job done when you actually need eight. Research the processes required to manage projects efficiently.
A Few Different Approaches
Based on your specific situation, you’ll likely pick one of three approaches. Below is a brief overview of each and when it might be most appropriate:
- In-House: In this approach, you’ll do all product development with your own staff. It’ll take longer to get your product to market, but it will be the cheapest approach in the long term. Facebook is the classic example of a company that succeeds with an in-house development team. Facebook needs teams of developers for maintenance, as well as teams to add new features. The thousands of developers working at Facebook will always have work to do. When developing in-house, it helps to know what you’re doing and what you will need.
- Outsource: This approach is generally more expensive in the short term, but allows you to quickly ramp up development resources and launch sooner. While it helps if you’ve had experience managing the development process, it isn’t a prerequisite. Many of our clients are startups that need to hit the ground running, so they bring us in. But as they expand, they move their development in-house.
- Hybrid: You can also do a combination of both. You won’t need as much experience developing software if you hire the right people. We’ve partnered with companies who are growing too quickly to keep up with their development needs internally, as it can be hard to recruit and train quickly. For example, one of our clients has full-time developers on staff, but outsources specialized projects to us when they need to.
How you decide to build your development team depends on your specific situation. Outsourcing isn’t a magic pill for every team; often, it’s better to develop your product in-house. Use the constraints described above to help evaluate your needs.
Keep in mind that no matter how you choose to develop your product, you won’t succeed unless you have strong leadership. An outsourced development team can be a piece of this puzzle, but you can’t outsource everything. The best companies we work with have strong leadership in-house. If your team’s leaders don’t set a strong direction for the product and can’t quickly make decisions, then the technical team responsible for building your product will struggle, wherever they are.
A version of this article was originally posted on the SmartLogic blog.
Yair Flicker is the president of SmartLogic, a custom Web/mobile software development company based in Baltimore. He also runs operations for TeamPassword, is treasurer of Bikemore, and is on the board of Emerging Technology Centers.