— L. Frank Baum, The Marvelous Land of Oz
After a series of rather technical posts, I feel a strong urge to release some lighter reading. Let me introduce a new series called “people-patterns in software development” (PPSD).
As a freelance software developer, I’ve met literally hundreds of people over the years. People are individuals, of course, and no two people are the same, but I have observed that certain personalities traits — personality patterns — appear over and over again. What an amazing zoo we live in!
The goal of PPSD is to collect and classify these personalities, to provide a taxonomy in an exaggerated, tongue-in-cheek way.
If you, dear reader, have also come across “outstanding” personalities and want to contribute to this compilation, don’t hesitate and drop me a line! Without further ado, let’s get started with our first personality pattern, the Programming Hipster.
If I had to pick one characterizing adjective that describes a Programming Hipster best it would be “different”. Programming Hipsters have one distinct goal: to be different from the pack and they demonstrate this not only by behavior but also by appearance. A Programming Hipster is the opposite of the average, boring mainstream developer, aka. John C. Coder.
A Programming Hipster is male and usually only found in small, software-centric companies, mostly startups where the average age is below 30. You rarely find him in medium-to-large environments, because his style is way out of line with what typical corporate identity standards demand.
Classical examples of Programming Hipsters are the founding fathers of Unix, like Dennis Ritchie and Ken Thompson. Here is an illuminating quote from “The Art of Unix Programming” by Eric Steven Raymond:
“The pioneering Unix programmers were shaggy hippies and hippie-wannabes. They delighted in playing with an operating system that not only offered them fascinating challenges at the leading edge of computer science, but also subverted all the technical assumptions and business practices that went with Big Computing. Card punches, COBOL, business suits, and batch IBM mainframes were the despised old wave; Unix hackers reveled in the sense that they were simultaneously building the future and flipping a finger at the system.”
What does a programmer look like that wants to be different? Usually, programmers already look different, at least compared to average business people: instead of suit and tie they prefer casual clothing like t-shirts, jeans, and sneakers; by and large they don’t care much about looks. The Programming Hipster, however, wants to be clearly discernible from his peer programmers and appearance matters a lot him. The clearest signs of a Programming Hipster are:
1. Either long hair, especially pony-tailed long hair or shaved head.
2. A monumental full beard.
3. Shorts worn in wintertime.
4. Woolen hats worn in summertime.
5. A big headphone, worn all day, even when visiting the bathroom.
Even a single match from this list is a strong indication that a person is a Programming Hipster; more than one is 100% proof.
Programming Hipsters care a lot about their craft and their technical and programming skills are clearly above average. The same can be said about their intelligence. They are characterized by high-self esteem and usually hold strong opinions. They are not the easiest people to get along with. Most of them can be considered lone wolves that shouldn’t be mixed with the herd. Some of them are team-players, but most of them are not. Thus, Programming Hipsters mostly work on projects where all members have the exact same values and opinions; that is, single-person projects. The biggest shortcoming of a programming hipster is — you guessed it — his ego.
In almost all cases, Programming Hipsters are keyboard virtuosi and disgusted by mice.
To them, only Vi and Emacs deserve to be called “editor”, provided that the color scheme is set to dark. Every other so-called “editor” is just “Notepad” or a derivative of “Notepad”, which, like any other product originating from Redmond, is miles beneath them.
Consequently, they prefer CLIs (Command-Line Interfaces) and use GUIs (Graphical User Interfaces) only when forced to. Since Bash is so prevalent (“mainstream”), they favor a highly-customized version of zsh.
Programming Hipsters pick programming languages from the lower end of the Tiobe index (e. g. Rust) but their ideal programming language doesn’t even appear on the index (e. g. Haskell). Mainstream languages like Java, C, C++, even Python are generally frowned-upon, even though I remember that one Hipster Programmer lowered himself to participate in a C++11 project (subject to the condition that he may use some advanced features from boost and the not-yet-released C++20 standard).
According to the Q²S² framework, a Programming Hipster’s rating is 4/4/2/2.
A Programming Hipster is a colorful addition to every software company, they are the parrots among the sparrows. It would be a mistake to assign such extravagant persons to mundane product development projects; they will, however, excel if they work on prototypes or bleeding-edge research projects.