Much like Karen, I spent quite a lot of time thinking about words, their meaning, how they are used, how I use them, where they came from and how they have changed. Dry papers on proto-Indo-European lingusitc archaeology aside, it is a good every day habit to have.
But my current annoyance is one to do with the geek community, in particular those of a computer coding bent. Some of this is lifted from a talk I planned to give at a conference last year, and may well submit it this year, as it has oh-so-expanded.
It is a failing of the Western scientific tradition that there is a trend to reductionism and rigorous logic, to the detriment of context. (I tend to like context, and will take any discussion and spin it out to touch as many disciplines as I can muster, and hopefully more from my foil, as that way I can add to my arsenal of esoterica.) But programmers have a real blind spot between generic and abstract. I am only going to talk of the former here.
Give any programmer a problem, and they will solve it. Each of them will solve it differently, and there is as much of their own personality in their solution as if they had written an essay (and that belies the snobbery, and misunderstanding of code as art, of those whom I speak to of a literary bent). But the main problem comes when they get to tackle the same problem again.
See, I entirely agree, you shouldn’t do double the work to solve the same problem twice. But coders seem to like the generic, and love to abstract (in the code sense this time) the solution out, get to the core of it, so it can apply to many different situations.
I contend that that is a horlicks.
Where are these programmers working? Oh, if in academia, sure, make generic solutions to non-real world problems. That is what you do, right? But if you work for A Company, and this company has a product to sell, then why on earth are you being generic? Why are you teasing the code out into such a form that it no longer applies to just your place of work? Oh, wait, you are one of those give-your-code-away hippies, right? (Editor’s note The author has released code to the world. But spent time working for an intellectual property company, too. And doesn’t believe all code should be free, as in beer or capitalised.)
Many eyeballs? Who cares? I work for A Company. We don’t release our code to the world. I have railed several times against people trying to make ‘generic solutions’ to our problems. We don’t have generic problems! We have specific (ha, see what I did there? Oh, no, you don’t, but some might) problems that need solved. Let us solve them, and not care that we haven’t solved them in a way that means some Other Company could use the solution. I don’t care about generic solutions. I want to make sure the company I work for has their problems solved, so they can continue to make bucket loads of cash so they can keep me well paid and keep the champagne flowing at our company meetings. I want to make sure my deadlines are met, the code works and does what it is supposed to. Not that it is a generic solution we can apply at some mythical future date. It should work now, and work well. None of that means that you can’t have a neat answer to the problem, and elegant algorithm or something else of those ilks. It need not be shoddy, slapdash or stinky. It just means your first concern is your first concern, not some as-yet-unrealised issue to tackle.
I will take this opportunity to reiterate the three rules:
1 Make it work
2 Make it right
3 Make it fast
Oh, I may steal some more from my talk, I do like the bit on why no framework is ever any use in any case other that the one the original author created it for. That gets quite ranty in places.
But what do I know?