I started wading through some of the digital cruft of my life today, and stumbled on this bit of writing back from March 2012. I was a Junior in college at the time; full of ambition, hope, and enjoying the challenges and new ideas I was being exposed to. Now at 30, it strikes me how much 21 year old Luke already had figured out, even though he may have not realized it. As I started reading I expected to find myself cringing at the thoughts of my younger self, yet I instead found myself surprised and being proud of younger self.

Re-reading this post I found that my opinion has largely remained unchanged. My personal biases have indeed changed, and I’ve had the misfortune of seeing exactly what I described in this post grind up engineers. Some of the opinions I had when I wrote the piece I would disagree with today, but the message rings true to me in spite of the opinions a younger me once had.

The post below is unaltered from it’s original writing 9 years ago sans updating the link in the original post to an internet archive mirror.

Enjoy.


Understanding your knowledge

It is very common for those of us who learn on a certain tool, or who are taught a certain methodology to become very attached to the nuances and the specifics of that tool or method. Obvious examples come in the form of programing language preferences, where a software developer might swear by C# or C++ when a more lightweight language such as ANSII C might fill the role. There is a rather well-known discussion thread from the Linux kernel development community along just these lines, in which Linus Torvalds chews out a prospective developer who was entrenched in the ideas used in most C++ development.

More often than not, this mindset is worsened by a poor understanding of alternatives or a lack of appropriate experience to effectively judge a new tool. There is nothing unusual or inexcusable about this mindset. Indeed I should expect this type of view to develop quite naturally among engineers and hackers; it is only to be expected. As we develop projects we work with a certain conviction towards its completion, and if we are haunted by the notion that our project is inherently flawed we will lose interest and become unsure of our work.

Problems begin to arise when one fails to understand the limitations of his or her knowledge, when presented with a possible alternative. Engineering as well the vast majority of design, requires decisions to be made on incomplete and imperfect information; but with this power to act on assumption, we accept the responsibility that we might have to reevaluate decisions made not just on a project, but on the knowledge and skills we have pursued in our lifetime.

Consider something as common place as a keyboard layout; QWERTY is the de-facto standard keyboard layout for nearly every latin text input device on the planet, yet various internet communities are continually badgered by users who insist that alternative layouts such as Dvorak are superior for one reason or another. It is easy to find such an argument as quite silly; unlike a software language or considering a brand of some general purpose devices (such as AVR or a Microchip brand micro controller), a keyboard layout introduces no fundamental difference to how we interact with a computer. This argument persists not because one layout is superior to another (a statement I feel I can safely make being a typist of Dvorak for more than two years), but rather because typically both parties are unwilling to consider that a fundamental tool they have been using, i.e. the keyboard, might have been better developed had they taken a different starting approach to it.

Remember you when design anything that you may have taken a flawed approach. Do not fear this flaw but do not let your convictions make you cling to this flaw. Simply note that you may have made a mistake, and that you might end up repeating some of your work over again in the future because of it.

On a purely personal note: I should note that while I’ve been typing in Dvorak for more than two years now, I have had no great life changing events because of it. I use Dvorak on my primary computer and Qwerty when I’m using someone else’s computer. Contrary to common claims, Dvorak does not increase your typing speed, it does not change your world view, and it does not grant you some sort of amazing skill set. It’s best use is as a neat trick to show your friends or a conversation starter, little else.