Working code attracts people who want to code
Charles Miller made a profound observation:
Working code attracts people who want to code. Design documents attract people who want to talk about coding.
He happened to be talking about a new open source initiative, but I couldn’t help but relate this simple principle to my experience with agile methodologies.
I have found that Big Design Up Front environments attract people who want to talk about software development, while iterative environments attract people who want to develop software. Is it any surpise that in companies where BDUF is predominant, nobody wants to stoop to coding? Everyone wants to be an “architect” or a “Business Analyst” or a “Product Manager.”
Recently I met a very bright fellow who is implementing a big new framework initiative. Developing within the framework seems to be quite frustrating and time consuming. Of course, there are many buzzword-compliant benefits promised from the framework. But there’s a certain “smell” to the project.
After some reflection, I realized that the problem with the framework is that the “architects” behind it have little or no interest in software development. Unlike
today’s flavour-of-the-moment open source framework,* the developers of the framework do not actually use the framework. They’re architects, they don’t actually code applications. They don’t eat their own dogfood.
Their framework was developed for people who like design documents, buzzwords, and PowerPoint slides. And for that reason, there is lots of documentation and white papers. But there is precious little in the way of working example applications.
I suspect—although I don’t actually know—that the framework began with a white paper, and its destiny was forged then and there by that simple act.
Turning back toward the light, I think there’s a powerful lesson. Begin each project as Scrum begins, with the simplest chunk of code that delivers a benefit. If you’re building a framework, start with an example application in mind. Don’t make it “hello, framework.” Begin with something you can use and make sure your framework actually makes your life easier.
I’ll close with a joke:
A programmer is someone who is so irritated by small inconveniences that they will spend weeks writing a script, so they can spend days debugging same script, so they can save five minutes of their time, which they will waste reading slashdot on reddit.
Just remember that if your work actually saves you some time you’ve created something of value. And the best way to make that happen is to
start with working code.
* Ruby on Rails (link above), is the foundation of Basecamp, a software service for distributed project management.Labels: passion, popular