This a great question that many early and especially bootstrapped startup's ask. So let's answer this by asking these 3 questions:
So, how do you strike the perfect balance?
1 - Does anyone at the startup know how to read code? If the answer is no, I recommend sticking with the outsourced team until you do have someone in house that can read code. I'm not talking about the people responsible for building the product, I'm talking about someone else. You need checks and balances here. How will you know if the in-house development team is creating quality code if no one else reviews it? If you don't have someone that can read code, I recommend hiring a technical adviser. We can actually help you review the quality of an in-house team on a periodic basis so if you do want to use in-house developers but can't yet afford or want to hire an experienced development manager then we'd advise going down that route.
2. Is the demand for development work steady or variable? For example, if you hired an in-house team, would they write code and release a product, and then have nothing to do for 3 months while you marketed the product? If the development demand is variable, it's more cost effective to stick with the outsourced team so you can easily ramp down when you need to. The same scenario exists if you just want to build a prototype to pitch to investors or if you want to build a minimum viable product to go fast to market. You might not want to hire a full in-house team until you've got through either pitch or MVP stages.
3 - Is software development your core competency? For example, if the leadership team are experts at retail and your business success relies on your success with forming relationships with key retail brands, then learning how to manage a software team might be a distraction. If figuring out how to grow and effectively manage an in-house team seems like a huge obstacle and will largely distract you from growing your business, it's a good investment to stick with the outsourced firm for now. You can always move things in house down the road once you gain some traction. If, on the other hand, software development is your core competency and doing it better than anyone else is the key to your success, I'd recommend working towards moving it in house. This process, if done well, can take 3-6 months, so I'd recommend using the outsourced firm to bridge the gap while you work toward that goal.
We are experienced in all the above scenarios so feel free to contact us for a chat if you want sound out options with us.