Paul Vick wrote a post called “There are only three types of programmers in the world…” in which he lists the three types he sees:
It’s an interesting perspective from a guy who has spent most of his career as a languages guy but who is now working as a database guy. But from my perspective his list is too short. There are also the programmers who want to write the next Halo 3 or better yet the next big successful game engine. And the programmers who want to just do weird stuff that no one else does. I think my friend Clint Rutkas fits in that latter category. He says he isn’t interested in the items Paul listed and I believe him. On the other hand he’s done some cool hardware/software combinations. These are the sorts of people who will probably be the ones to make natural user interfaces work BTW. Keep an eye on them.
Someone asked me on Twitter if user interface creation is a category. I’m not sure that it is a full category. A sub category of both the game and the weird stuff programmers perhaps. Not sure. And of course some people defy categorization.
For example, there are those of us who want to do it all. I was an OS developer for a while. That was some of the most fun and interesting work of my career. I would love to do it again. In graduate school I did a bunch of small, simple compiler projects and they really gave me a taste of what that was like. And I liked it. Part of me would like to create a language that takes the drag and drop methodology of Scratch or Alice and create a real general purpose language and environment out of it. Wouldn’t that be fun? OK maybe not for everyone. I have spent some time playing with databases. Honestly the math gets involved there pretty quick it seems. But the challenges! Wow! talk about excitement. OK am I on geek overload? Sorry.
There is more to do than one person could ever do of course. At some point in time most people have to pick an area and try to become the best that they can be at it. But with the choices out there that shouldn’t be a problem. On the other hand, how do we expose students, especially pre-collegiate students, to all these possibilities? That’s something we need to do.
Don't forget about the programmer who sits in a cubicle and updates bank software for the 2000 switch.
I'm not sure that is a type that people aspire to become. :-)