Philip Cunningham music, code and stuff.

What Developers Can Learn From Columbo 10 January 2014

"You know, sir, it's a funny thing. All my life I kept running into smart people. I don't just mean smart like you and the people in this house. You know what I mean. In school, there were lots of smarter kids. And when I first joined the force, sir, they had some very clever people there. And I could tell right away that it wasn't gonna be easy making detective as long as they were around."

-- Columbo (1977)

Software developers work in the mental arena; they use their mind's eye to abstract over concepts that often don't exist in the physical realm and manipulate them to capture business rules and models. Consequently, they are notoriously careful about preserving the image of their own intelligence, substituting personal development for narcissistic self-preservation. Maybe if they were a little bit more like the fictional character Lieutenant Columbo, they could turn their intellectual naivete to their advantage by using it as an opportunity to learn from their peers and colleagues.

Columbo's Skill

The characterisation of Columbo is an excellent study in Socratic irony -- to the suspects in each episode he is a fumbling, feckless, frump of a man but to the audience he has no less deductive prowess than Baker Street's finest. His comfort with his outward stupidity is what keeps others underestimating him and is what ultimately leads to their demise. Put as as coldly as this, you'd be forgiven for thinking he was a manipulative wretch, but he is otherwise professional and warmingly disarming.

What Are You Hiding?

Have you ever rebased a new feature to within an inch of its life because you didn't want anyone to see the stupid commits in your feature branch? Pretended to know exactly what a colleague was talking about when you started at new company because you were afraid of being exposed as an imposter? Pushed an entire hobby project to Github in a single commit because you swore at yourself in a three of the original commit messages for being a bit of a shit gibbon? Sound familiar? If it does then you traded the opportunity to have a discussion for vanity.

Get Comfortable With Your Own Stupidity

It simply isn't possible to be well-read in all areas of computer science, nor is it possible to be familiar with the ever-growing set of tools we have at our disposal. But by being open about, and accepting of, your lack of knowledge you open up yourself to the opportunity of having a discussion with your peers and colleagues -- don't preclude this by trying to save face because you're the only one who'll lose out.

Map from Reduce 31 May 2013

def _map coll, fn
  coll.reduce [] { |coll, val| coll.concat([fn.(val)]) }
end

_map [1, 2, 3, 4, 5], ->(x){x*x} # => [1, 4, 9, 16, 25]

Computer Science and Religion 10 April 2013

I have said that computer science is a lot like magic. And it is really good that it is like magic, because there is also a bad part in computer science that is a lot like religion.

-- Harold Ableson (1985)