‘Iacta alea est’

Making Developers Badass

Penned on 13th January 2016.

This is an article applying the body of Kathy Sierra’s latest book, “Badass: Making Users Awesome”—written for products—to the world of open-source languages and frameworks. When reading the book, the analogue between a startup’s product and open source ‘products’ such as frameworks Rails and Ember.js, or languages such as CoffeeScript and Elm, is uncanny and worth developing.

The premise of the book is simple: a product should not be judged on how it works but on what it enables the user to accomplish. Not by how it looks or feels, but by how it makes the user feel. The fact being, that by extension, the success of a product is directly proportional to how awesome the user feels when using it or after having used it.

It may be useful to illustrate with a few common and popular examples. Apple’s marketing is always a good place to start; they rarely list a description of features, instead opting for an emotional reaction by setting the iPhone in familiar contexts that are attractive to us. We want the iPhone because we see that the photos in the demonstration are perfect and beautiful and not only do we want a camera to help us take those photos but we want an iPhone because it seems like the perfect family and holiday come with it. It makes us feel like we are the most awesome photographer, and we have, not the most awesome camera, but the most awesome life.

We can add Instagram to that list. When people say, “Instagram is awesome, you should check it out,” what they really mean is “I am awesome.” Instagram is not about using filters to make photos look good, it is about making you look good. If we post enough filtered photos of food, it makes us feel awesome. Now that’s pretty alarming, but not something I’ll be exploring.

Microsoft Word, for all its ribbons and talking paper clips, makes it easy for everyman to put something respectable together, and why it thrives in the savants’ no-man’s land between text editor and desktop publishing software. When my mother prints out the greetings cards that Word helped her put together, she feels awesome.

I put that last example in because it is an important contradiction to our received wisdom that unless something is shiny, well-polished, teeth gleaming, works without any bugs et cetera, then it is a good product that will have no hindrances to being adopted en masse. Kathy Sierra quantifies the heretofore unquantified ‘product juice’, the magic potion which gives products their appeal and users their invincibility. Why does the best product not always win? How can a monstrosity like Microsoft Word be the most popular in its category? The best is not the bestseller.

If we talk about Rails in this context you’ll remember how ‘bad’ it was; it couldn’t scale, Ruby was a toy language, Rails itself violated software patterns and engineering principles. Rails was actually easy to get started with but hard to master. So why did so many people stick it out?

Now it came as no surprise when I heard recently that Kathy Sierra had been a major influence on David Heinemeier Hansson in the months and years before Rails came on the scene, but it did make me think, especially in light of having just read her book. Rails offers the perfect, text book example, in open source, of Kathy Sierra’s thesis.

A world of passion from Kathy Sierra

I first discovered Kathy Sierra about three months ago and I’ve been reading her Creating Passionate Users blog religiously ever since. As a big fan of her writing, I was naturally immensely delighted to see her highlight not only Ruby on Rails but also do a 37signals Passion Review.

It’s fantastic. I keep getting questions from people who wants to know why it is that Ruby on Rails are making 10-meter waves at the moment. And more importantly, how they can make the same happen for their own project. Kathy has a lot of answers for just that questions. It’s all about the passion, about making users “kick ass”, and for getting that Next Level groove going.

See how it just happened in this post? I really liked Kathy’s work, she blogged about mine, I returned the ball, and know you are probably positioned in an even more positive place about both of our stuff.

Passion, baby.

—David Heinemeier Hansson’s blog, 10th August 2005

You’ll be hard-pressed to find a Python developer who wouldn’t hold up Django as a superior feat of engineering—it was the framework for perfectionists with deadlines. The ducks were all neatly in a row. The documentation was excellent and it did the job.

How then did Rails gain mindshare with an ‘inferior’ product? Rails was focused on the wider context, Rails was not focused on the technology, but on the applications it would enable you to build. As the webmaster (remember them?) of our university rugby club website which was a mass of copied and pasted HTML and CSS, I needed something to make it dynamic to save me hand-updating all the pages for a simple layout change. I naturally arrived at PHP which solved my immediate problems, but as my vision and goals became greater I ended up having to buy six books to teach me how to accomplish various tasks: interacting with the database; database design; session and cookie management; object-oriented PHP for managing pages and templates effectively; I could go on.

But before I’d even read half of these books I came across the Rails ‘build a blog in five minutes’ video and it blew my mind. Mr. Heinemeier Hansson had essentially made my whole bookshelf redundant. Everything in my list had been encoded into a framework that was being served up to me on a plate. I didn’t even regret my purchases, but I threw them all out. Even the thought of using Rails made me feel awesome. It opened up a world of possibility. Rails has made people billionaires, many capitalized not on Rails, but on what Rails enabled. Basecamp, Twitter, GitHub, Heroku, Shopify—million and billion dollar companies. People didn’t love Rails because it was awesome, they loved Rails because it made them feel awesome. And because it enabled them to build awesome products and awesome businesses.

Rails had brilliant documentation and on top of that it had wonderful guides written for people who got things done. The forum was welcoming, blog posts were buzzing, all filled with the electricity of something that had made them come alive.

And it inspired an amazing community. Focused on learning and helping people learn. The school of ‘it’s so good we want you to know it too’: Railscasts, Peepcode, Envycasts (later CodeSchool), Rails Tutorial, RailsBridge, Rails Girls, the first, and majority of coding bootcamps. And Rails was so, obsessively, focused on the developer experience. The blog video, scaffolding, ActiveRecord, database migrations, associations, validations, view helpers, form helpers, session management. It was like having your own web development concierge, “Cookie? I’ve got that for you.” Add in Prototype and Scriptaculous and you had AJAX, effects and animations. In one magical box. Magical because it made you the magician. Look at what I built! Not, look at Rail’s superior technical featureset and obvious capabilities and advantages over the competition. No. Look at this service I’ve just created that it so cool that it breaks the Internet.




Thursday 7th January 2021.