Cogitas Blog:
Google Android,
Common Lisp,
programming
and web design.

The joy of agile development and small iterations

Filed under: programming — Tags: , , — July 17, 2010

Ah, the joy of agile development and small iterations :-) The joy to complete a step (iteration), thus providing the satisfaction of a job well done, thus motivating the developer(s) for the next step (iteration).

At the start of the week, I embarked on a new programming project, a desktop app that will help you plan projects to reach your goals, coupled with a calendar (the app is written in Java, and once finished, the code will be released as open source and the app will be available for free, using the donationware approach).

I haven’t actually been able to work much on the app this week as we are getting the electrics done in the house, so it was a bit hectic. Nonetheless, I have managed to find a few hours here and there and this morning, I have finished the first iteration! It feels so good that despite not having been able to focus full time on this, I have still achieved something in my first week working on the project.

A tangible result

As a lone developer, this is the only way I can accomplish anything and I suspect this is the same for most, because it’s hard to stay motivated if you don’t have some concrete results, and a completed iteration is a tangible goal.

But also, in a team, it’s easy for co-workers to all lost the “hunger” due to lack of quantifiable results, and one co-worker might take down another one so to speak. It’s important that all members of a team are motivated and this is why it is important that the team achieves a result, completes a step, completes an iteration, whatever you want to call it, often enough.

The first iteration of my app doesn’t do much but it lays solid foundations for future features to be implemented and it does well what it does for now. I have used various techniques, such as a semantic net and user stories to discover objects, and then, I have made object cubes (a kind of extended CRC cards, as described by David West in his “Object Thinking” book) for each object, leading me to discover a few more along the way.

As a side note regarding cube objects, I normally use actual index cards for that but I couldn’t find my stack (due to the electricians moving things around to do their work) so I used a spreadsheet instead and it’s worked so well that I will not use index cards anymore. Of course, index cards work better if you do this as a team so you can lay them on the table and discuss them together (try doing that with 6 of you sat in front of the same computer trying to read a spreadsheet on the screen!).

So, what do you put in the first iteration? Well, here’s what I have done…

I have discovered objects necessary for all the features I have in mind for the app and I have assigned responsibilities for them all. Then, I added the other sides of the cube (Required Knowledge & Messages) for those objects necessary for what I plan to be the first release of the app (I selected a set of features for the first release, basically the features I deem to be “vital”). Then, for this first iteration in the development process, I have simply picked a sub-set of these features and coded the objects actually necessary for these features.

This first iteration is a functioning app but some features are missing to truly make it interesting/useful, thus I am not releasing it. I call it “Dev R0.0.0″, then I will be working on “Dev R0.0.1″ and so on, until I have achieved all the features I want for “App v0.0″.

And you, how do you organise your own development process? I’m particularly curious to hear from other lone developers ;-)

Related posts

Freelance Jobs


No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment