How to Know When to Bring Software Development In House
Cash-strapped startups often choose to outsource software development. However, these independent development firms interact with dozens of clients, which means that your business receives just a portion of their creativity. Innovation is throttled as your company’s growth becomes reliant on people outside your management.
In-house developers, on the other hand, devote their full attention to your projects. They can produce high-quality work faster, and they can fix bugs more efficiently. Having software customized to meet your company’s needs, whether it’s on the back end or customer-facing, enables you to address unmet needs and bring in more customers and revenue.
Answer the following questions as you consider how to grow your in-house software development team:
- Do you consistently fail to meet software project deadlines?
- Does it take days, rather than minutes or hours, to fix bugs?
- Do these outsourced developers code whatever you request, with few original ideas?
If your answer is “yes” to all of the above, it’s time to reconsider your software development strategy. When my company was outsourcing, the answers to these questions made it clear that our technology partners were simply executing our ideas and checking the box, rather than collaborating to develop innovative approaches that would make us better. The developers’ attention was divided amongst 16 clients. They were slow to be address bugs in our software, complicating tasks for both team members and customers. New ideas were slow to be tested and implemented.
If these problems are present, but seemingly manageable, be aware that they can swiftly grow. Recruit internal developers now, before significant issues arise. It takes time to find the right people.
Determining whether the transition is feasible. Once you opt for in-house developers, think through the following. Each factor plays a role in your company’s success.
Assess your budget to determine if your business can afford a full suite of expertise. Don't assume outsourcing is always the cheaper option. The hours required to plan an outsourced project can cost more than you expect. Carefully consider the amount of time you spend coordinating these projects, as well as the frequency and complexity of your needs, to determine whether your budget would be better spent on an in-house team.
If you find, however, that your budget only allows you to hire one developer at the moment, it may be wiser to continue outsourcing to a team with a range of talents. Both contracting and hiring a team of developers allows you to pull from their shared experiences. Be warned, though: Hiring too many in-house developers too quickly can lead to management complexities, a lack of understanding of the systems and technical debt. Spread-out building the internal team so everyone isn’t “green” at the same time.
It's important to recruit people who fit your company’s culture. Find developers who mesh with you and your team. It’s often preferable to hire capable individuals with whom you can get along, rather than brilliant people who are a poor culture fit. The newly hired developers must work seamlessly with your team and understand one another.
Four valuable characteristics to look for are:
1. Tenacity and mental toughness. Developers face challenges each day — great ones fight through roadblocks, while weak ones give up and turn to new projects.
2. The ability to work effectively with a team. Developers have to communicate with other developers. More importantly, developers have to be able to communicate with the people using the software on a daily basis.
3. The ability to seek and respond to feedback. Developers have to be sensitive to how their software is being used by designing with the user in mind, rather than simply writing code that works.
4. Intellectual curiosity. Developers must have the drive to seek out and solve the problems your company will face.
Once you identify developers you’d like to work with, evaluate their experience. Check references, review past projects and assess how they perform on a technical challenge you assign them. I repeat: Assign a technical challenge. Challenges are critical for assessing technical proficiency prior to signing someone on full-time.
If you’re not familiar with software development, enlist help in evaluating your prospective hires. Recruit a consultant (or an experienced friend), and refer to tools such as this great flowchart.
Transitioning from outsourcing to building a team of in-house developers can be daunting, but it’s an exciting step toward implementing ideas quickly — rather than simply dreaming of them.