Ars totally nails the definition of development
A developer taxonomy
At one level, you have people who are basically business analysts; they’re using Access or Excel or VB6 to write data analyzing/number crunching applications. These things are hugely important in the business world, totally unexciting to anyone else, and the people writing them aren’t really “programmers.” I mean, they are, in the sense that they’re writing programs, but they’re not especially interested in programming or anything like that. They don’t really care about the quality of the libraries and tools they’re using; they just want something simple enough that they can pick it up without too much difficulty. They’ll never write the best code or the best programs in the world; they won’t be elegant or well-structured or pretty to look at. But they’ll work. Historically, as I said, these are the kind of people who Access is made for. Access is a great tool, quite unparalleled. Sure, it’s a lousy database engine with a hideous programming language, but the power it gives these people is immense. So Access and VB6 and Excel macros are where it’s at for these guys.
At the next level, you have the journeyman developers. Now these people aren’t “business” people—they are proper programmers. But it’s just a job, and they’ll tend to stick with what they know rather than try to do something better. They might be a bit more discerning about their tools than the business types, but they’re not going to go out of their way to pick up new skills and learn new things. They might use VB6 or Java or C# or whatever; it doesn’t really matter to them, as they’ll use whatever offers them the best employment opportunities at any given moment. Their code will probably look more or less the same no matter what. They’re not going to learn the idioms of whatever specific language they’re using, because there’s no need, so it’s just not for them.
A key feature of these developers is that, most of the time, they’re writing “enterprise” software. This isn’t software that will sit on a shelf in a store for someone to buy; it’s custom applications to assist with some business process or other. Truth be told, it probably won’t have to look very nice or work very well; it just has to get the job done. With “enterprise” software, you can often get away with a clunky program, because the people who are using it have all been trained on what to do. If doing X makes the application crash, that’s okay—they can just be taught not to do X any more.
In spite of the often mediocre quality of the software these people write, they’re a group that’s immensely important to Microsoft. These programs are a key part of the platform lock-in that Microsoft craves. If a company has some business-critical custom application written in Visual Basic 6, that company isn’t going to roll out Linux to its desktops; it’s trapped on Windows.
At the final level, you have the conscientious developers. These are people who care about what they’re doing. They might be writing business apps somewhere (although they probably hate it, unless they are on a team of like-minded individuals) but, probably more likely, they’re writing programs in their own time. They want to learn about what’s cool and new; they want to do the right thing on their platforms; they want to learn new techniques and better solutions to existing problems. They might be using unusual development platforms, or they might be using C++, but they’ll be writing good code that’s appropriate to their tools. They’ll heed UI guidelines (and only break them when appropriate); they’ll use new features that the platform has to offer; they’ll push things to the limit. In a good way, of course.