Wednesday, March 21, 2012

Agile Schmagile — ScanAgile 2012 trip-report

I always get easily confused when conferences have too many tracks going on. No, seriously. At first it gives you an illusion of choice but in the end you just realize that you missed most talks on the conference. In the end of the day you can never be sure if you have made all the right decisions when choosing one talk over another.

A fancy sticker I've got from the conference organizers. Self-irony is really one of the most valuable worldly skills :)
ScanAgile 2012 conference, which was held on 8th of March at Marina Congress Center in Helsinki, had three lecture tracks and one track reserved for workshops. Although the temptation to spend the beginning of the day playing Lego was very big, I decided to stick to the Human Touch track. It opened with a talk about complexity based approaches to project management by Dave Snowden, who has seriously challenged my English language skills. I got totally lost when Dave started to oppose “complex” to “complicated” and “effective” to “efficient”, which as I believed would mean pretty much the same thing regardless of the context.

The coffee break discussion on these things lead to The Quote of the Day by my friend Justus Karekallas, who explained to me the difference between something being complex or complicated with a philosophical statement: “Women are complex, so life is complicated.”

Luckily enough, Joseph Pelrine’s talk about Cynefin turned out to be a continuation of the topic, therefore many of these conceptual differences started to be much clearer.

According to Joseph Pelrine, agile is a good tool for making a transition from complex to complicated.

After lunch we decided to visit the Software Craftsmanship track, where Daniel Knott from Germany was giving an overview of automated mobile testing challenges and solutions. The automated mobile cloud testing (such as TestDroid Cloud, for example) seems to be something worth looking into, if you are dealing with mobile app development.

Next, back to the Human Touch track — Laura Snellman-Junna talking about “Mechanics of Empathy”. Generally an interesting psychological topic turned out to be even more exciting by following Dave Snowden’s twitter-criticism on almost every of Laura’s statements. However, one should definitely try to be aware of the effects of empathy on everyday life, regardless of the neuro-mechanical details behind it.

Laura used fragments from the Blade Runner movie, featuring the use of Voight-Kampff machine to detect androids based on their inability to feel empathy.

The rest of the conference was totally screwed up by one of the conference sponsor quests for getting the MacBook Air. We barely have seen The Unseen shown by Marko Taipale and the “aivobic” training by Reidar Wasenius was also left aside. And, sadly enough, we still didn’t manage to solve all the challenging puzzles. Anyhow, all the sponsors were generally very generous giving away tons of free after-party-drink tickets to sweeten the bitter pill of our failure.

This was not a bad conference all in all. Maybe it’s just me who visited one too many agile conferences last year and therefore did not find any exciting eye-opener talks on this years ScanAgile. But after all, it’s all about the community. Meeting new people, who are inspired by what they do cannot be underrated.

Tuesday, March 22, 2011

Does Construction metaphor harm Software Development?


For some time already I was thinking to myself, that construction metaphor, applied to software development field so frequently, doesn’t serve its best purpose. We design and build our software, and we even have Architects in our projects. You can often hear people referring to construction experience, saying “You wouldn’t start building your house from the roof, wouldn’t you?” or “How would you build a house without an architect?”

It seems to make a good sense to refer to Google, before writing your first blog post. Not at all surprising that my dumbest web search quickly ended up in me reading an article, criticizing the famous “Code Complete” book by Steve McConnell for exact same reason: Software Development isn’t like Construction.

To me the cornerstone difference is the building process. In construction, building means, roughly speaking, putting bricks together. Well, also digging the basement and assembling concrete panels together, but all that doesn’t really matter. What matters is, that this process takes a considerable amount of time and effort. And, having a wild assumption that the engineers did not screw up the blueprints, the building process is supposed to happen only once. That is when your house is actually complete -- when you have built it!

Now, what’s the analogy for this process in software development? I wouldn’t say that it is the actual coding. Because this is more similar to what construction engineers do -- design blueprints, according to which the physical thing is built. As I see it, the building process in construction corresponds to compilation and deployment processes in software development. That’s the thing your build script usually does, isn’t it? :) Your code together with the build scripts are your specs and blueprints, which make the actual building happen.

But there is one significant difference between building a house and building your software project. Compilation and deployment do not take as much time, as putting the bricks together on a construction site. It is very much automated and doesn’t take as much effort at all. And it’s repeatable. Building your software is so easy compared to construction, that you even do it frequently. Frankly, it’s the fastest way to verify, what exactly you just did. And hey, most likely your software is not complete after the build process.

In fact, I don’t even know when that point is exactly. When is your software complete? There’s always room for adding configurable and resizable windows to your software walls, and all kinds of other stuff. The smells you get from applying the construction metaphor to software development are something like:
  • the famous “If it works, don’t touch it!” engineering principle;
  • the widely used Feature Freeze concept.

    Software Development is not like Construction. You deal with abstractions, not concrete blocks. You change your thinking and even the idea of the entire project during the time it’s being developed. The thing you actually build is Knowledge. Let’s just not drag thousands of years of construction experience into the software industry. Wild idea -- maybe it should happen vice-versa even? :)

    .