Last week, I finally received the new "Agile Portfolio Management" book, a book I was looking forward to reading. Organizational issues related to Agile are important since most people assume Agile development does not affect organizational issues, but nothing could be further from the truth. When adopting agile development in product development then every aspect of the organization will need to change to make the total organization more flexible. An overstatement? No. Don't forget that Agile development has few *new* ideas and combines a whole bunch of existing practices. If you dive in the existing practices like cross-functional teams, lean, self-organizing team, etc, then every single one of these will state that adopting these practices will have an organizational-wide effect. So the combination of these have an even larger organizational-wide effort--most practices in an organization will need to change.

So, I was excited about Jochen Krebs book on portfolio management, but found it a complete disappointment. I won't recommend anyone to read that. Just improved editing would have made the book already a lot better...

Anyways, I made an Amazon review here I'm happy with Jochens attempt and good that there is finally a book on this subject, though I think there is room for more insightful and more thorough books related to this.

This week... I'm jetlagged. Because, last week I was in Toronto (which is 12h timezone difference from where I live) and joining the Agile2008 conference. It was an excellent conference. I had a lot of fun and it was so great meeting people whom I hadn't seen for a long time (living on the other side of the world as most people sometimes has its drawbacks).

What was best? I loved Jim McCarthy's talk on the core protocols. I've been following his work for a long time, but had never met him before. He is an excellent and funny speaker. Joshua Kerievsky has an excellent talk on transitioning with the best video on legacy code I've seen. I need to get that video from him :) Also his refactoring strategies was useful, especially the names he invented for different refactoring strategies. Clinton Keiths talk on games development was really good and well prepared. In enjoyed these sessions most.

What was worst? Alan Coopers keynote was beautiful, but the content made me sad. I had a hard time not walking out. He still keeps insisting to have four different phases for software development. It doesn't seem that he has any experience related to working in Agile product development. There was a session on enterprise agile metrics. I walked out on that one, it was simply not interesting. Michal Mah was the presenter.

I had 2 sessions myself. One related to feature teams and a TDD in C session. Both went well and it seemed people liked both. Especially the TDD in C had exceptional feedback with people thanking me and Michael for giving them a different view on development in C. I was also fun to see people struggle with the language.

But as with every conference, the best was meeting all people. A whole bunch of people from Japan, Korea and China, who I worked with in the past were all there. Also a whole lot of Finnish people, some Dutch and some other people I worked with in the past. Conferences like this one is the only chance for me to see them and catch up on what they are doing. It was a tiring week, but well worth it. I'm looking forward to next year... Chicago (same far away)


At the moment, most of my time is spend writing on the new book which I'm writing with Craig Larman. Writing is awfully hard, but I'm learning and Craig is helping me a lot fixing my poor writing skills.

Recently we pre-published one of the chapters on Feature Teams on InfoQ. You can read the whole chapter over there. The rest of the book should be in the store in December, hope we'll make it. We have to :)

This is the link to the InfoQ feature team chapter.

Emergent Design

| | Comments (0) | TrackBacks (0)

I just finished the fairly new book from Scott Bain called "Emergent Design". The book was good and I was disappointed. I expected much more, based on the title, but the book basically was just a summary of good agile practices.

I did write a fairly large Amazon review on this one. You can find it here


A good book on Emergent design and architecture is still needed though! Hope someone will write it soon.

Hmm.. I had posted a pretty large entry 2 weeks ago, but something went wrong and it never got posted. Too bad. Anyways, it was a book recommendation about "Project Managers Bridge to Agility" which, even though there is all this "agile project manager" talk, still a very good book. It's written by Stacia and Michele, two Scrum Trainers.

Since May, I've moved to Singapore and now in Singapore spending most of my writing my new book together with Craig Larman on Scaling Agile and Lean Development. First weeks I got stuck somewhat and didn't make much progress, did a lot of study and tried different forms for the "teams chapter" but now finally I seem to be out of my stuckness and we are making some serious progress. Lets hope we can keep this pace and then it will be in the store in December.

Singapore is a great place to live! It's nice and warm, the food is good and there is a huge variety of people. I'm enjoying my time here a lot. Unfortunately, I'll need to travel a lot again in the end of 2H... China, Japan, Finland, US, HongKong, Sweden are some of the places planned :(

Scrum in Singapore is not yet huge, we're trying to build some community here and also will give another Scrum Master training in August. I hope more people will join that!


Mike Feathers pointed me to this excellent FQA about C++:
http://yosefk.com/c++fqa/

I especially like the C/C++ things in there. Bumped my head to most of these in the past :)



Earlier this week I was in Tokyo again. Tokyo is a city I always like visiting. Good food, big and always interesting new things for a non-Japanese to discover. One of the interesting bits this time was the line in front of the Doughnut store near ShinJuKu. When I lived in China, I've seen lines in front of McDonalds (not common anymore nowadays though, there are too many McDonalds (unfortunately)) and lines in front of Pizza Hut (still quite common), but never had I seen a line in front of a simple Doughnut shop. My wife thought they must have some special promotion, but I noticed that there were iron fences (for lines), suggesting its common. We asked E. (a friend I work with) and he mentioned it has been there every day ever since the store opened three years ago. Interesting...

Anyways, in Tokyo me and E. were giving the second public Scrum Master training in Tokyo. This time we used simultaneous translation devices (I don't speak Japanese, he translates excellent!). It turned out to work pretty well. I enjoy giving training like that. It has new challenges again since I need to synchronize my talking with my translator and also will sometimes hear an echo in Japanese. (Also have an earphone in my ear the whole training)

Again learned lots of new things about cultures and Scrum. Also visited a couple companies and had some discussion on their Scrum implementations. All-in-all, a successful training (from my perspective), a nice visit and hopefully helped the Japanese Scrum usage a little further.

Now back in the biggest Scrum-country in the world... Finland.


About 2 weeks ago I was in Denver on the Lean Product and Process Development Exchange. This was a small conference which focused on lean product development (not just SW). I was invited by Marry Poppendieck to come and speak on a panel she was organizing together with Peter (Xerox), Glenn (Spaceshuttles) and Patrick (Intel).

Even though I had a huge jetlag most of the time (11 hours timezone difference and a 36 hour trip), the conference was very good. The presentation held were very impressive and interesting. One of the most interesting take-aways for me was the use of test-first development outside of Software. It has a completely different meaning, but still is based on similar concepts. I really enjoyed the conference focus on knowledge creation. The only annoying thing to me was that there was still quite a lot of focus on tools and silver bullets, though people told me that compared to other conferences, there wasn't much.

Our Lean Software panel turned out to be more short presentations. I presented on feature teams and stop organizing product development using projects. People told me it was interesting, so that makes it successful. I enjoyed my co-panelists talks a lot too, about Scrum, legacy and space shuttles :) Also enjoyed the discussion we had and sharing some good (and bad) experiences.

The conference was definitively worth it. Next year they will organize another one, so you might want to join that. You can find the presentation of the conference here

I've recently made some very kewl CppUTest changes (at least, I think they are nice). CppUTest has a TestPlugin design. This means that you can write "Plugins" and add them in your main method. The Plugins is called before every setup and after ever teardown (automatically). This enables you to add general checking of things and works especially well with stubbing out some of the OS things.

Let me give some better example. For some embedded project I wrote some MutexPlugin. We stubbed out all the mutex locks and unlocks in the unit tests. Then, instead of doings mutex locks, I'd record the lock plus filename, linenumber (using macro magic and __FILE__ and __LINE__). Then I wrote the MutexPlugin which checks the the records to see if there is no inconsistency (dangling mutex, double locked mutex etc).

Then we'll install the Plugin in the main like this:

MutexPlugin mutexPlugin;
TestRegistry::getCurrentRegistry()->installPlugin(&mutexPlugin);

Now every test you ever write will automatically have mutex consistency checking and will fail automatically if there is something not consistent. Now... this is nothing new, we added this support to CppUTest already some time ago. However, now I added support for command line options to the TestPlugin. So, via command line, you can pass options to your Plugin by the -p option (CppUtest will pass all the -p options to all the installed plugins to see if they know what they mean, if none uses them then it will report an error).

So,  what you can do with this? Well, if we take our MutexPlugin as example, we can add a -pMutexVerbose option to the plugin which will output all the mutex locks and unlocks (again, plus line and file). That's a rather handy debugging and profiling option (especially combined with the -n option to run just one test). I did the same with the MemoryLeak plugin, so that you can dump all the dynamic memory allocations on your screen by just adding a command line option. (didn't check this in yet!)

The TestPlugin code is in souceforge. Some code (related to help options) is still missing, need to add that later.


Phew. It's been a while since I wrote something here. Life has been insane for me.

This year, I've been traveling probably around 80% of my time. It feels like I've been more in planes than out of planes. I was in Korea, India (a couple times), Singapore (a couple times), Malaysia, Japan, Finland, Hungary, Holland and US (a couple places). Now I'm not traveling since I need to lengthen my Visa for China. Also, these are exciting times since I will be moving again, more about that later.

What have I been up-to? Writing of the book (and an article for CrossTalks). Much training. Preparing for the move. Some TDD coaching and work on build scripts (the fun part of work). Also made some adjustments to CppUtest, I still need to commit them to the SourceForge repos though.

Hope to be blogging some more later. For now, I do have to say (I promised) that also Kuala Lumpur is actually quite a nice city. I visited it for the first time earlier this year and was positively surprised.

More later.