Outsourcing has become a familiar pattern in the software industry. As an alternative to high-priced American workers, companies will hire people overseas at a fraction of the hourly wage. I propose an alternate model of “insourcing” — hiring folks close to home who have the smarts and some of the skills but not the domain expertise. This is particularly effective for software development.

Outsourcing creates additional cost of project and engineering management overhead and time zone lag; however, even adding those costs, it appears to be quite economical. Some companies have mastered this model, but many who try it fail. Those that succeed go through several costly iterations to make it so, and I would guess that the vast majority of initial engagements fail to yield any successful return. Most small companies simply cannot afford such experimentation. Tech leads and managers should be focused on growing the core business, rather than purely cost saving efficiencies.

An alternative insourcing model is far easier to make successful and implement in small scale. In my own small business, driven through an interest in pair programming and increasing diversity, I stumbled upon something that works from a purely capitalistic perspective. I have employed a series of interns, who pair program with me and other engineers. Using this method of working, it shortens the length of time before they are contributing significantly to the project and speeds their learning of the tools and techniques required for the work.

There are a lot of smart people with a background in software engineering who are struggling to find a job today. These are folks who spent a few years too long at a job and now those skills aren’t marketable, or they took off six years to care for a child and their skills are rusty, or they just got out of school and have zero experience. These folks need jobs. These folks are under-employed, considering minimum wage in alternate professions. We need them in our industry.

Instead of outsourcing to another country, I think everyone who has or seeks to grow a team of engineers should consider insourcing: hiring someone who is smart, has a foundation as a programmer, but who lacks the specific experience needed to work at your company. Anyone can do this. The key elements are

  • you have a clear need for development work that can be done by a junior or mid-level engineer
  • you have someone who really wants to act as a mentor
  • you are willing to trade some training time for some cost benefit
  • you understand that there is always risk in hiring anyone, and you are willing to take a risk and manage that risk in exchange for a potentially awesome long-term hire

Anyone can do this, but some local companies have expressed an interest in getting intern programs started. I’m figuring out how to lesson the need for someone experienced in mentoring and teaching by bringing in a pair of programmers (one senior/one intern) or providing clear guidelines and support for an intern working in an existing team. I’m leveraging my specific experience and on-going training sessions to kick-start the process at other companies. Interns can read more and apply and companies can contact me directly, but I am also interested in hearing from other people near or far who have had success with similar programs.

One Comment

  1. Posted September 14, 2010 at 12:18 am | Permalink

    I recently came across your blog and have been reading along. I thought I would leave my first comment. I dont know what to say except that I have enjoyed reading .

One Trackback

  1. By training hackers for an awesome job market - on September 11, 2010 at 12:56 am

    [...] there is still significant demand here. A while back I wrote about an alternate approach, I call insourcing, but that’s just part of the [...]

Post a Comment

Your email is never shared. Required fields are marked *