Determining whether you should hire a developer or outsource is a big decision, one that can make or break the success of your product. I sat down with Lead Architect CK Hicks and VP of Engineering Matt Cole to see if they had an answer to this question based on their experience working as developers, hiring developers, and leading a development team. For entrepreneurs, product owners, or agencies looking for developers to build out their product, this article will provide clarity on the pros/cons of each option.
What are the options?
You typically have four options when building a product:
1. Hire developer(s) full-time to build the product in-house
2. Contract with a freelancer or an agency
3. Outsource to any international body of people
4. Build it yourself
The main factors that play into this type of decision are money, quality, speed, and the level of ownership that you want your dev team to have. By ‘ownership’, we mean that when you bring someone on internally, they will have more exposure to the stakeholders and more chances at ownership over the final product. Though we have a high level of ownership as an agency, we’re not technically in-house; we’re contracted to do work.
Good quality in development is a somewhat abstract concept. At Crema, we define high-quality code as being predictable, maintainable and well-documented. Does it do what it’s intended to do in the way that the user understands and future devs can understand? This is especially important if the code is going to be handed off to another team.
Maintainability is for the benefit of future devs or your developer’s future self. It’s also crucial that code is well documented. If one dev team is handing something off to another dev team, documentation will make or break that engagement. If code isn’t well documented, the other team will have to spend time reverse engineering it. Or worse--they’ll tell the client that they need to scrap half of it and redo it.
The cheapest option is to learn to develop yourself, though this route is going to be slower and the quality may not be as good as working with people who have spent years refining their craft. Since money is the biggest factor for a lot of entrepreneurs, it may be the only option for some. Alternatively, offshore teams are incredibly appealing because they’re cheap. You could get a team of 5-10 developers overseas for the price of one intermediate developer in the US.
By opting for the best price though, you compromise on quality and speed. You may end up spending a lot of time managing that team to make sure they’re delivering the results you want. The end product may also not be what you pictured if there isn’t collaboration. There are offshore teams that work very well collaboratively and churn out high-quality products. However, these types of teams are hard to find AND you typically have to play in their timezones.
First off, we want to start by explaining how ‘outsource’ is defined. ‘Outsource’ can mean hiring a contractor/agency within the US, but it oftentimes refers to offshore teams that have a much lower cost. There are a lot of negative connotations with the term, as an outsourced hire is seen as someone who is truly outside the team. Without collaboration, it can often feel like the product owner is throwing requirements over a wall.
What it comes down to is whether you want to spend money to get your devs integrated into your whole team and process, or whether you want to just churn out code to get funding for your product.
Crema designed an application more than two years ago. The design was beautifully prototyped, but the client decided to go with an offshore team to build it (to save money). A year and a half later, this same client came to us asking for help. Their app was so poorly built that it wasn’t going to get them to market.
We had to uncover and work through a lot of poor quality code, to the point where we had written the entire mobile app from scratch in a fraction of the time that they spent building it with their offshore team.
The moral of the story is that there are teams outside the US that do really good work, but a huge part of the problem is that you’re trying to take something and translate it through a time/space/language barrier. It can be done, but it takes a lot of framework and management on your part. It’s not the devs that make it harder--it’s the fact that you have to work on the translation while developing the product. And you can’t just hop on a call because of the time difference.
In another instance, a company was trying to fix accessibility issues quickly because they were sued for noncompliance. Their team of five in Omaha, NE was collaborating with 20-30 developers overseas, and CK (at a previous agency) would interface with both teams to work on maintenance for the product.
Accessibility remediation was forcing them to change structural things throughout the site. By the end of it, the franchise that owned the website paid more than it would have cost for us to completely rebuild the website with accessibility in mind from the get-go. They spent a ton of money to patch the hole from the lawsuits, and they wasted a lot of time/resources in the process. The company planned to start over again in the new year with a new brand, but we couldn’t reuse any of the code at that point.
In both of these cases, the client was not thinking about the long term quality of their brand. From a business perspective, there was a mismatch in understanding what the long term game was. It would have taken half the budget to build the new thing they wanted. Instead, they now have monetary debt going into the new year.
If you’re looking for someone who will be integrated as a long-term team member, it may be worth hiring outright or using recruiters. With this option, you can more easily infuse the new hire with your culture.
When it comes down to it, the decision really depends on the phase you’re in for the product you’re trying to build. If you’re trying to prove a concept and raise money, outsourcing may be a good way to do it. BUT there will most likely be a ton of technical debt that gets accrued, and you’re probably going to have to start from scratch at some point. When you hire internally, you have buy-in on the product--hopefully that developer wants what’s best for the team. It can be a struggle to hire though when your company doesn’t have a reputation yet.
How to Hire Developers
If you aren’t technical yourself (as many entrepreneurs aren’t), it can be hard to hire or outsource a team. We recommend that you make one of your first hires a CTO with a technical background, or find someone who will consult with you and be a part of the hiring process.
Here are the dangers of hiring for a job you don’t fully understand. CK said he got this message on LinkedIn earlier this month:
“I have an application architect opening that I am currently working on that may be a good fit for you. It is a direct-hire, and a role that will allow this architect to make autonomous architecture decisions and decide the direction of where a currently outsourced application will go while bringing it in house. This position is with a company that has great flexibility and values technology.”
CK broke down what this recruiter was really saying:
- There’s an app that was built by an outsourced team that they want to bring in house, so there’s already a transition happening.
- You would be inheriting what’s already there, and there’s not a lot of internal direction for this product.
- There’s going to be a lot of push and pull to make progress in these situations.
- The company values TECHNOLOGY, not necessarily you as a developer.
This is an example where you see a break in translation. When a dev reads this LinkedIn message, they see something completely different than what the recruiter is seeing. Make sure you have knowledgeable people writing your listing descriptions and reaching out to developers!
How We Hire Developers at Crema
If you decide that you want to hire a developer rather than outsource, there are a few tricks that might help you in this process. First, we’ll give you a broad overview of what our process looks like at Crema:
- We post our job listing to free job boards, like LinkedIn and Indeed. We also share these openings on our social channels.
- We try to distill applications into a set of skills that will translate into what we need. We ask:
Is this person keeping up with industry changes?
Do they want to learn and get involved in new projects?
Are they looking for the best solution?
Are they going above and beyond (ie: passion projects)?
- For those who check the boxes on these questions, we set up a phone call to gauge culture fit. We ask:
Do they fit our values?
Have they done the work they say they’ve done on their resume?
- After the phone screen, we schedule an in-person interview. We hope to incorporate pair programming into this process in the future, so we can gauge their technical expertise even better than we do now. Current interview exercises include dialogue and light white-boarding.
At the end of the day, a job is a job. People aren’t going to stick around if you aren’t compensating them fairly. Our leadership team stays up-to-date on salary averages for our area, using data that’s nation-wide. We use factors like years of experience and type of skillset to determine salary.
Since it’s a developers’ market right now, companies are paying above-average salaries to convince developers to work for them. Some of those companies are having to let people go if they lose clients or projects, because they have to pay them too much money. Since that developer is used to a higher salary, they often have a hard time finding a job that pays something similar. As an employer, you’ll need to to check these averages frequently.
Tip: Go where the developers are. KC is a big tech hub that has all sorts of developer meetups and social events. If you’re an entrepreneur that just wants to build, you can Guerrilla market your idea at coding meetups or places where devs will be. Make genuine connections with the developers you see potential in rather than spamming them on LinkedIn. In general, developers respond better at events. Here’s your pitch when you identify someone who seems interested in your idea:
“I’d really like to discuss this idea with you a little more in-depth. Can I take you to lunch?”
How Do We Retain Developers?
The main reasons we retain our developers are:
- We keep up with salary standards in the Midwest
- We offer tangible benefits that smaller companies don’t (401Ks)
- Unlimited vacation
- Results-based culture
- Developers have more of a chance to work on different projects
- We have a culture that values learning (Innovation Lab)
- Collaboration, camaraderie, and mutual respect
- Humble confidence
- There are PMs that help manage projects
- The work is honest, and we move forward at a measured pace
- We can have different opinions without it being a fight
- We stay up-to-date in the industry and keep things fresh
If you’re hiring or trying to retain developers, it’s important to have a good culture for your team. Five years ago, Crema was an extremely unique place when it came to the culture. But it’s becoming more common now to see cultures like this. At the end of the day, you’re going to lose developers if you’re not building a healthy culture that encourages learning.
App Developer Apprenticeship
Something unique we offer at Crema is an Application Developer Apprenticeship. The Apprenticeship is a 6-month mentoring program designed to train and equip technology professionals in the software development and design fields. Our goal is to provide an environment where future tech and design leaders can not only hone their craft, but learn what it means to consistently deliver a job well done.
If you have the time and patience for something like this, it can be a great way to grow an internal team on a tight budget. With this option, you can acclimate apprentices to your culture from the ground up. These hires will have no rigid practices from past experience and no muscle memory that you have to unteach. Though you can’t build an entire team this way, it’s a good way to train potential hires in the way that you do things.
Apprentices are poured into and mentored within a safe, low-pressure environment, but they’re also working within a team setting. In this way, they really get the best of both worlds.
Why Hire an Agency like Crema?
Now, you might be wondering why big companies choose to work with us instead of hiring internally. Our key selling points are our speed and quality; we’re fast because we build this stuff all the time.
We take the time to understand our clients’ stakeholders, provide an outside perspective, strive toward team integration, and lean on strategy to guide product decisions. This strategy-focused mindset can help us determine the overall scope and features.
We’re also highly collaborative and work in Sprints to make sure we’re on the same page as the Product Owner at all times. You know what you’re getting at the end of the engagement because we invite clients into the whole process with full transparency. Whether it be through weekly retros with the PM or Slack communications, we keep clients in the loop.
Some clients may be new to product (software), so they’re not sure what the long-term strategy of the product will be. They just need something to prove to internal/external stakeholders that they should be a software company…that’s where we come in. We work with them to prove their idea out, but give them the tools and foundation to hire an internal team to maintain and enhance the product.
There’s also less risk in hiring an agency vs an internal team. Because the client used an agency, they didn’t have to hire and potentially fire anyone because the product didn’t work out. In that way, it can be a lot more low-risk to go with an agency that’s built dozens of digital products before.
Another selling point for using an agency like Crema over an offshore or internal team is that we use industry-standard open source technology, which allows you to hire your own team really easily after the initial engagement is complete. If an agency is proposing custom frameworks that are proprietary to that agency, that’s a yellow flag. That means your next team will have something extra they have to learn that outside common development best practices. We have a tech stack that will be familiar for a lot of developers in the industry when you’re ready to scale.
Though our prices may be higher, we do whatever we can to make sure you’re not spending unnecessarily. We don’t use a lot of things that require licensing. Instead, we have an open source mindset with no pre-built solutions that would have to be transferred to a client for an added cost. We work hard to make sure we don’t build in tooling that will require future licensing that will have to be transferred to a new team. Small things like this ensure you’re getting the biggest bang for your buck.
If you have any additional questions about whether you should hire a developer or outsource, feel free to reach out to us at firstname.lastname@example.org. We’d be happy to help!