Hipster-driven software development
The Hipster Cycle is not only alive and well in the world of software development, it seems to be the primary mechanism of software development “progress.” The good news is that a lot of ground has been covered, the bad news is everything we know about writing software is wrong. Will we be forever doomed to repeat our mistakes? Probably.
How the software Hipster Cycle works
- A well-known, widely used programming toolset (Ruby on Rails, PhoneGap etc) or development practice (AGILE / Waterfall / Integration Testing) becomes increasingly complicated, hard to learn, bloated and/or the core community are asshole neck-beards that no one wants to work with.
- Some entrepreneurial individual has an “emperor has no clothes moment” and writes a new, slim toolkit, clever article or other foundational text with the goal of “making software development fun and easy.” They post about their “new” thing on Slashdot, a bitter religious argument ensues in the comments section. Note: if you hear someone say that X makes software development “fun and easy,” run!
- Because this toolset is new, it has fewer features. The foundational text is slim. The kick-off article is only one page. The source-code file is 3kb. All the people who are just learning how to program can get into it easily and form a new community within days! Look everyone it’s Sinatra – It’s like RoR without all that overhead crap!
- The “Bloat” phase begins: Oh wow…wouldn’t it be cool if Node.js did XYZ? What if we imported ActiveRecord, generators and scaffolding from ROR? Needs factories and dependency injection from Spring…you get the idea.
- Before you know it, our new software development practice or programming tools are just as bloated and byzantine as the thing we were trying to replace. The community of people supporting the project begin growing neck-beards, writing books telling you how you are doing X wrong and going on speaking tours. Our lovely, light-weight new project management practice has become as evil and complicated to implement as the old one was. Our Node.js framework is now five times larger than Ruby on Rails and now requires a college degree and 7 years of training to learn.
- Point of no return aka the “Cult” phase: Whole industries of consultants now make a living off teaching how to do X the right way. Entire categories on sub-sections of the topic occupy whole bookshelves. People start feeling the need to bring books to meetings with underlined passages in them so they can prove to one another that they are doing X wrong. Software developers have long ago stopped believing in whatever it is and retreated back to subversive IRC channels to mount their next attack.
- Someone writes an article on Reddit…Hacker News…etc declaring that the emperor has new clothes again and a new, fun, simple and easy-to-use system is needed. The comment section becomes WWWIII, consultants start cracking their knuckles and Kickstarting ebooks.
Everything is “Over”
If you aren’t yet convinced that everything is “Over,” take a few minutes to read these. I thought I knew something about software development, it turns out I was wrong:
- Waterfall development
- AGILE development
- Test Driven Development
- Design Patterns
- Extreme Programming
- Object-Oriented Programming is Overrated
- Integration Testing
- HTML5 Mobile Apps