Several times in my career, I’ve entered companies with the opportunity to “build my own team.” For whatever reason (and that reason will become important later), the company had been outsourcing all of their web development to an (often offshore) agency. In retrospect, I know now that we should have

Q: Are we ready for a short-term decline in productivity?

Q: Is everyone who interacts with the products/projects open to changing the way they work?

Q: Are we genuinely interested in developing an engineering culture? (as opposed to being an engineering-first organization, or acquiring engineers in a desire to get acquired)

Q: Do all of the stakeholders for the product/project want this?

Q: Do we have a work environment that supports open conversation?

Q: Have any of the stakeholders worked places with in-house developers before? What were those developers’ roles in relation to the individuals?

Q: Do we view engineering as a service profession? In other words, are engineers there just to execute other people’s plans?

Ask yourself (and the people in your company) honestly - what do I expect this ‘in-house development’ team to do? Check if people have any (mis)conceptions about what is possible and what staff developers want to do.

I can’t speak for all developers, but I think I have a sense of what many of the good ones want, as far as engineering culture:

  • A place where they can contribute to processes, workflows and architectures
  • A place where they can work with people they respect and from whom they can learn
  • A place where they feel like their opinions are heard and their experience is valued

If there are not clear and nearly unanimous answers to these questions, hold off. It’s likely too soon to an in-house development model, and you’ll save money in the long run by waiting.