Why optimizing without profiling is inefficient

November 23, 2006 | Comments

Why optimizing without profiling is inefficient: "This is exactly what happens in software systems too. A developer, having the best intentions in the world, will optimize his code based on his experience of what will be slow. Measuring of the live system will show that the actual bottleneck is somewhere else, and the optimization was naught."

The life of products

November 23, 2006 | Comments

The life of products: "It’s important to consider the owner and all the people they encounter as the “user” for any particular product. No design surface is out of scope: Aesthetics, online social software, embedded displays, the billing and vending processes, and more."

Software Estimation

November 23, 2006 | Comments

I read a good book on software estimation earlier this year, which as well as making fascinating party conversation also provoked me into looking closer at how we estimate our projects.

To my mind, estimation underpins the whole software development process: it's where we, as a service agency, decide on how to cost out our work, and it leads directly to the time commitments we make to clients. It's also well-understood to be difficult to estimate tasks you've never done before; for us this is particularly problematic because we often find ourselves doing things for the first time which we (or occasionally no-one) has any relevant experience of; we often target devices which may not be on the market yet; and we often have to adapt existing applications for entirely new platforms.

So I've started estimating all our projects using a custom spreadsheet and a process which has us laying down worst, most likely and best case estimates for individual function points, and calculating an "expected case" from these. I record these in a spreadsheet and re-estimate over time, recording all estimation. This has several advantages:

  1. We have a record of all features; nothing gets forgotten, and these are used as the basis of scheduling projects;
  2. We have a historical record of all our estimates, which can be handy when justifying how a project budget has, for example, expanded over the course of long-running conversations with a customer;
  3. We are forced to think through individual features very carefully: what's the worst that could happen? How well could it go? Even asking yourself and addressing these questions leads us to realise that some features are more complex than they appear. Realising this up front is much better than realising it mid-project!

So on a recent small(ish) project we estimated in this style, and took great care to record what individual features actually took to develop by doing very close time-tracking. I've just run through this, and the conclusions are both obvious and interesting:

  1. We savagely underestimated testing time required for the project; in mitigation, it was an unusual project from a testing point of view, involving GPS and lots of our guys running around local parks. Not the best project to be testing in mid-winter :)
  2. Two features were clearly underestimated, and in retrospect it was obvious: client/server communications protocols (which we've been burned on in the past) are complex things to write, and require more attention than you might think, and the other major feature clearly required more thought;
  3. Practically everything else was within 10% of original estimates, either above or below - which is an acceptable margin for us;

So, lessons learned: don't skip over estimating any remotely complex feature and break it down into subcomponents to do so. Duh.

What this also gives us is the ability to base the next estimates we do for another new project on the actual timings from this one. So, in the new project we reckon the UI work is a bit simpler - and can therefore take an estimate from the time-tracked project and reduce it slightly. This means we're working with real figures, which should give us greater accuracy...

Mobile Fiddling

November 23, 2006 | Comments

Mobile Fiddling: "However, on close inspection (i.e peeking) at what some people do with their phones, the fiddling is a kind of mindless playing around - poking, changing, reverting back, going up and down menus, swapping settings back and forth, and so on - plain fiddling about. We like to tell kids not to fiddle with things - the remote control, the car controls, the radio, the computer. We often then go and do it ourselves (which doesn't mean the kids can too!) It seems we are born to fiddle."

Landmark

November 21, 2006 | Comments

So, I spent last weekend up in London, alternating my time between the shittiest hotel room I've ever stayed in (notwithstanding the company: NewTom and his housemate Nikky), and the Landmark Forum. I find it difficult to write about this: it's impossible to explain, particularly without sounding like a lunatic.

I'd heard about LF through Ken and Rach, both of whom had done it, and remember feeling intrigued: they'd both gotten a lot out of it, and I respect their judgement. So a few months back I went up to London for an introductory evening, which didn't make up my mind about it one way or another. Some of the ideas I heard about there were really interesting (and resonated with ideas I'd heard elsewhere and liked), whilst the hard-sell approach they seemed to take really put me off. So I waited for a few months, mentioned it to NewTom who expressed an interest, and we eventually got around to signing up.

Practically, the event was 3 days of lectures and talks, running from 9am until 10pm with breaks every few hours and a long supper break in the evening. I didn't see or feel any of the pressure I'd read about to not take toilet breaks, and whilst the days were long and I ended the weekend quite tired, I didn't feel it went as far as the "sleep deprivation" which is sometimes ascribed to it.

The speakers were mixed: one American guy, Scott, who I found very charismatic, entertaining and thought-provoking; the other, Will, (who was, to be fair, still going through his training plus chock full of British reserve), seemed less at ease speaking publicly.

As for the content: there was lots of it, and it was pretty full-on. The language used was quite specific, with terms from English (racket, possibility, distinction) redefined; much of the course seemed to be about defining a common language for us to use in discussing difficult-to-discuss concepts. There were parts that I didn't get at all, parts I can't remember, parts that seemed to be very commercially driven, and many that I really enjoyed. I think I'm best off trying to record themes I took away from the course, using normal (as opposed to LF) English:

  • Our past experiences shape what we do now, and that as such we often make decisions which can't be considered completely free from bias; to free ourselves from the resulting patterns of behaviour we need to sort out these experiences;
  • There's what happens, and there's how we view it - and the two are very different. By distinguishing the two it's possible to recognise that our views of events are very subjective, and therefore deal with them more effectively;
  • Taking complete responsibility for our own lives and those of our loved ones is important, and is the first step towards taking responsibility on a larger scale. (This sounds very similar to one of the ultimate aims of Aikido, where the loftiest notion is to protect the life of someone even when they're trying to kill you).
  • Sorting out relationships with families and friends is the first step towards making any difference in the wider world. We were encouraged to phone people with whom we experienced problems in relationships and sort them out during some of the breaks. I can't imagine how this stuff worked before the advent of the mobile phone :)
  • Little things, like turning up on time, are important: it's all in the basics. This seemed, to me, to map to the importance of reigi ("manner and attitude") in the martial arts: attention to the seemingly small details is the foundation for taking care of larger concerns.
  • We can't ever change ourselves, and life is empty and meaningless, leaving possibilities wide open and making it vital that we live in the hear and now. This sounded similar in some ways to what I've been told about Zen.

I'm sure I've missed out and misinterpreted some important points, and I can't explain how all this hangs together, but I have a sense in retrospect that it's coherent. In fact I suspect that, like Zen, it's not something that can be understood intellectually - not that I could claim to understand Zen, you understand. Oh, and there were lots of references to Gandhi and Martin Luther King, which played well with me. NewTom noticed lots of similarities to what Peter Ralston talks about in his books and courses (which, not having done more than skim his work, I didn't get).

Tonight was the final night of the course, a great climax to it all with Scott really exhorting everyone to live as fully as possible, which I thought was absolutely wonderful... until the hard sell comes in again and we're put under what I felt was extreme pressure to register for the advanced course. I got really angry at this point, but maybe I just don't like being told what to do. Actually that maybe is definitely not a maybe :) I recall a point earlier in the weekend when Scott asked all the attendees in the room who were running their own business to consider that they might have started doing that to avoid getting told what to do by others. Heh :)

Overall: I got a lot out of the course (echoing the experience of others), and I intend to go on to do some additional seminars. As a direct result of it, I think (or hope) I've reactivated two relationships (with my sister and my ex-girlfriend) which were previously dead in the water: or at least, I've had unexpectedly positive telephone conversations with both of these folks which lead me to think this is the case, only time will tell. This alone makes it worthwhile IMHO.

On top of that, I've felt great ever since the course (in much the same way that I remember feeling great after doing meditation a couple of years back), and have a lot of time for the essential philosophies that I got there. I just wish that I wasn't so uncomfortable about the hard sell...