Computing Thoughts

Becoming a Grass Farmer

by Bruce Eckel

January 26, 2009



Summary

Since my (personally) revolutionary experiences with (1) dynamic languages and (2) open spaces conferences, I have been trying to understand how these revolutions happen. This presentation from the TED conference has given me some insights.


Here's the presentation (the part I'm talking about starts at 10:25 if you're impatient, but the whole talk is only 18 minutes long). Note that you can also get TED talks as audio podcasts through iTunes, and I've found almost every one of them to be mind expanding, so I've been listening to all of them. (Aside: I hadn't heard of the conference until someone pointed out a talk, and over time I've become a fan. Now I've even thought of attending the conference, to meet like-minded people. This makes a strong argument for capturing and distributing conference talks; I'm pretty sure we've been increasing the size of the Java Posse Roundup by podcasting the discussions).

The part of Pollan's TED talk that haunts me is his experience working with the innovative organic farmer. They section off part of the farm, and let cows graze on it. They move the cows, and let it sit for 3 days, during which time the maggots in the cow poop get all big and juicy, but don't turn into flies. At which time they release a bunch of chickens into the section, who love maggots and go tearing through the cow poop, scattering it all over and eating the maggots before they become flies. At the same time, they are distributing high-nitrogen chicken poop all over the section. When this is done, the section is left for a few weeks (while the cows and chickens are off working other sections), and the most amazing grass grows in that section, sending roots down into the soil. Then animals are brought back to eat this grass, which causes the roots to die back (to match the length of the grass above the ground), aerating the soil and giving the various underground microbes sustenance. The result: tremendous output of beef, chicken and eggs, etc. per acre, while at the same time enriching the soil. With no pesticides or fertilizers.

What fascinates me about this is that it's the same old tools, applied differently. The farmer jokes about "being a grass farmer," but by seeing that everything hangs on growing the best grass that you can, I think he has cracked the code of farming.

It's the change in perspective that makes the difference. In the case of farming, rearranging things so that every species gets what it wants the most.

I've been asking myself why dynamic languages and open spaces work so well, not just because I'm amazed but more importantly because I want to understand how to discover that "essence" that allows you to turn something into the best possible thing it can be. Indeed, if you listen to this roundup session, you'll hear me trying to figure it out for the daily working experience of software development (I'd like to create a company/group/association of developers that self-organizes the way an open-spaces conference does, but I have no idea how to accomplish that).

This idea of "essence" is also at the core of Domain-Driven Design, where you first discover the true nature of the Domain Model, and then the rest of the design flows from that (however, I do think that sometimes there are overarching architectural issues that can supersede aspects of the domain model. Perhaps Eric would argue that these then become part of the domain model).

So in the spirit of "make it about growing the best grass you can, everything else will follow," here's what I think might be the essences of some revolutionary ideas:

Dynamic Languages: Creativity. Programmers want more than anything to create. Give them more power to create, and they will be more creative. On the other hand, teach them that programming is all about boundaries, and they will look for boundaries. Is it any wonder that programmers who only learn Java in college want to know what the rules are, and assume that if the language doesn't tell them what to do they are free to make stuff up?

Open Spaces: Discussion. People go to conferences because they hope to have interesting discussions. Make the conference all about discussion, and it will be the best experience possible.

Agile: Honest Communication. All the biggest problems in software development start when people feel they must prevaricate. Little fibs eventually grow into giant fables, and everyone gets drawn into the deceit. The essence of Agile/Lean/Scrum is making sure everyone involved knows what's what, all the time, so that people can focus on producing software instead of bigger and bigger lies.

Business: Working Together. You can certainly argue that forming a business is all about making money (like running a farm is about producing beef and eggs), but I think that maybe the "grass" of business is that we want to experience the synergy of working together. My thoughts on this subject are still very early but if the organizing principle is "how can we optimize the experience of working together?" then I think we'll see some very interesting results.

What other essential concepts are out there, which -- if we can see them and reorganize around them -- can completely change the experience of a thing?

Talk Back!

Have an opinion? Readers have already posted 16 comments about this weblog entry. Why not add yours?

RSS Feed

If you'd like to be notified whenever Bruce Eckel adds a new entry to his weblog, subscribe to his RSS feed.

About the Blogger

Bruce Eckel (www.BruceEckel.com) provides development assistance in Python with user interfaces in Flex. He is the author of Thinking in Java (Prentice-Hall, 1998, 2nd Edition, 2000, 3rd Edition, 2003, 4th Edition, 2005), the Hands-On Java Seminar CD ROM (available on the Web site), Thinking in C++ (PH 1995; 2nd edition 2000, Volume 2 with Chuck Allison, 2003), C++ Inside & Out (Osborne/McGraw-Hill 1993), among others. He's given hundreds of presentations throughout the world, published over 150 articles in numerous magazines, was a founding member of the ANSI/ISO C++ committee and speaks regularly at conferences.

This weblog entry is Copyright © 2009 Bruce Eckel. All rights reserved.