Done It Before, Stupid

One of my least favorite parts of working in the software industry was the inevitable backlash involving various parties making smug remarks about how it’s all been done before.

I think we can partially blame the braindead mentality of DRY criticism, where people get a Pavlovian kick out of trying to identify places where other people are messing up because, obviously, they are just repeating work that has already been done.

We can also partially blame the exploited patent system for enabling a view where software concepts can be claimed for power and profit. Some people in large corporations take this view inside the company, where they are likely to feel slighted if a new product seems to be close to some idea that they remember thinking about or being in a meeting about five years ago. Some people make it their full-time job to seek out people who are working on ideas similar to their own and harass them until they get their perceived due.

In software, there’s really no way to earn knowledge without writing code yourself. So please give people a break when they’re jumping through well-worn hoops, oblivious to existing codebases or ideas.

If you’re not looking back at your old code or approaches with some sense of embarrassment at improvements missed, then you haven’t grown as a creator since then. To think that previous work is unimpeachable is awfully haughty, and is a good sign that you’ve become a Crusty Old Dude(ette), or some weird profit-mongering litigator.

So, instead of hopping on the Done It Before, Stupid bandwagon, what would be more helpful?

  • Use the socratic method (ask questions) about specific technical challenges that were particularly challenging to previous attempts at a problem set.
  • Contribute old test suites, datasets, or programs if they’re close enough to help ensure that any new solutions get written as efficiently (or more efficiently) than old ones.
  • Check out the new approaches with an open mind and try to find out what’s substantially different or new about it.

Anyway, that’s my little rant about people who claim D.I.B.S. (nudge nudge, wink wink) on ideas.

Some Ado about Scrumjax

I really enjoyed this Dadhacker post. I got confused by all the other comments so far, so I’m going to ignore them and just mention the point that I think resonates with me. :)

Whenever I have some really hard problems in my mental heap, i probably spend a ratio of 4:1 subconscious processing to conscious processing. That’s kinda how I justify all the time I spend running around the web, doodling, woolgathering, drawing out ideas on paper, etc. Most days when I was forced to do this, I would pick one or two small bugs to fix so i’d at least have something to talk about at the daily meeting. It’s more or less impossible to tell everyone what my subconscious has been working on the last day. At the least, I always felt somewhat intellectually dishonest when trying to report activities that have their roots in some portion of creativity as well as mechanical work.

The main benefit of talking regularly is available if um, you talk regularly, but I think the main appeal of Scrumjax is to have stuff to report up a chain in a medium to large sized group of programmers that don’t really talk with each other naturally.

Sysadmins and Charlatans

I’ve known my share of sysadmins who held some measure of belief that the more secrets they kept to themselves, the more secure their job was. It’s a belief held amongst a good portion of bad sysadmins, and unfortunately for them, it usually restricts their career more than it ever helps. Clinging desperately to power, a bad sysadmin like this will hoard information like Gollum to the Ring, and attempt to undermine anyone knowledgeable who comes near.

A disgruntled city computer engineer has virtually commandeered San Francisco’s new multimillion-dollar computer network, altering it to deny access to top administrators even as he sits in jail on $5 million bail, authorities said Monday. [...] Childs created a password that granted him exclusive access to the system, authorities said. He initially gave pass codes to police, but they didn’t work. When pressed, Childs refused to divulge the real code even when threatened with arrest, they said.

SFGate

This guy has taken his particular brand of sysadmin paranoia all the way to jail. If I were a betting man, I’d say that there’s no way this kind of person was intelligent enough to truly do enough to lock everyone else out, and someone with some real skills will actually resolve the predicament for the city in no time.

How does someone like this get so far into a position of power?

Typically, it’s by becoming a false prophet of IT, filling the ears of superiors and colleagues with bullshit simply because they don’t know any better. If a guy like this gets in a company at the ground floor, how is a nontechnical person going to realize that the sysadmin who seems so smart is really stunting the growth of the firm? I’ve even seen cases where sysadmins just flat-out lie about their work and spray a fusillade of jargon anytime they’re questioned about it. This tends to fool the below-average CTO and technical boss as well.

The unfortunate truth is that once someone like this gets power, it’s essentially poison for the entire technical side of the company. To make things worse, the kind of person that would hire someone like this is your average non-technical entrepreneur, who is impressed by jargon and confidence and might not know the difference. So i’ll go over my personal spotting guide to good and bad sysadmins below.

In my consulting and work history, i’ve come across the Bad Sysadmin personality type more times than I’d like. The typical signs are refusal to document work, an excessive amount of jargon, hiding for large amounts of time in obscure projects, and a tendency to look at people as either allies or enemies. A huge indicator is a refusal to verify backups (usually it’s because they lied about making them). These people tend to cost more to a company than they’re worth for the rudimentary technical skills they can employ. Many of them are completely incompetent, and they use these techniques as a smokescreen to hide their deficiencies. Generally, the Bad Sysadmin will be incomprehensible to the average person, mostly because they have no true interest in sharing knowledge. Instead, they prefer to wield their limited knowledge as a weapon in order to appear infallible, instead of using their actual work to justify their existence.

A Good Sysadmin, on the other hand, will be happy to verify or give an update on their work for you. In fact, they’ll be thrilled that anyone’s actually interested in what they do at all. They’ll have strong attention to detail, and a desire to keep things well-organized and documented for their own reference and for others. They’ll typically try to avoid jargon, and will try to explain things in layman’s terms. They might be very proud of things that nobody else understands, but if someone genuinely is interested, they will make the effort to translate. If they don’t know how to do something, they’ll go Google it instead of trying to bullshit you. They won’t be overtly political, instead hoping for someone above to help them with their career. Generally, these sysadmins tend to be deeply involved with their work, and unfortunately are usually less visible in an organization than the noisy, political type. It’s not uncommon to find one Good Sysadmin quietly doing all the work in a group of Bad or just plain Incompetent Sysadmins.

I’ve seen too many of the bad ones, and too few of the good ones in my career. If you’re in a position of technical responsibility, please make sure to cultivate your own sniff test for Bad Sysadmins. It could save you from a long period of IT hell.

FlashcardExchange is Neato

It’s a fairly frequent experience for everyone to come across an existing application of an idea they’ve had on the backburner for a while. However, it’s pretty rare to find one done so thoroughly and well that it’s just completely unnecessary to go and do it yourself.

FlashcardExchange does a lot of cool stuff that I wanted to build myself in a flashcard application. Among them are shortcut keys for navigating through decks of cards quickly, special self-testing systems such as incorrectly-answered only and even the Leitner file technique, and most importantly, the ability to share and search through existing sets of cards.

Really, the only thing in my vision that isn’t present on this or the other flashcard sites is the strong subdivision of flashcard sets by college or school class. However, I can see how making the site appeal more to generic collections of knowledge is particularly helpful in making it useful to the general public. Kudos to Culley Harrelson and FlashcardExchange for a job well done!