raganwald
Wednesday, June 15, 2005
  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.
Finding Discord in Harmony

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: ,

 

Tuesday, June 14, 2005
  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:

 

Reg Braithwaite


Recent Writing
Homoiconic

Share
rewrite_rails / andand / unfold.rb / string_to_proc.rb / dsl_and_let.rb / comprehension.rb / lazy_lists.rb

Beauty
IS-STRICTLY-EQUIVALENT-TO-A / Spaghetti-Western Coding / Golf is a good program spoiled / Programming conventions as signals / Not all functions should be object methods

The Not So Big Software Design / Writing programs for people to read / Why Why Functional Programming Matters Matters / But Y would I want to do a thing like this?

Work
The single most important thing you must do to improve your programming career / The Naïve Approach to Hiring People / No Disrespect / Take control of your interview / Three tips for getting a job through a recruiter / My favourite interview question

Buy Raganwald a Coffee
If you enjoy reading my weblog, please consider buying me a Darkhorse Double Espresso, for just $3.15 Thank you!

Management
Exception Handling in Software Development / What if powerful languages and idioms only work for small teams? / Bricks / Which theory fits the evidence? / Still failing, still learning / What I’ve learned from failure

Notation
The unary ampersand in Ruby / (1..100).inject(&:+) / The challenge of teaching yourself a programming language / The significance of the meta-circular interpreter / Block-Structured Javascript / Haskell, Ruby and Infinity / Closures and Higher-Order Functions

Opinion
Why Apple is more expensive than Amazon / Why we are the biggest obstacles to our own growth / Is software the documentation of business process mistakes? / We have lost control of the apparatus / What I’ve Learned From Sales I, II, III

Whimsey
The Narcissism of Small Code Differences / Billy Martin’s Technique for Managing his Manager / Three stories about The Tao / Programming Language Stories / Why You Need a Degree to Work For BigCo

History
06/04 / 07/04 / 08/04 / 09/04 / 10/04 / 11/04 / 12/04 / 01/05 / 02/05 / 03/05 / 04/05 / 06/05 / 07/05 / 08/05 / 09/05 / 10/05 / 11/05 / 01/06 / 02/06 / 03/06 / 04/06 / 05/06 / 06/06 / 07/06 / 08/06 / 09/06 / 10/06 / 11/06 / 12/06 / 01/07 / 02/07 / 03/07 / 04/07 / 05/07 / 06/07 / 07/07 / 08/07 / 09/07 / 10/07 / 11/07 / 12/07 / 01/08 / 02/08 / 03/08 / 04/08 / 05/08 / 06/08 / 07/08 /