Blog by Sumana Harihareswara, Changeset founder
Hi, reader. I wrote this in 2014 and it's now more than five years old. So it may be very out of date; the world, and I, have changed a lot since I wrote it! I'm keeping this up for historical archive purposes, but the me of today may 100% disagree with what I said then. I rarely edit posts after publishing them, but if I do, I usually leave a note in italics to mark the edit and the reason. If this post is particularly offensive or breaches someone's privacy, please contact me.
I've been thinking recently about the line "A week in the lab will save you an hour in the library," in the context of how programmers keep reinventing the wheel over and over instead of reviewing each others' code or learning from CS or software engineering research. Part of why lots of programmers don't reflexively ask themselves, who's already solved this problem? is a lack of discoverability. StackOverflow is much better at sharing useful code snippets than it is at shifting searchers' paradigms. So much relevant research is locked up behind paywalls, and even when it's publicly available, naive web searches for my problem won't necessarily match the jargon academics use. And another reason is that programmers need a certain amount of initial cognitive and behavioral training even to recognize what classes of problems we have and notice when we could use help. We don't teach these thought processes in most accredited programming education.
Greg Wilson says that, on average, a Software Carpentry bootcamp saves a participant one day per week for the rest of their working life. That's how valuable those skills are, and how under-taught they are in the general curriculum.
I want practitioners, in general, to effectively learn from each other. As Leonard wrote:
When you design the fifty-eighth microblogging API you're limiting your audience and wasting your users' time.
This is a really huge problem and we won't solve it with a book. But we can point out that it's a problem and take the first step towards mitigation.
We can't afford to waste time; there are real unsolved problems that need our efforts. Reinventing the wheel is spinning our wheels.
Which means, among other things, that we need to be able to teach developers to review code effectively. It's been done before and I'd love for someone to say they've replicated that process, or a similar one, in an open source community.
17 Mar 2014, 8:38 a.m.