Many early stage companies face a decision of how to build out their first product. Do we go the route of inhouse engineers, or do we outsource to start? Sometimes a combination makes sense. Here are some considerations to take into account.
Inhouse engineers
Inhousing can be great for generalist tasks and long term commitment. Building company culture as well as engineering culture is important here and requires significant upfront and ongoing investment. Additionally if you want to have an in-office culture, this is really the only way to hire. Long term support of code is also more conducive to a full time hire. There are costs to this approach, employees generally cost 140% of their total compensation, when it comes to health insurance, leave insurance, paying for administrative overhead, training, hours waiting for new tasks, vacation, etc. But in return you get a degree of loyalty and commitment from the employee. However, this is getting tougher in the new economy we're finding ourselves in. With company behavior such as better.com laying off 900 workers on zoom, employees are becoming less naive when it comes to employer commitment. This means they are less driven by company mission. But they are still more integrated than an outsourced engineer. Highly sensitive data that requires tight controls is often best handled by engineers bound by an employee contract.
Outsourcing talent
Outsourcing is best for a few cases. Finding expert talent in a particular area. If you know you want to create an integration for a particular javascript graphing library, or a python fuzzy matching algorithm, you can find an engineer who has done that integration five times before. Paying double the rate for 10x faster code is a win. Overall, location independence brings down the price of labor significantly. But this comes with its challenges. Often, overall code structure and architecture is lacking, since this long term view of the system is not prioritized in most of contractor's work. Communication is another big drawback, poor english skills, sometimes written only, makes communicating product requirements harder. Timezone issues and working hours can be a challenge as well. Outsourcing can be significantly more flexible. With projects that are easily parallelizable, you can spin up a team quickly, and dole out tasks to each engineer working on a small part of the system. Then spin down the team quickly at the end of the three month project. Hiring and firing full time has much longer lead times.
Bottom line
Depending on circumstances, each method has its advantages. For finding experts in certain domains and hiring and moving quickly, outsourcing is best. For long term commitment and company culture, full time hires is the better option.
I'm an MVP Engineer and consultant for early companies. I work with outsourced engineers to lessen some of the issues that come with that modality. From communicating in the language of code to specifying system design for code quality to identifying and hiring the right person for the job, you can get the best from the global market while mitigating risk. Reach out here on linkedin if you want to learn more about how I help early stage software companies.