The Government of Canada provides a tax credit for companies performing research and development. Last week, I had an interview with a gentleman who had me detail all of the research and development I had done in 2011 for 500px. (After hearing I’d be interviewed on this topic, my reaction was identical to the other developers’ there: “well that’s all I do is research and development.” Indeed, after my interview, the interviewer had run out of time for the and had to reschedule another appointment for everyone else.)
The interview was fun, in a sort of geeky way. The interview was interested in having me describe ways that I was clever about problems I solved; the cleverer, the better, and if I had to iterate to come up with good solutions and could show that existing solutions were inadequate for my needs, that’d be great. It’s like asking a showoff to show off. But what really got to me was the distinction between experimentation and trial and error.
When asked how I came to use a particular strategy in the 500px iPad app, I originally answered “trial and error” but the interviewer corrected me. What I was doing was experimentation: I had a hypothesis, performed an experiment, and came to a conclusion with regards to that hypothesis, even if the conclusion was that the hypothesis was incorrect.
Trial and error, on the other hand, involves trying something without any idea if it would work and then retrying if it doesn’t, repeated until you succeed.
I understand Objective-C and Cocoa Touch well enough that, when asked to do something I have never done before, I can make a logical guess about how best to go about it. Then I try that approach to see if it works. It’s the difference between an educated guess and blind luck.
If you’re using trial and error and are a software developer, then you’re not. You’re actually a monkey trying to write Shakespeare.