In an interesting display of self hatred (as can be deduced from the title “Why Geeks are Freaks“) Leon Bambrick of SecretGeek explain how do geeks refer to problem solving, and why is that bad in a software development environment. Apart from classics like “Geeks generally report bugs when something is impossible, not when it’s just incredibly hard.” and “A product is boring from a geek’s point of view when it simply fulfills a purpose.” (both of which are completely and utterly wrong as I’ll explain further), he culminising his speil with the following:
“geeks will derive the most pleasure from flaky tools that let you dig deeper (e.g. linux [sic])”
Just for the record, the Hacker Jargon File describes “Flaky” as “Subject to frequent lossage. This use is of course related to the common slang use of the word to describe a person as eccentric, crazy, or just unreliable. A system that is flaky is working, sort of — enough that you are tempted to try to use it — but fails frequently enough that the odds in favor of finishing what you start are low.” Last time I checked, GNU/Linux was anything but suffering from all those application maladies. In fact, one thing the OS is famous for is its stability. It’s also nutorious for its user-unfriendlyness and for allowing those who know what they do to fine-tune every single element there. But it’s not flaky.
Bambrick, in his description of geeks as QA hazards, fails to notice some important aspects of geek-dom that make geeks essential to software development. A user may find a problem he cannot surmount and report it, however, a geek will find the problem, try to resolve it, fail, or suceed, and will able to send up a report of possible causes, methods of reproducing said problem, and workarounds (if applyable). This, from a programmer point of view are much more essential to the development process than saying “X doesn’t work”. True, a geek may not find some issues due to habits and practices that a “regular” user doesn’t have, but a regular user will usually skim the upper layer of the application, while a geek tends to Indian-arm-wrestle his apps, trying to configure the hell out of it, and usually tracks the more serious, and less obvious, bugs.
What I fail to understand is where did he come with the “Geeks will never report things that are incredibly hard”. The question is, what would fall under those categories? Unintuitive interfaces? Five layers of settings abstraction? Thorough knowledge of remote-system calls configuration? Are we talking Desktop application? server-side ones? Operating system tools? what? And what stage is the development at? The “just gone alpha” where the designer isn’t really interested to know that hovering over the Edit> Preferences menu item doesn’t bring a tool tip pop-up, but would really like to know why does the application crash randomly, which may need some serious digging into the less lighted tunnels available only to geeks (aka “power users”)? Or a late release candidate which would really want information about how fast can people start using the app after install, rather than some weird bug showing a lower-case ‘i’ on Pentium III computers with a dial-up that are connected to a wireless router and running Don Henley “Boys of Summer” on the background in eternal loop.
I also dislike the “a product is boring when it fills a purpose”. What has that supposed to mean? That geeks are only satisfied when they need to maintain their tools rather than use them? Wouldn’t that make Windows the geeks’ no. 1 most favourable OS, being one that constantly need updating, patching, reconfigured etc.? When I use
less I do it because it fills a function, not because I have to fine-tune it or it’ll core dump or segfault. Geeks don’t want their software to go belly up everytime. They’re more than capable of handling that, but they’ll be much happier if they could just stop futzing with the settings files and start working already.
On the other hand, what is “simply fills a function”? When I work with a browser, I want to be able to customise it so it will function according to what are my needs. When it doesn’t, then it’s not filling a function for me. If said browser doesn’t offer, say tabs and session save, then I can’t really use it. If a browser doesn’t allow me to set and remove security blocks according to my needs, then it doesn’t fills any purpose for me. When text editor doesn’t allow me to configure it’s indenting down to the last bit, it creates a hassle, as I’ll need to manually indent at least some lines, and therefore doesn’t fulfill a purpose for me. Saying “simply fulfills a purpose” is patronising. I could ask the writer why doesn’t he use NotePad for all his work, and then we’ll see what “simply fulfills a purpose” in his world.
I also disliked the whole notion. Geeks, according to Bambrick, will only report a bug if they are 100% sure that there isn’t any way of resolving it. This, apparently, preserves their masculinity, or something. It seems that admitting failure, where a solution is available is degrading for a geek. I can only assume the writer hasn’t visited any Open-Source or Free Software support forums/mailing lists/bug trackers lately. He’ll find those to be filled with “how do I do X”, “I can’t make Y work” and “anyone else gets Z when they…” question. And not only from the “newbies”. Every self-proclaimed geek will be the first one to gracefully mention that “you never stop learning” and that “only by asking questions did I became able to provide answers” and other pseudo-tech-zen stuff. I think seeing geeks as some high-seering group of technical gurus who wouldn’t ask anything so they won’t risk their alpha-male creds is way too stereotypical, and a more than a bit off. Those who don’t ask, don’t become geeks. Simple as that.