« When clients (and bosses) go bad... | Main | Passion is blind »

Creating Happy Programmers

David Heinemeier Hansson (from 37signals) was intereviewed by eWeek recently, and the title is Ruby on Rails:Making Programmers Happy. While the title delights me, what really intrigues me is that people are even having this conversation. As Nat Torkington explained to me in his non-politically-correct but useful way, "It's no longer aspergers and emacs...we're putting people back into the equation."

Understanding the connection between happy users and happy developers (or happy anything-supporting-users) is a big step forward. The HR folks have cared about happy employees for a long time, but the notion of "happy programmers" was always more about benefits, perks, or pay... now a lot more people are starting to care--and talk--about things like programming language, API, framework, methodology, etc. The things that keep you in a flow state.

This just made my day, David.

Posted by Kathy on November 8, 2005 | Permalink


TrackBack URL for this entry:

Listed below are links to weblogs that reference Creating Happy Programmers:

» Silence from JakeW - GuerillaProgrammer
[Read More]

Tracked on Nov 10, 2005 10:35:29 PM

» Does Rails Make You Happier? from paulrobinson.net
NimbleCode asks Are You Happy because you use Rails? Flow is the reason why some frameworks like Ruby on Rails are so appealing to programmers; it straddles that line between utter boredom (coding a web site in PHP like always) and high anxiety (having to [Read More]

Tracked on Aug 5, 2006 10:49:48 AM


Thanks, Kathy! It's all about the passion. Despite having programmed for 5 years, I didn't feel like a programmer before I met Ruby. Something magical happens when you can't stop smiling and is fed a constant stream of "I Rule" moments.

I had a huge one just recently when we implemented inline extensions for associations with Rails 0.14.3. One of those moments of awe when you deeply cherish your tools and your own increased ability to weild them.

I have met no other environment that has such a high ratio of "I Rule" to "I Suck" moments. That's why I can't get my arms down in celebration. And what a selfish schmock I'd be if I didn't try to share that.

(And your work is constantly feeding me with ideas and vocabulary on how to)

Posted by: David Heinemeier Hansson | Nov 8, 2005 2:45:40 PM

Most programmers I know got into the field because programming made them happy once upon a time. Unfortunately, many corporate programming jobs can suck the life out of that passion. Choices in platform and language are often based on misinformation, complacency or any number of bad reasons (none of which involves programmer happiness.) The software development lifecycle also tends to get controlled to the point where happiness becomes a distant memory. Ruby and especially Ruby on Rails is changing all that. Programmers are finding happiness again. If a company wants to succeed they need to pick up on this. As Albert Schweizer said, "Happiness is the key to success."

Posted by: Steve Akers | Nov 8, 2005 2:58:51 PM

Between David and Kathy, I cry myself to sleep at night. Knowning that (programming) life could be better and wishing I worked for either of you.


Posted by: Daniel | Nov 8, 2005 3:13:53 PM

Hey, I use Emacs! :)

Posted by: Alex Schroeder | Nov 8, 2005 3:33:54 PM

Hey Alex,

I use emacs too, the rails-core team even has some vi-holdouts (Jamis and Jeremy). The larger point still stands though ...

Posted by: Michael Koziarski | Nov 8, 2005 5:15:30 PM

Having the tools to do the job! It's sad to think that all it takes to keep me happy as a developer is a new machine every so often (~$2k every two years) and companies can't even do that (forget about bonuses or career path, etc.)! Instead, I have my manager playing with his new blackberry while I'm down one machine because I had to decide between my laptop or desktop. Eeeks!

Posted by: Ben | Nov 8, 2005 8:02:52 PM

Yes, instrinsic aspects that make for happy programmers are a good thing!

As a seasoned developer, I can recall the time when any OO language made my happier than PL/I or COBOL! I was happy learning Smalltalk but that didn't take off and I found my way into the Java and J2EE world. Which is definitely further towards the happy end of the spectrum. However, now that I am appreciating the delights of Ruby and Rails in particular, I don't think I'll ever look at Java in the same way again.

For me, Rails is taking programming to a new level in terms of "intrinsic programming happiness".

Posted by: Keith Pitty | Nov 9, 2005 2:41:19 AM

shame they/you couldnt find a picture of David smiling... a smile is a great indicator of happiness and flow...

the face i see there looks more like ennuie than flow

Posted by: james governor | Nov 9, 2005 4:06:41 AM

I'm starting to feel a little alientated in my own circle.

You see, I like Java. I work on a huge, high availability system based on J2EE, and I thrive on the challenges it brings. Our system uses clustered app servers, Oracle RAC, and interfaces through web services with multiple other systems that are just as huge and complex. Before I worked here, I had another job working on another huge J2EE based system, and before moving, entertained offers from 2 other huge J2EE based operations.

I don't get why there is so much insistance that these systems are few and far between. I didn't have to hunt for these jobs or companies...I found them pretty easily. Are they the 80% that should use Rails? They certainly aren't the 15% that are too small, and none of them required legacy integration, so I don't count them in the 5%. But there is just no way that Ruby on Rails is appropriate for these systems.

I get passion. I love it. I try and bring it in to my workplace and infect everyone else around me. I read blogs, keep up to date on the newest trends. And maybe it's because Rails has reached the KoolAid point, but I just feel that they may have taken the passion too far. I have started avoiding Rails blogs, because I feel like I am being told I don't get it, I'm unenlightened, or just plain ignorant. I've started to look at it, but I'm forcing myself over my gut desire to run away because of the attitude.

Posted by: Cynthia | Nov 9, 2005 7:20:04 AM

Cynthia: You are not alone in these feelings. And you are right about the prevelance of J2EE jobs. (Let's not forget .NET either.) Ruby and Rails just seem huge right now because the passionate users are so vocal. This is creating a buzz, and word of mouth is very powerful. For the most part, however, corporate IT doesn't know anything about Ruby or Rails. And if they do, they are not even close to considering using them. Don't get me wrong, Rails is making headway, but it still has a ways to go in that arena.

I also completely understand where you're coming from regarding the attitude. At one point I also stopped reading Rails blogs. Sometimes it seems like everyone thinks they have suddenly discovered the one and only way to do things. Then I realized that this is just the nature of passionate evangalism. For them, things like Ruby, Rails, small teams, less is more, etc. *are* the only way. For you, Rails may not even come close to meeting the requirements of your large-scale, complex project. But I truly believe that we can learn from teams of all sizes, companies of all sizes, projects that fail, projects that succeed, etc. If this is true then I won't learn anything from the Rails guys if I don't become part of their conversation. And maybe I might even be able to contribute something of my own.

On a side note, I have worked in all aspects of application development but haven't programmed seriously in a long time. I am just now starting to learn Rails and I have to say that it looks really is fantastic so far. All of the mundane things that I remember hating about building web apps seem to be non-issues in Rails (convention of configuration.) This leaves only those things that were always fun for me... creatively solving the problem at hand. If you haven't taking a look at it you really should.

Posted by: Steve Akers | Nov 9, 2005 8:22:14 AM

It's tough when you're passionate about something and a new thing comes along...

Being in the flow state working on Java is definitely possible. Especially if you're using a great IDE (like IntelliJ) that lets you recompile things and keep going without having to restart.

Still, it seems a bit inevitable that a new language/framework would come along and challenge Java. Especially the J2EE stack, which is so un-fun.

Is someone working on Java on Rails?

The big question I have about Ruby is, "Does it support refactoring?" Without this, I can't see moving my team to it. If I can't refactor, then I can't be in the flow.

There is deep reason why programmers need to have fun, though. I assert that the programmers who are having fun create most of the value in any software project.

Which is to say, they create most of the innovation, and the innovation creates most of the lasting value.

Posted by: Charlie Evett | Nov 9, 2005 8:36:59 AM

Ruby most certainly supports refactoring, but not necessarily through tool support. Rather, refactoring is supported by having less lines of code and simpler structures, such that making changes require less mental overhead (and thus rely less on automation).

Rails supports refactoring by strongly encouraging unit and functional testing. The stuff that gives you the confidence to do sweeping refactorings and still believe that your application works afterwards. (On a logical level, not just on a type-checking level).

Rails likewise supports refactoring by having a change-is-instant approach that means you take smal steps, verify they work, and then take another. Exactly the process as outlined in the Refactoring book by Fowler. And exactly the process described by Beck and others for test-driven development.

Refactoring is much more than a short-cut in IDEA.

That being said, having tool-enhanced refactorings _is_ very nice. But it's far less of a requirement in Ruby than, say, Java. But I'd love to see it happening in Ruby too (and the Smalltalk environments have shown us how nicely that can happen in dynamic languages).

Posted by: David Heinemeier Hansson | Nov 9, 2005 9:34:06 AM

Over the decades, dynamic language environments such as lisp, smalltalk, hypercard, PowerBuilder (?) etc. have produced very happy passionate programmers who produce great demos but generally NOT world-changing applications.

For example, as my foggy memory serves, in the late 80s I would go to object oriented programming conferences (OOPSLA!) and see cute apps written in Smalltalk, and then went I went to MacWorld there was the first version of PhotoShop, written in Object Pascal.

This is for two reasons -- the dynamic languages do not scale to handle real world data and processes, and they don't work as well for larger teams of not-as-brilliant developers.

What is it about Ruby on Rails that is different from those that have gone before it?

Or is Ruby on Rails more equivalent to a 4GL? Is it PowerBuilder for Web Apps?

I'm sorry I'm too ignorant of it to contribute more meaningfully to the discussion. Clearly, I need to try it.

Posted by: Charlie Evett | Nov 9, 2005 1:08:01 PM

Akers said: "For the most part, however, corporate IT doesn't know anything about Ruby or Rails. And if they do, they are not even close to considering using them."

This is mostly still true (though changing quickly, I suspect). Perhaps this is the reason we are seeing so many small startups using RoR? Once programmers taste this kind of happiness they want to use it fulltime. It's definitely the programmers in the trenches who find these sorts of new things first and it takes a while for the corporate management types to get a clue. Before they do, they end up losing many of their early-adopting, alpha geeks who go off and start their own small, agile companies (and those that still remain only stayed around because they were able to sneak the new technology in the back door).

Posted by: Os | Nov 9, 2005 1:22:09 PM

Rails is old buzz, give me TurboGears!

Posted by: as in freedom | Nov 9, 2005 11:42:41 PM

Is the answer that everyone is different, and enjoys different things. Some people are motivated by technology, others the chance to progress into a managerial role. Should management talk to each individual and understand what makes them happy, and then change the structures and development environment of the project to do things to accommodate this as best as possible.

Posted by: Richard Jonas | Nov 11, 2005 3:53:15 AM

>This is for two reasons -- the dynamic languages do not scale to handle real
>world data and processes, and they don't work as well for larger teams of
>not-as-brilliant developers.

>What is it about Ruby on Rails that is different from those that have gone before it?

I'll speak to Smalltalk specifically (not as a user, but someone who's read about it a lot).

Smalltalk is used, yes in niche markets, but on real world data and processes. There's lots of large Smalltalk apps in the financial world (stock trading, etc).

The "large teams of non-brilliant developers" may be closer to the truth. IMO, Smalltalk was perceived, either because it actually is this way or because the vendors pushed it, is all about the Objects, and if you aren't good with OO you won't be good on a non-trivial project.

I see two main advantages Ruby has over Smalltalk; Ruby is multi-paradigm, and the source code is file based, not image based, where in Smalltalk you have to fire up the big environment, work in it, and save the whole environment. This makes Ruby more friendly to start learning, and learn in smaller increments.

Posted by: Richard Cook | Nov 11, 2005 8:18:57 AM

The important thing to remember about programming languages is that they come and they go. The only thing that will create good code is good programmers. That being said, management's job is to either:

1) Hire programmers who are passionate about the programming language(s) being used

2) Port the system(s) over to programming language(s) that the current programmers are passionate about.

Many places will try and find someone with the right letter soup of skills and years of experience and then hire that person. Ewww

Posted by: Bob B | Nov 11, 2005 10:24:00 AM

"Over the decades, dynamic language environments such as lisp, smalltalk, hypercard, PowerBuilder (?) etc. have produced very happy passionate programmers who produce great demos but generally NOT world-changing applications."

Because, you know, MYST never changed the world or anything. Nor did Viaweb, obviously. I mean come on, buying something over the web? That's just a crazy Lisp idea; probably a side effect of all those crazy parenthesis.

Posted by: Phil | Nov 11, 2005 4:10:06 PM

I think programming mood can be affected by the language and tools used, but often ones work environment of project can be somewhat less than passionate.

However Ruby does rock, I mean really it changes things for the developer it's not just the buzz. We recently (over the last year or so) realised we were missing the scripting spark that we used to have. We use a lot of server side Java having moved there some many years ago. We used to use a mixture of Perl and PHP, by moving to Java we reduced the wheel reinventing, but lost some of the agility and spark. We were looking at using Ruby but couldn't find a way to use it with our builtup libraries (We have a lot of existing clients to support). We looked at Jython (Python on JVM) but it didn't cut it, in the end we discovered Groovy (http://groovy.codehaus.org/) which is designed as a scripting language for Java and has a lot of the spark we were looking for. We have now built Groovy into our toolset and use it to do the agile and creative requirements of our clients requests. Those that may be a little cheesed of with Java's lack of agility, coolness etc.. might want to check groovy out, and it is really nice to use and play with as a language, giving us some of the same upside we found with ruby, but without sacrificing the Java codebase that we built up, particularly in the enterprise space.


Posted by: Al | Nov 14, 2005 5:05:08 AM

Interesting that most of these comments imply that it's the technology, and not the programmer, that is responsible for creating excellent user experiences. Did Ruby program David to make him considerate and thoughtful, or did David use Ruby to express this part of himself through his work (Rails)?

Posted by: James Tikalsky | Nov 17, 2005 8:37:28 PM

I want to know when we'll see the first edition of Head First Ruby :-).

Posted by: Joe | Nov 30, 2005 9:16:37 AM

I invite you to visit

GenAndRun 0.2 which is a Java on Rails attempt to simplify the Java development.

Now a 3-min video demo is added hopefully to prove that Java can be EQUALLY elegant.

Oscar Lee
Xenium (Hong Kong)

Posted by: Oscar Lee | Feb 10, 2006 3:14:01 AM

The comments to this entry are closed.