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
Tune in, turn on, drop in
Over on
slashdot there's a fairly predictible thread discussing Steve Jobs' alleged advice to students: drop out of college.
There're the usual arguments about why a college education is more than the coursework (it had better be: many CS undergraduate programs would be right at home in a Java Vocational College). There're the usual arguments about how intelligent, drivien indivduals would succeed without a degree. And of course more than a few people shrilly deride Steve for giving dangerous advice.
What I found interesting about the quote is that Steve doesn't seem to be saying college is useless and that you should quit college and get a job. Have a read over at
Wired:
He said his real education started when he "dropped in" on whatever classes interested him -- including calligraphy. Jobs said he lived off 5-cent soda recycling deposits and free food offered by Hare Krishnas while taking classes.
He told the graduates that few friends could see the value of learning calligraphy at the time but that painstaking attention to detail -- including mastering different "fonts" -- was what set Macintosh apart from its competitors.
I take this as meaning that the key is to
drop in on stuff that ignites your imagination, regardless of the cost. I take this as espousing internships, networking, volunteering, hacking, fiddling, puttering, fiddling, hobbying, auditing, experimenting, and yes, writing code in your garage.
p.s. Here's an unrelated email I've been circulating:
Hello:Some friends of mine are looking for a talented individual with deep Enterprise Java knowledge. Their environment is excellent: laid back atmosphere, plenty of agility, and long-standing relationships with blue chip clients like Apple and ING Direct.I can share references from employees and contractors who just love working with this company. Of course, they're looking for the same: an individual with a knapsack bulging with enthusiastic references from people who have just loved working with her/him.Their office is a stylish loft just steps from Roy Thompson Hall and their kitchen is stocked with caffeine and sugar. Get in touch with me directly if you'd like to explore an excellent opportunity.Warm regards as always...p.s. Naturally, almost everyone I know who has the chops to impress me has a great situation going really well. But almost everyone I know who is "smart" and "gets things done" seems to know two or three other people who are smart and get things done... and maybe this email might be perfect for them. Could you please pass this on? Introducing two friends is a great way to get two people to owe you a favour in one easy step :-)Labels: passion