In-house team vs. outsourced agency for building your SaaS
I spent a week researching and talking to founders. Here's what I did.
• publicNon-technical founders often find themselves in this dilemma of whether they should outsource the development of their software solution, or build it by hiring a team in-house.
I recently faced this and did a ton of research about which way is the best, the pros and cons of each, and spoke to people who have been there done that. I ended up hiring an agency. Here's what I learned.
What you get with an agency
If you prioritize speed (which you should, as an early-stage founder), go with the agency. If you prioritize quality and are fine spending weeks or months hiring good developers in-house, go build an in-house team.
This assumes you don't already have networks of software developers you've worked with in the past. Hiring becomes a bit faster in this case.
You can find, hire, and get started with an agency within a week. Hiring the right people from scratch may take you months.
Good agencies have a PM for each project managing the developers for you, which eases your burden. They also tend to have UI/UX folks and website folks, so you end up saving a lot of hiring time. You can just plug-n-play as needed.
What you don't get
You have to accept that the agency team won't be as devoted or motivated by the problem you're trying to solve. It's not the same as having an in-house team or a group of motivated developers.
They aren't going to work weekends and you'll notice they're not as devoted as you are towards your startup. This is a trade-off you must be willing to accept, as you're focused on moving the needle forward.
The alternative is losing a few weeks finding and onboarding the right in-house developer. For me, this is a huge loss. I can literally launch an MVP in the 4 weeks I'd spend finding an in-house dev.
Some progress is better than no progress.
Things to be careful about when working with an agency
- Their incentives may be misaligned: Most agencies focus is split between getting new clients and servicing current ones. Make sure you get a couple of developers to work full-time on just your project, and nothing else.
They're also incentivized to quote longer timeframes of how long it takes to develop, you need to push timelines. The agency I'm working with right now shares daily and weekly updates which keeps them in check. - Do frequent check-ins: Start with 2-3x per week until you build enough confidence that they're working at a good pace. Give them weekly goals to hit. I've also created a notion document where they share what they accomplished each day. Maintain a trello board and monitor github daily.
- Learn to project-manage: You can be fine without learning to code, but you can't ignore project and product management. It's a skill you can learn as you go. It's important for you to be able to write spec-docs, hold a standup meeting, and plan weekly sprints. The worst thing you can do is give the developers an incorrect idea of what you want created.
- Only do month-on-month contracts: Some agencies will try to get you into project based contracts (half now, half when done). Don't go for these as you get stuck until they finish. Do a month-on-month payments and make sure you aren't signing on a 6-month commitment when you begin.
My plan moving ahead
Based on my research and conversations, I think it's best for me to work with an agency for the first couple of months.
This buys me time to hire kickass superstar developers for my in-house team without stalling development. I told this to the agency upfront so they know a transition is coming in the next few months.
You can incentivize this for them by offering an ongoing consulting role after the transition. This way they know they don't lose business and build software that they'd be accountable for in the long run.
That's it, my goal was to write something for other founders in the same position as me and share what I learnt. I'll keep updating this post as I go.
If you'd want to add something here, please reach out and let's talk!