There seems to be a spectrum of legitimacy when it comes to being a software developer. On the one end you have our discipline's version of a performance artist—the prototyper, the design technologist. They're frequently accused of being more artist than programmer. They'll use beta software. They'll even use alpha software. They'll use a bloated library that gets them them what they need, and add enough RAM that it won't matter. On the other end of the spectrum you have the engineer, the one with the greatest legitimacy. They know optimization. They know security. They know uptime. They know all the right methodologies, and where the curly braces are supposed to go. They scoff at the prototypers, who don't even write unit tests. Between them is the design implementor—someone who knows enough of production-readiness to get something productized, but enough of the prototyper's magic to be able to produce something that actually resembles the fairy tale the designers came up with. Software wouldn't be what it is today without all three of these programmers, yet they misunderstand one another, judge one another and, strangest of all, often don't know to which group they belong, or which tools are best used by which groups.