« August 2006 | Main | December 2006 »

November 22, 2006

The God Delusion

I just picked up Richard Dawkins new book, the god delusion, I'm wondering if it will make me an atheist rather than an agnostic.

It also makes me think of two great books by Richard Dawkins that you should read if you haven't:

The Selfish Gene

The Blind Watchmaker

And one of the best books on evolution not written by Richard Dawkins:

The Beak of the Finch

If you are at all interested in science and evolution these are a must read.

Posted by Chris at 12:47 PM

November 17, 2006

Zero Tolerance Manifesto

Pete just blogged his zero tolerance manifesto, it's required reading if you want to build a great product.

Posted by Chris at 02:57 PM

November 09, 2006

10 Habits of a Successful Coder

1) Don't break the build
2) Don't break the tests
3) Fix tests you break before you work on new code
4) Add comments to your checkins
5) Checkin tests with regression fixes
6) run tests appropriate to the size / risk of your checkin before you checkin
7) Proactively look for regressions you may have caused
8) Write functional tests with your code
9) Always get a review from the right person and listen to what they say
10) Write tests before you refactor an area and make sure run them before you change anything

Posted by Chris at 04:45 PM

The Why of Scrum

Here are some thoughts I had after taking a Scrum Master certification class from Mike Cohn. Scrum is built on a few simple principles. Many people are exposed to the how (the mechanics) of scrum first, without the why (the principles). This post focuses on the why.

Communication: is the process of sharing information. It creates visibility, better decision making, and a common understanding of shared goals.

Empower the team:
Nothing is more powerful than a team that is in control of its own destiny – a team that thinks the only thing limiting what they can accomplish is how creative they are and how hard they work.

Learn and improve: Learning is about trying something, looking at the results, and improving.

Deliver value early: Build trust with people by prioritizing work, committing to deliverables and delivering them reliably. This builds trust with coworkers, other teams and customers.

These principles are turned into practice using the following mechanics and roles:

Communication:
Communicate daily about your progress (daily meeting)
Track your work as a team so you can make informed decisions about achieving your goals (sprint backlog)
Work as a unit and don’t let one functional area swamp another. (Stay in sync)
Empower the team:
Give teams the power to control their own destiny and deliver on goals (sprint goals)
Get impediments out of their way (Scrum Master)

Deliver value early:

A prioritized list of work, organized and prioritized from a customer perspective (product backlog, Product Owner)
Plan your work as a group, work on it in priority order, and set goals for an iteration (sprint planning meeting)
Commit to your team members about progress (sprint tasks)
Work in sync with the group and maximize for the team’s efficiency (get to done, work as a team, don’t impact other teams)
Don’t degrade the system, always be within days of shipping the product (not weeks or months) (don’t create debt)
Work on relatively equal sized tasks that can move efficiently through the system (grooming the backlog)

Learn and improve:
Work in short sprints and measure progress (sprints)
Demonstrate your work at the end of the iteration and collect feedback from a broad set of people (sprint review)
Reflect after every iteration on how you can get better at meeting your commitments and produce more code (sprint retrospective)

Posted by Chris at 04:32 PM