"Developers are people"
In the last Vergecast (Feb 10th 2012), Josh, Nilay, and Paul were commenting (at around 53:30) on how long and dull the keynote at Build was long, and eschewing the simple, clear message, only to have that frequently countered by readers and listeners that Build is a developer conference. Josh made the good point that WWDC is as well, and they keep the message clear and on target, as they know the world is watching, then give the details in smaller workshops within the conference. And Nilay says, quite aptly, "Also, developers are people. They're like regular human beings." This is a salient point that is often overlooked by the press, management, non-developers, and even often developers themselves.
I'm a software engineer by trade, and I've been writing code since I was in middle school. I've got old-school Linux/UNIX chops, and I spend more time using command lines in a day than most people will in their lifetimes. For ages, I've meticulously maintained my .emacs file that has everything customized just so to my tastes. I've coded native applications for Linux, Windows, Android, and over a dozen other flavors of UNIX. I've built large, complex, scalable web applications in both PHP and Java. And I've dabbled in so much more.
But I'm also a normal person. I have a non-nerd wife, a daughter, a house, and a relatively normal life. Sure, I code in my spare time, but I also cook, study philosophy, go to church on Sundays, meet the guys at the local pub every now and then. Sure, I do nerdy things like attending the last taping of On The Verge, root my phone and install CyanogenMod, talk an awful lot about gadgets, etc. But so do a lot of people here that aren't developers, including the aforementioned editors of this grand web site, and likely you, the reader.
But I'm sick of a few things that people just assume about developers in general:
- What software developers do is "magic."
- Developer resources don't deserve the level of polish that they need when targeting "normal people."
What software developers do is "magic."
When I get a job to do from my employer, it's typically a bit like fight. It's as if most individuals don't understand that software development is much like an engineering discipline; there are a lot of technical, but very understandable parts that have to be created or assembled in order to build a piece of software. I don't expect my employer to be an expert at this, or to converse about object hierarchies or RESTful web services intelligibly; I realize that I'm a domain expert, and my employer has little expertise in this domain. I'd be equally at a loss when conversing about, say, international diplomacy, or accounting, or basketball. That's fine. What I don't appreciate is that most people, my employer included, tend to think of what I do as magic -- some sort of arcane task I do by waving my magic programming wand. Worse still is the active hostility to learning the very basics of how the process, or any technology for that matter, works. For an example, see how various members of Congress boasted that they don't understand, at all, how the technology they're attempting to legislate works.
Related to this is the thought that the world is split between Wizards and Muggles -- you either are born with the powers of a software developer, or you aren't. This is patently false. It's a learnable skill, like most other things. I started learning when I was 7 on my Commodore 64, because I was fascinated. Other people were interested in other things, so they didn't spend the time I spent writing code, and learning everything I could about computer software and hardware. Given, some personality types and intellectual attributes do lend themselves to software development, and that can be seen at the highest levels of the craft. But saying that someone can't do it simply can't do it because they weren't born with the right pedigree is just as silly as saying you are incapable of running because you weren't born with the magical powers of Usain Bolt. Anyone who is even capable of middle-school-level pre-algebra is capable of programming, if only at a basic level.
Is this to say that everyone should learn how to program? Of course not. That would be as silly as saying everyone needs to know how to play the cello. However, I think it's equally silly to think that in our increasingly tech-dominated world, people should be willfully ignorant, and overtly hostile when someone tries to communicate some parts of the process to them, particularly those that actually want developers to build things for them.
Developer resources don't deserve the level of polish that they need when targeting "normal people."
If software developers are people too, don't they deserve the same kinds of consideration that normal people do when crafting software, publications, conferences, educational events, etc.? Honestly, this is an issue primarily perpetuated by the old-school UNIX graybeards and the like, who think we shouldn't at all mind dealing with learning 3 different macro languages to set up a GNU autotools build script for our project, and that learning LISP should be a precursor to using a text editor. Some of our tools are a bit... antiquated (e.g., vim. Others were never good to begin with, and we only use begrudgingly (e.g., Eclipse).
The good news is, it's getting better. Newer web frameworks (Ruby on Rails, JQuery, Bootstrap, etc.), version control services (Github, BitBucket, etc.), programming languages (Ruby, Python, etc.), are finally coming forward that really make developers' lives easier by reducing the number of actions and the friction between those actions that developers have to perform. We're allowed much more to focus on the task at hand: write code, dammit!
Where we still have a long way to go is IDE's. Why are the powerful, open-source ones like Eclipse so big, buggy, ram-hoggy, and without features that we're starting to see in modern end-user applications? Why can't they be fast and slick? Why can't they seamlessly use your DVCS as a backend for all edits made, keeping your working copy in a separate branch and constantly auto-saved? How about some sane options for deploying code to various server environments without the hassle of writing nasty ANT scripts?
Ok... I think I lost all the non-developers by now. But you get the point: developers are people to. This is a two-sided issue -- we also shouldn't be keeping ourselves separate from "end-users". We are the end-users of some very powerful, if clunky, software. And we deserve better.