abstraction (with pirates)
As software developers, we’re taught to make everything we write as abstract as possible. We’re taught to make sure we write solutions that could potentially be twisted and altered until they do something completely different. We riddle our code with ugly references to AbstractComponentFactory and ConcreteOptionComponentFactory just in case we want to suddenly change all our window controls from Swing to AWT.
For me, this all comes to a head during that most abstract of University studies – Mathematics. (I’m doing Discrete Mathematics II at the moment).
We had a Mid-term Test this Wednesday, and we were asking to prove some crazy formula involving far too many factorials, binomial coeffecients, and k’s or n’s where there should be good, proper, real numbers. What’s wrong with, say, 1337?
I knew the real proof involved some algebraic manipulation of Pascal’s Triangle, and similar Math-214 insanity. That was a rabbit hole I was going to steer clear of
Then I noticed the answer, conveniently written right there next to the question: Use Pirates1
Eureka! If there’s a Pirate Captain, he has two ships, the m and the n and he needs to choose a raiding party comprised of k scurvy sea dogs…
That advice is useful to apply to more than just stupidly difficult maths questions. So it’s worth remembering the next time it’s all too complicated, and your head is hurting just trying to think of how to start working towards a solution;
Use pirates.
1 Our lecturer has a fondness for giving examples based on a Pirate Crew and Captain, or involving some quantity of Gold doubloons.




Nik Wakelin
Oliver Clarke