Thursday, June 4, 2009

Start small and be agile

I recently came across this great quote from Linus Torvalds, the creator of Linux, from a 2004 Linux Times interview

Interviewer: Do you have any advice for people starting to undertake large open source projects? What have you learned by managing the Linux kernel? 

Linus Torvalds: "Nobody should start to undertake a large project. You start with a small _trivial_ project, and you should never expect it to get large. If you do, you'll just overdesign and generally think it is more important than it likely is at that stage. Or worse, you might be scared away by the sheer size of the work you envision. 

So start small, and think about the details. Don't think about some big picture and fancy design. If it doesn't solve some fairly immediate need, it's almost certainly over-designed. And don't expect people to jump in and help you. That's not how these things work. You need to get something half-way _useful_ first, and then others will say "hey, that _almost_ works for me", and they'll get involved in the project. 

And if there is anything I've learnt from Linux, it's that projects have a life of their own, and you should _not_ try to enforce your "vision" too strongly on them. Most often you're wrong anyway, and if you're not flexible and willing to take input from others (and willing to change direction when it turned out your vision was flawed), you'll never get anything good done. 

In other words, be willing to admit your mistakes, and don't expect to get anywhere big in any kind of short timeframe. I've been doing Linux for thirteen years, and I expect to do it for quite some time still. If I had _expected_ to do something that big, I'd never have started. It started out small and insignificant, and that's how I thought about it." 

Linus has really nailed the essence of Agile - get something out into the market quickly and let it develop from there.  The era of mutli-year waterfall projects are dead.  Let your project grow from a small acorn...

1 comment:

  1. The comments from this interview lead us to some important decisions about the best team structure for an early stage project; whether or not there is real value in spending a lot of time with a well formed project vision and finally the impact of Ego in our projects.
    We are taught that a good project must have definitive scope to succeed and that a well formed vision is critical to forming the lead. Strong leadership is essential to team success.
    The Linus’ interview makes me pause to re-examine some of my assumptions about the right mix of leadership and vision. Also important is the sequence of when to add each of these elements to the effort. His comments suggest there is a great benefit to less project definition.
    In a recent seminar I conducted; a senior level product manager offered a great insight to us all on how to get a project started.
    “If your goal is to collaborate and to gain buy-in there is an advantage to writing well structured but incomplete market requirements.
    Linus' warnings about overdesigning a project in the early stage make a similar point.
    Phil, good post!