Can I Have That, and While You’re At It?

Agile tells us to the do the simplest thing that could possibly work for the things that we need right now. Why do we do the simplest thing? The answer: Because it is cost effective, especially because the future is unsure. For example, when the business does have something similar, are we sure they’re not going to want it to do something more that will need more work done? Or perhaps the cost of making something “general” could be better spent on more immediate priorities, because if it never gets used, the cost of building (not to mention maintaining) the general infrastructure is wasted.

So what if your business tells you that they want something for now, but make it general, so if they want to do something like it (but not exactly like it) they can reuse the infrastructure to do it again? Even if the business or the analyst is driving this requirement, it reeks of having a bad smell, and is probably driven by a Fear of Waiting. To me this could mean one of several things:

  1. Release Cycles are not often enough – Waterfall projects typical schedule a release for anything between 3 months up to a year or more. If requirements do not get in, it is a very long time until they are revisited. Agile addresses this with the Release Often principle that emphasises more requirements prioritisation over requirements identification and freezing.
  2. Too many competing priorities – With smaller release cycles providing more restrictive timelines, the next issue is working out what can be fit into that release cycle. Businesses typically have many competing priorities, with waterfall models trying to fit all of those priorities in (leading to bigger release cycles). Agile attempts to get people to prioritise what is most important to them right now.
  3. Not Enough Bandwidth – The amount of business value that can be delivered is a function of the fixed time that can be available and the amount of work that can be produced by available resources. I am specific amount the amount of work produced instead of simple the number of people because it is not simply about the number of developers available (read the Mythical Man Month if you want to learn more). Typical waterfall methods rely on judgement (estimates that become promises) to give a guide as to how much can be provided. Agile provides better metrics in the form of a historical moving average of points (e.g. storycard points) per iteration that indicate a better guide as to what can be delivered.

So what can we do to alleviate this fear? Agile has many values and two key ones that spring to mind is around visibility and communication. Visibility is about making people aware of issues (in this case, a fear) and to try to work out what the real motivation is (especially if it is not a real business need). Communication is about making the process transparent and how it is (or can be helping if it is not) to alleviate those concerns.

The Parrot’s Theorem

I realised that most (ok, all) of my reading of late has been entirely non-fiction (and probably excessively IT related) so I thought I should get back to the fictional genre. Since I was in the city on Monday just gone, I dropped into the library and, for no other reason except that the blurb read well, picked up a copy of The Parrot’s Theorem written by Denis Guedj (and translated from French by Frank Wynne).

Anyone who knows me I’m not too fond of studying mathematics, but for some reason, this book, classified as Math Fiction, seemed to catch my eye. This French best seller’s is set in a Parisian bookstore, detailing the story of a mysterious cargo shipment of a Mathematical library, a talking Amazon blue parrot and somehow managing to form a link between the rest of these as well as the mafia and the death of the bookstore owner’s long lost army friend. After finishing the book last night, I would not be inclined to say that this book’s bizarre and intertwining plotline was definitely not its strongest point. As funny as this may sound, the plotline simply set the stage for the author to describe (what I hope to actually be factual) the history and evolution of over 2000 years of mathematical theorem’s and proofs.

Unlike the maths classes that I remember, that simply detailed formulas and repetitive rehearsals, this book gave life to a number of world famous mathematicians and the circumstances in which they developed their theorems. I had no idea, for example, that mathematics (a simple definition of a link between a theory and a proof involving numbers) was really the result of a number of philosophical arguments and there continues to be a strong relationship between mathematics and philosophy today. Most of the famous ancient mathematicians were fore mostly philosophers, and then followed by their role as mathematicians. The author continues to demonstrate that modern day fundamentals are in fact, only fairly modern. He discusses the concept of zero and how it was only invented in 733AD (that’s 1272 years ago) even though mathematics has been around almost double that time.

The biggest thing that this book has to offer is not really the education of the number of theorems it covers, but the really interesting way that they came into being.

TheKua Rating: Fictional value (6 out of 10), Educational value (9 out of 10).

Breakfast with the family

Blueberry PancakesWhen I visit my family down on the coast, we try to have a late breakfast with the entire family. We tend to take turn cooking so the rest of us can read the paper and have a break. Lately it’s been my duty to prepare the morning mean, and today I turned out some fluffy blueberry pancakes, served complete with a raspberry coulis and some maple syrup. It was a wicked way to enjoy today’s family meal on such a crisp Sunday morning!

Lior @ The Zoo

LiorTonight (or rather last night) Sydney based songwriter and artist, Lior came to perform at The Zoo. After I got back from my big three weeks abroad I was looking for gigs to attend. I hadn’t heard of Lior before but after reading a few reviews and listening to a couple of his songs from his site, I thought I’d hunt down his album. There were a few places online that seemed to have it, but a stop in at the local JB Hi-Fi seemed to do the trick. The sales person who was serving me said she really liked his stuff and it was a good album. She mentioned that she’d also just missed his last concert but managed to hang around outside enough to say that he was a good performer as well.

LiorTonight I can attest that his performance is really worthwhile actually visiting. Lior performed a few new songs and the ones that he played off his Autumn Flow album were superbly improvised and varied, making it just an amazing show to see. It was made even better considering that tickets were only $16.10! Tonight was such an amazing crowd as well, with the tickets for tonight’s gig completely sold out! So good that I think I’m going to go see him perform down on the Gold Coast as well.

I Hate Cars

I like to think that I ride my bike rather responsibly, but today was such a pain when a car pulled out in front of a red light and I went down. Thankfully it wasn’t as bad as my incident back in January but it is still (literally) such a pain. I managed to get away with only a few cuts and bruises and the bike actually got away pretty well this time (just cosmetic damage). This year has been pretty bad for riding… I might have to give it up :-Z

The Brisvegas Lifestyle

Even though this week has been mainly about training for the Aikido grading this weekend, it was nice to have an excuse to have a night out and celebrate Ajit’s birthday. Dinner was scheduled for the eight of us out to celebrate at the Belgium Beer Cafe. As I finish work early, it gave me a good opportunity to cruise into town and relax, so after picking up my favourite mags from Rockinghorse (Rave, Scene and Time Off), I headed to Pane e Vino to put my feet up for a bit of reading.

Service was excellent at both places for the evening (despite the Belgium Beer Cafe neglecting to note down the booking I had made the previous night) and the night was finished with a viewing (yes, finally!) of Star Wars Episode 3: Revenge of the Sith. Although I had missed my last bus by an hour when coming out of the movie, the night was topped off when I grabbed a taxi and I was offered a bargain-priced fare because it was a quiet night! Sweet! And now for some sleep…

The Forces That Be And What To Do About Them

Every project is influenced by a number of forces that make it less than ideal. Sometimes these forces can be business decisions that create a rate of change faster than a development team can meet with perfection, other times it is technical limitations that prevent ideal solutions from being implemented, and sometimes it is simply the misappropriate application of tools and libraries that can’t fit all of the needs of the business.

Regardless of the source of these forces, anything that has a significant impact on a team delivering perfect software is worthy of documenting. Identifying and clarifying such influential forces provides newcomers with a better context to the decisions that a team might have made along the way, and better yet, provide a way of highlighting them and their undesirable effects, so they could be removed if they no longer apply.

When it comes to the technical forces affecting the level of code being produced (e.g. a library not behaving accordingly, or an unforgiving production environment), the best way that these forces should be documented is in the form of tests. Developers would not be expected to run these, and should be left for execution by a build machine running in a production-like environment. Continuous integration serves as a great mechanism to inform us when the undesirable conditions that forced the creation of less-than-perfect-code, goes away, and highlights what can be changed to bring it that much closer to perfection.