I don't buy it, perhaps most of all because individual programmers in general aren't as specialized as a botanist vs. a string theorist. The Dijkstra post yesterday remarked on computers representing a radical novelty, I don't think it's too far a stretch to say this applies to programmers as a profession as well.
>On a vertical axis, a programmer … could be writing compilers … On a horizontal axis, they could be experts on databases, or weeding performance out of a GPU, or building concurrent processing libraries, or making physics engines, or doing image processing, or generating 3D models, or writing printer drivers, or using coffeescript, HTML5 and AJAX to build web apps, or using nginx and PHP for writing the LAMP stack the web app is sitting on, or maybe they write networking libraries or do artificial intelligence research. They are all programmers.
"They" could very well mean a single person. What does one call oneself in that case? I don't really like "Full stack developer" but it's the best I can think of, besides "programmer" that is. Perhaps "generalist developer" but that sounds wrong too. I don't do all of those things mentioned but I know how I could learn to do all of them adequately enough to create business value, and the specific things I do actually do are pretty varied. One day I might be writing in C caring about every byte of memory, the next I'm writing in Python and creating and destroying thousands of new objects willy nilly, wasting many megabytes of memory, and not tweaking the GC because the problem doesn't call for those optimizations. Maybe for an hour that evening I'm back in C again but writing a one-off prototype on an embedded system and so I don't bother freeing any of my mallocs or don't bother practicing any decent coding practices that aren't habitual since I know the code will be thrown away after its purpose is served. And the next morning maybe I'm firing up a hundred Amazon instances running NodeJS servers doing stuff with gigabytes of data.
I am a programmer. I program things. What, specifically, changes from day to day, sometimes from minute to minute. Trying to pigeonhole me into a specialty like other fields just doesn't work; programming is my specialty. If I'm at a corporation and the bean counters want to call me "Product X Maintainer" for a job title just so they can associate it with a salary, fine, whatever. My business card still says "Programmer" on it. When people actually want to know what I do, I'd be happy to go into more detail, but it quickly gets verbose and tedious and not very exciting to most people.
>On a vertical axis, a programmer … could be writing compilers … On a horizontal axis, they could be experts on databases, or weeding performance out of a GPU, or building concurrent processing libraries, or making physics engines, or doing image processing, or generating 3D models, or writing printer drivers, or using coffeescript, HTML5 and AJAX to build web apps, or using nginx and PHP for writing the LAMP stack the web app is sitting on, or maybe they write networking libraries or do artificial intelligence research. They are all programmers.
"They" could very well mean a single person. What does one call oneself in that case? I don't really like "Full stack developer" but it's the best I can think of, besides "programmer" that is. Perhaps "generalist developer" but that sounds wrong too. I don't do all of those things mentioned but I know how I could learn to do all of them adequately enough to create business value, and the specific things I do actually do are pretty varied. One day I might be writing in C caring about every byte of memory, the next I'm writing in Python and creating and destroying thousands of new objects willy nilly, wasting many megabytes of memory, and not tweaking the GC because the problem doesn't call for those optimizations. Maybe for an hour that evening I'm back in C again but writing a one-off prototype on an embedded system and so I don't bother freeing any of my mallocs or don't bother practicing any decent coding practices that aren't habitual since I know the code will be thrown away after its purpose is served. And the next morning maybe I'm firing up a hundred Amazon instances running NodeJS servers doing stuff with gigabytes of data.
I am a programmer. I program things. What, specifically, changes from day to day, sometimes from minute to minute. Trying to pigeonhole me into a specialty like other fields just doesn't work; programming is my specialty. If I'm at a corporation and the bean counters want to call me "Product X Maintainer" for a job title just so they can associate it with a salary, fine, whatever. My business card still says "Programmer" on it. When people actually want to know what I do, I'd be happy to go into more detail, but it quickly gets verbose and tedious and not very exciting to most people.