Debates rage on whether companies who outsource all or parts of their development can be successful or not. In a perfect world you would have a brilliant in-house team that crushes features faster then you can think them up and has previous experience building similar systems. In reality this almost never happens. While long-term reliance on a development shop probably isn’t a great strategy there are a few situations where short-term engagements make sense.
You need help getting to that next major milestone
The appetite for great technical talent is at an all time high. Good technologists can get multiple offers for market rates + equity in a startup. Maybe you can’t afford the superstar you want or your company just doesn’t have the same cachet as competitors. Having an outside team help you with your next major release could allow you demonstrate the traction you need to get investment or attract that elusive hotshot developer.
You need outside expertise
Sometimes your in house team just doesn’t have the right sort of skills. Need a Facebook app or help optimizing your Mongo cluster? Finding a team that has done this before could save you time, money and heartache. Ideally you can have this outside team mentor and bring your insiders up to speed.
You have significant time contraints
Want to get in the App Store before the new iPhone hits stores? Have a competitor launching a new product? Have an external deadline by a partner? Hiring takes time. Augmenting your team with outside talent in short bursts can be effective.
What should you look for in a dev shop?
So you’ve decided to take the plunge and hire a team. How do you know which team is the right one? What do you look for? What questions should you ask? Here are some things to look for:
The most important thing when choosing a partner is finding someone you feel comfortable with who understands your vision. Do they “get” what you are trying to do? Do they listen (really listen)? Do they ask the right questions? Do they speak your language? Do they have the right “context” for the business you are trying to build? Do you have a clear understanding of their process? Many times it’s hard to get this level of comfort with an offshore team. Even though local teams will probably be more expensive, the end results are usually better because of easier communication and shared context.
Is their work awesome? Do you see multiple examples of projects they’ve done that you are impressed by? Have they worked on projects similar to yours? If not, have they worked with clients similar to you (in terms of size/stage/industry)?
Always ask for references. The company will probably send you the three clients that love them the most, but dig a little deeper when speaking with them. Ask tougher questions. What were you surprised about when working with AwesomeDevShop? How did they do compared to your initial expectations? Where were they strongest? Where were they weakest? If you could do it over again what would you do differently? Was the timing or pricing different from what you initially agreed upon? Did you need to go back to them after the project was over for more work? How was that interaction? Would you work with them again? Not everything will be glowing but you should have a realistic expectation of what you are getting yourself into.
Finally always remember that software is never complete. While a dev shop can be a great stop gap solution, you’ll be responsible for owning the code once they leave. Make sure you have a clear exit strategy and an understanding of how you will handle ongoing maintenance and support.