Are you a Ninja Developer?

Posted by archiveDNA on Wednesday Jan 23, 2008.

A lot of people talk about “agile development,” which for 90% of companies translates to a rapid build-and-deploy process.  Toward the end of last year, we concluded that our LAMP environment wasn’t going to cut it for that—and made the move to Ruby on Rails (which we’re now affectionately calling our LAMeR stack).  And yes, Ruby on Rails is a hell of a lot of more agile than PHP, and we’re quite happy with how rapid our development process is becoming.  But it isn’t enough.  Agility alone won’t allow you to dominate.

It also takes discipline, and when I think of a fanciful character who combines both agility and discipline, I think of one thing…


Ninjas are agile, but they’re also disciplined.  If the first pillar of modern development is agility, they add three more categories of expertise: learning, knowledge and confidence.

In computer gaming, a “ninja” is a pejorative term for a quick-to-act player who steals an item out-from-under the group they’re with.  For gaming this is a Bad Thing, but for development organizations—this is good.  There’s a wealth of Open Source code, and most problems have already been solved.  Sure, every ninja has their secret move—and every great development organization has some special mojo they use to dominate the competition… But people have already mastered and made available the things you’ll need to know.  That’s where the learning comes in.  A good ninja needs to look outwards, know how to search, know how to be a good student of others.  If you’ve read the Cathedral and the Bazaar, that means accessing the bazaar of readily-made components—because today that bazaar is hella big.  Maybe it should even be renamed the Dojo.

Knowledge is about knowing both your enemies as well as your friends (your customers).  It means being data-driven.  It’s making metrics, analysis and a deep understanding of your users a central part of the product development process.  It’s using things like A-B testing to help you know what works best, about partnering with users up front to have them guide you to better decisions and then developing the measurement systems that tell you whether you’re enhancing the stuff that people really care about.

Confidence is about integrating QA into the process.  Most people will tell you that test-driven development is an important element of Rails (or agile development in general). Yet with most RoR shops that I’ve seen, QA and testing are still more of the old-school, reactive method.  Great QA includes unit-testing and mechanized, functional testing as part of the up-front process.  The advantage isn’t just better quality.  This gives you the confidence you need to deploy ideas and changes rapidly without the level of worry this would normally entail.

Lastly, and this isn’t a pillar of ninja development—but rather a fact.  Anyone who has watched a ninja movie knows that a small team of inspired, highly trained ninjas will defeat a near-infinite number of clumsy ninjas who might wear the right costume but don’t truly pursue the righteous path.

(GuildCafe is hiring.  We’re looking for bright, energetic people who love games and want to be part of the development organization I’ve described above.  If you aspire to some of the same ideals—and whether you’re a Master or a dedicated student—we’d love for you to talk to us about becoming part of the future of social networks, gaming and ninja development.  Drop us a line at: jobs AT guildcafe DOT com.)

Posted in the categories: Uncategorized


  • Matt Hargett

    My friend started “porting” his very popular, high-trafficked PHP-based web site to RoR a few years ago. He did it in a 100% incremental way, employing most XP practices (including TDD). It’s now completely RoR and scaling quite well. It wasn’t easy, and some trails were blazed in the process, but it is doable.

Share this by easily informing your online social networks.
Share this with your friends on Facebook.
Share this with your friends on Twitter.
Share this with your friends on Friendfeed.
Share this with your friends on Tumblr.
Submit this URL to Digg.
Submit this URL to Stumbleupon.