There's a clear difference between a programmer and a user, right? Except that there's a category in between those areas that blurs them. To coin a phrase: "Technology Integrators."
These people don't speak any particular programming language well enough to turn a blank notepad document into a functioning block of code. They know some basic principles of programming and are familiar enough with several languages to generally follow the sequence of code. The key that I think leads to the recent rise of this class of person: the Internet. They can look up classes and instructions online to work out how to modify things. They can follow example code and see how another implementation works, to port those ideas into their own projects.
I think I fit squarely in that category, though shifted toward the programmer end of the spectrum. With documentation handy, I can write working stuff from scratch. I don't have enough experience to be a Real Programmer, but I can do neat things with code.
Technology Integrators are, on the non-technical end of the spectrum, building blogs on MySpace. They're using Flickr -- not just using it, but generating the 'badge' code and putting that on their own blogs.
Toward the more technical end of the spectrum, they're modifying blog themes -- CSS and PHP. I am working on a project that sparked my thinking about this: integrating four separate blogs into a fifth that pulls from the databases of the first four. Linking each blog via the Flickr API and a few plugins to photos that can be included in individual posts. And having the fifth blog recognize and resize those photos to fit within its special constraints.
I'm not really writing any code from scratch to do this, but most "users" couldn't ever do something like this. And real "programmers" would write something far more elegant to do it. (Perhaps it's more appropriate to say that real programmers "could" write something more elegant. I bet there's not many people who actually would. But then, I don't think there are very many actual programmers.)
Without the middle category of "Technical Integrator," somebody like me is forced to decide whether he's a very, very good user, or a really bad programmer. I don't want to think I'm either.
What do you think?