when i was geek-young, not quite forty years ago, i worked in a tiny two-person shop, and we were entirely without “method”. we just wrote code. at that time, there were plenty of analysts of geekery, and they were certainly writing about how to geek, but 1) their ideas were seen as more of a bazaar than a cathedral, and 2) most of the trade did exactly what we did at good ol’ MIS.
(chris martz, or jan, if you’re out there somewhere, i would love to make contact. i have never properly expressed my profound gratitude. i internet-stalk you from time to time, but no luck so far.)
in the period from about ’85 to ’95, a lot of proto-brands of methods started to emerge. most of these were tightly tied to direct geekery rather than the larger trade. as ideas about how to write code got stronger, they widened their scope, and became ideas about how to run the whole trade. i myself used the Booch method, later unified with jacobson & rumbaugh to create the Rational Unified Process[tm]. [no, literally, tm.]
it’s not actually clear to me that most geeks use any method more formalized or nameable than what i started with back in 1980. and even those whose orgs *claim* to use one, seemingly very often don’t.
there is a plethora of methods these days. in the circus called “agile” they seem to multiply like bunnies. proto-brands have become full-on brands. flames abound, and much gnashing of teeth, tho i’ve hung with various leaders in this scene for many years, and a lot of what might seem to a noob as internecine conflict is actually just joyful intramurals. (ex: london & chicago school TDD).
y’all know i abhor hashtags for any purpose other than to create temporary news channels for breaking events. i’m especially resistant to those tags that reek of sloganeering. i don’t find myself in need of threads whose intent is to unify but whose result is to divide.
but if i were to stake out a hashtag it would be # NoOneWay.
when i was first learning to teach, my constant debriefer was my beloved wife virginia, a master teacher. every day i’d tell her about the day and throw out something that “went wrong”. at this point, she would suggest — i am not exaggerating for effect — anywhere from 5 to 15 things to try in class that were different from what i had tried. for her as a master teacher, it somehow never entered her head that there could or would be One Best Way to trigger the light bulbs in a class of students.
this was a revelation to me, building a slow tire-fire in the dump of what passes for my consciousness. and over a very long period of time — apologies to my many intervening victims — the message got through. and once i got it, with teaching. i began to see it much more with geekery, conceived both narrowly with “writing code” and broadly with “shipping value based in software”.
i don’t want you to think — heh, how could anyone possibly think this of me of all people — that i don’t have opinions, and strong ones, about what things have worked and not worked, for me, for the teams i work with, and even for the larger trade. i certainly do.
but consider some method X. maybe it’s a method for writing a line, or for dividing software into efficient arrangements for mental scope, maybe it’s for obtaining viable working definitions of “shipping” or “value”.
and consider method X’, which is just method X with some small change.
here’s the thing. there is no One Best Way to write a line of code, or divide software in chunks, or find out what people would like software to do. there is no Method X that is the One Best Way. Maybe there never will be one, or maybe the world will change, but for now, we are without a Method X that is a Method One Best Way for any of these things.
so, what’s a girl like us to do?
take whatever you’re doing now and label it method X. if it’s working great, great, make an X’ method out of it and try that and see if it gets even better. if it’s working not-great, find something different, method Y, and try *that* for a while. the geek trade is absolutely surfeited with ideas for both method Y you haven’t tried and method X’ you haven’t tried.
read widely. try things. don’t be afraid to try X’ and decide you still like X better or decide to try X” or even a different ‘. and please, don’t *stop* doing X’ methods just cuz you haven’t found one yet that’s really better than your X. not only is it extremely likely that your situation is only local in time, but it’s extremely *un*-likely that you have discovered the X that is the One Best Way.
the road to hell is lined with great parking spaces. don’t park.
last thought for this muse: isn’t geekery just about the *best* thing?
h/t my friend @onealexharms for the morning tweet that started me down this one.