The Softer Blog

2010-07-15

L&C - Learning and Coolness

L&C is the software methodology we use to develop Sneer, the sovereign computing platform.

 
Douglas Giacomini, myself, Sandro Bihaiko and Rodrigo Bamboo in Guaratuba, Brazil


Our project has certain peculiarities: it is a funded, open source project and we have a small team of up to 4 developers plus occasional contributors. Our technical lead also knows a lot about the business. That is not the case in the early stages of most projects but it is often the case after a few months.

L&C is guided by two values:


1) Learning

Learning supercedes the XP values of simplicity, communication, feedback and respect:
  • It is much easier to learn simple things than complicated.
  • It is impossible to learn and teach without communication.
  • We can only learn when we get feedback for the things we do.
  • Learning sets the humble and respectful attitude we need to approach our peers, our users and the code.
Learning requires communication, simplicity, feedback and respect


Learning also gives us, once and for all, the requisite understanding of what software development actually is. Software development is not "ball dancing", it is not "driving a car" and it is certainly not civil engineering. Software development >is< learning.

Building a replica of a shopping mall, for example, with the same construction crew costs 90% of what the first mall cost. Producing a replica of a software product with the same team costs a fraction of what it did the first time because the team already knows how to do it.

The source code to any particular software system is not a product of what a team has built. It is an expression of what the team knows. That changes everything.

There are heated discussions in the industry as to whether pair programming and moving people around is productive. The notion that learning is really our goal renders all these discussions void.


2) Coolness

Coolness supercedes the XP value of courage. One cannot be a wuss and be cool at the same time.

Igor Arouca and my foot - Hammock pair programming in Curitiba, Brazil


We like working with excellent programmers, true software craftsmen, and excellent programmers like doing cool things.

Our team:
  • Learns new things
  • Invents new things
  • Makes a difference
  • Writes its own tools and languages when necessary
  • Travels
  • Parties
  • Speaks at conferences
  • Interacts, discusses and challenges
  • Engages the community
"Pool Programming" - Didn't actually work but we tried it :)


Our team also ships working software. Failing to do so is, by definition, the most uncool thing a software development team can do.


Practices

How does L&C affect our lives concretely? Let's compare it to XP.

We believe it is misleading and arrogant to try and predict the future. Nobody likes doing the following XP things. The insight they give us is no better than an educated guess by a business-savvy project leader and the effort and stress they imply are just too much, so we dropped them:
  • Release Planning
  • Iteration Planning
  • Project velocity
  • Planning Game
(Scrum is glorified release planning, so we don't do that either)

We also dropped the following:
  • Iterations (!)
  • Continuous Integration
  • Open workspace
  • Stand-up meeting
  • CRC cards
To the remaining XP practices, we added a few things:
  • Significant Celebration - Instead of celebrating the Nth sprint (Yay!) we finished, we prefer to travel somewhere nice when a significant business or technical milestone is reached.
  • Remote Pair Programming - Skype and VNC. Having the team co-located is certainly more productive, but we want to work with the best developers, wherever in the world they might live.
  • Hammock Pair Programming - Ad-hoc wireless and VNC.
Hammock pair programming with Patrick Roemer in Florianópolis

  • Team Chat - A chat conversation open on Skype all the time with all members of the team. Has the same effect as an IRC channel.
  • Weekly Conference - Same as a stand-up meeting but via Skype.
Listening to Potential Users at the Sneer Summit in Curitiba

  • The Cleaner - A role specifically allocated to refactoring. There are no fancy discussions about "technical debt", "productivity curves over decades", etc. Refactoring is hygiene.
Jules, Vincent and Wolf, The Cleaner

  • Periscope - We use periscope to emerge occasionally, look forward and ask ourselves: "Are we going in the right direction? Is there a huge iceberg ahead or an amazing shortcut we could take?". That is all we need to know about the future. We plan on demand and simply take the next baby steps in the right direction. We trust our own agility so we don't lose sleep over hypothetical icebergs far, far away. Also, we don't need estimates to "measure" our team's productivity and whip developers that are late. We simply use periscope to look back and answer: "Are we progressing fast enough? How can we optimize our work?"

More than a deliberately designed methodology, L&C is an empirical observation of how we work and what we value.

5 Comments:

  • Man you should blog more! Thx for your colaboration to the Agile community. Hope we can schedule that pairing session soon.

    By Blogger Rodrigo Yoshima, at 9:33 PM  

  • That's pretty much the excellent keynote speak at Agile Brazil 2010 - I only miss seeing the also excellent translation of coolness - "docaralhice" :)

    Next personal project: hammock programming somewhere in Floripa with a great view of the beach.

    Congrats on your work.

    By Anonymous Gabriel Albo, at 12:41 AM  

  • Very interesting post. You are doing a great job. BTW. The Hammock Pair Programming is a wonderful idea. :D

    By Anonymous Cleydson, at 7:42 PM  

  • Nice article, definitely goes in the direction I want to. More about people and just enjoying development. Certainly a working lifestyle I'd like one day.

    Beer O Clock is something I like. And being able to program in the sun or outside with a nice view (not a busy London road) as it encourages thought.

    By Anonymous Rob, at 8:50 AM  

  • Once again you are "kicking asses" exposing a great point of view on how we do things in software development.
    Thank you Klaus.
    Great Post.

    By Blogger Cesar Moro, at 9:17 AM  

Post a Comment

<< Home