Sunday, 4 March 2007

Profound

That which we persist in doing becomes easier - not that the nature of the task has changed, but our ability to do has increased!

Saturday, 3 March 2007

Thoughtful Statements

I love this one from my very good friend Frederico:

Sniff, sniff...
what is that smell?


The smell of success :)

New Milestone Release

Aaaahhh, its a nice feeling directly after a milestone release. A milestone is like a heartbeat. You plan, live and evolve around it. We work so hard preparing for the release, the stress, the little features we agilitly include or exclude... very exciting to slowly see the whole application taking shape :)

This project has been a great success I think where I have been able to fully experiment with my ideas and principles around agile software development. I will write some more about my discoveries in some later posts but to summarize:
  • Deciding what to do and how to capture requirements
    • It all starts with an idea, you need to break it down, nothing is cast in stone
    • Prototype early and think RAD
  • Putting together a team
    • You must pick skilled people that can work well together
    • Pick people that you like and can trust!
    • Communication is key (natural, problem domain and pattern languages)
    • No synergy is like swimming in Tar!
    • There can be no substitute for skill and experience!
  • Drawing up the initial architecture
    • There cannot be a democracy here, to many architects is very destructive
    • The principle architecture can be found in numerous existing frameworks
    • Put metadata in the code and abstraction in the configuration
    • Be pragmatic
  • The software development process
    • Iterative and incremental
    • Usecases, stories or features? Doesn't matter, as long as you can break it down into chunks that can be understood, estimated and prioritized.
  • Planning a release
    • Never move a deadline, de-scope if you need to!
    • Announce the features to be demonstrated early. This makes the target clear!
    • Prioritize, not everything is important!
  • Developing the code
    • Coding standards are very important!
    • Don't let just anyone touch the code
    • Test driven development is key
    • Refactor the code often, strive for simplify and elegance
    • Reuse good ideas, best practises and principles, no need to copy&paste code then!
    • The code is the documentation and the unitests are the requirements
    • Document the intent, the idea or principle behind the code
  • Tools for collaboration and issue tracking
    • Issue trackers, wikis are key
    • Use whiteboards often
    • Don't send emails if you can walk up and talk directly with a team member
    • Make sure information is shared
  • How to demonstrate your software
    • At the end of a milestone, demo the initially announced features
    • Be swift, make sure every feature is demonstrated properly
    • Take time to write down all comments from stakeholders
    • Let members in the team take turns in demonstrating new features as this ensures that knowledge is shared evenly
  • In general
    • Be eager to learn something new every day
    • Be helpful and humble but make no mistake, be proud of your craft and skills!
    • Don't complain, do something about it, be pragmatic
    • If you break the build, you fix it!
    • Don't think X hours a week, think Y issues done/left.
    • Measure the velocity by ensuring that most issues are broken down evenly
On Monday it all starts again with release planning. We are now one milestone from the first candidate release. I don't expect us to release more than 2 release candidates at most.

Being so close to a release candidate I am now breaking down the milestone into smaller weekly point releases, one every Friday. The reason for this is so that we can test the codebase more frequently (as we don't have a testing team available) and also to allow for faster feedback from the stakeholders and still allow for a practical development cycle length.

Once all this is done, we will all chill out on a beach in Thailand drinking a MaiTai feeling absolutely in peace with the world...

Why?

Because we deserve it :)