We use the term “developer” way too much. The word makes some people build things, but makes many, many more people not build things.
At work, especially, the word discourages tinkering, learning, diving in. “I’m not a developer” is what you get a lot. Or: “That guy’s not a developer”. “We’ll need to hire the developers.” Forget about developers! The whole world is being remade and hooked together with software, toolkits, apps, services and mash-ups (Why Software Is Eating the World, by Marc Andreessen). It can all be developed! By anyone! The environment of the developer, more than ever, is:
- Free as in beer and as in speech
- Being made more simple with patterns, libraries, IDEs, cross-compilers, WYSIWYG interfaces and other stuff you don’t at all have to understand to profit from.
- Buoyed up by online coding and learning communities at every level, including basics (jQuery Basics)
We should consider writing code to be more fundamental than a job description or a specific discipline. Many, many things are exposing themselves as having interfaces, as hackable, etc. Lego blocks. Taxi cabs. Refrigerators. Environmentalists write code, statisticians, lawyers, entrepreneurs, of course. I’m not a developer. But I build a lot of software. The word “developer” should have the same kind of unspecific reference as the word “worker”: What do you develop? What do you develop in the service of? What work? “Developing” is too basic an activity now to be so cultishly over- or under-appreciated.
Frankly, the fact that you can earn so much money coding effectively but that it can be so enjoyable to code—like playing, really, like playing music or even like playing a game—well, it’s just crazy that we have these hiring problems and hand-wringing about how few people are going into “STEM” fields. I’m an English Major! I started using Perl twenty years ago to…I don’t know, organize my cassette tape collection or something. It’s like saying you can’t put a new shower nozzle in because you’re not a handyman.
Here’s the rejoinder: Doesn’t matter what the technology is or how easy it is to find samples of it online, there’s a certain kind of systematic thinking that real developers have, something that goes deeper than language. Or mere play. Algorithms, patterns, design. These are the things we mean when we say developer, and their absence in the guy who’s building your application is going to mean big problems.
I can see that point. We’ve all spent lots of time trying to understand things that were sloppily built, and trying to get things implemented methodically, in some repeatable way. But the boundary is not between “developer” and “non-developer.” Those are the wrong categories. It’s between systematic or logical thinker, maybe, and…illogical? Or methodical v. random. The point is that if you have the habits of mind to solve problems—any problems—then developing can be an available, valuable, even transparent means to that end.