People may/will disagree with me, but I think outsourcing has watered
down the average competence of people within my discipline. As such,
there’s more opportunity for new team members to threaten project quality.
I have long struggled with the value propositon for outsourcing. My theory was that you’d get what you paid for. To me, outsourcing is the elusive silver bullet tactic employed by a myopic management with no concept for a software team’s operational concerns. They look only at their staff costs.
As we are faced with outsourcing, its thus becoming more important to be extraordinary at evaluating talent. And yet we aren’t. At my company, I’ve seen new technicians arrive having only passed a 30-minute phone interview. And once they are on-site, they are very difficult to remove. In the more strenuous interviews, candidates are still made only to answer questions and potentially draw on the whiteboard. The trouble is, some of those doing the interviewing aren’t particularly skilled and thus the gradual decline as the company eventually fails altogether to recognize good or bad talent when they see it.
The most difficult interview process from my experience was with a now-defunct company called ObjectSpace. It should be noted that they no long exist not because of their engineering staff, but rather due to a faulty strategy of accelerating marketing spending in anticipation of a money-infusing IPO that never happened. But I digress.
What ObjectSpace did right was to invest time, money, and training in a recruiting process which enabled them to hire with precision. The process started with a 45-minute phone-administered object modeling session. The candidate was requested to think out loud and justify their design. In my case, I was asked to model a subset of the game of Monopoly. That may sound trivial, but there’s a lot you can learn in such a simple exercise.
Many developers completely lack modeling skills. Their instincts are just completely absent. They seem to know the syntax of the implementation language, but they have no idea how to partition responsibilities into reasonable designs. So in my view, the modeling exercise is really critical. I have since tried this exercise (when I’ve been provided the latitude) and asked candidates to model the phone that appears in front of them in the conference room. Invariably I’m astounded and incredulous at the same time as candidates cannot even suggest something simple like a button hierarchy.
After the phone modeling discussion, ObjectSpace would conduct an in-person programming test. More specifically, they provided any of several available problems and a computer and the candidate was given an hour to complete the task. The problem was documented in words and in diagrams. You can tell a lot about someone’s ability to contribute from such an assignment. At my company, we have never been permitted to administer such a test. I view the test as a sort of audition for the job. Just as an actor reads for a part, I think developers should show us what they’ve got. All too often we see what they have (or more often, don’t have) after they are already wearing a badge and its too late.
ObjectSpace would end the process with a whiteboard session in which additional technical questions would be asked and a hiring manager would evaluate fitness for the team. After I was done with this process, I felt like the company owed me a day of pay. It was hard to get in. But the ObjectSpace approach ensured that for the most part, the engineering staff was above average.
My point to all this is that companies who dare to outsource should consider fully what that means from a variety of perspectives. Hiring is critical. Over and above hiring, there are a multitude of logistical problems to solve, but I’ll leave those for some other discussion. For me, I’d just like to see my own company move to a more rigid, standardized approach.