Last week, I was at the Scan-Agile conference in Helsinki. I did a completely new presentation which I called "Journey through product development literature". It was a new style of presentation that only consisted of quotes from different books. I had a lot of fun making and doing the presentation.
I got some requests to list the books I talked about. Here they are:
I got some requests to list the books I talked about. Here they are:
- Hackers & Painters - Paul Graham
- How to Read a Book - Adler, Van Doren
- Dynamic Manufacturing - Hayes, Wheelwright and Clark
- Toyota Culture - Liker, Hoseus
- Just in Time - Ohno
- 8th Habit - Covey
- Clean Code - Martin
- Hard Facts - Pfeffer, Sutton
- Cross-Functional Teams - Parker
- Flexible Product Development - Smith
- Winning with Products - Cooper
- Product Development Performance - Clark, Fujimoto
- Revolutionizing Product Development - Clark, Wheelwright
- Fast Cycle Time - Meyer
- Designing Team-Based Organizations - Mohrman, Cohen
- The Discipline of Teams - Kaztenbach, Smith
- Wisdom of Teams - Katzenbach, Smith
- Leading Teams - Hackman
- X-Teams - Ancona, Bresman
- Reflections on Quality - Crosby
- Teams at the Top - Katzenbach
- Leading Self-Directed Teams - Fisher
Last week been test-driving some C code again and found that not much people are familiar with the "function pointer link stub". This is an excellent technique in C to dynamically replace library calls without adjusting the library.
Imagine, you are working on some embedded software. You will have a couple of libraries that you use, but you won't link to it when unit testing. Instead you stub them out. But, a link stub cannot be adjusted on run-time, so how do you handle this? With... "function pointer link stubs".
The idea is simple. You stub out the library and your stub calls a function pointer when its set. When not set, it just returns success.
Here is some example code:
.h (in a library where we cannot change the header)
int aLibraryCallWeCannotChange(int param);
----------------
aLibraryStub.h
extern int (*aLibraryCallWeCannotChangeFp)(int param);
-----------------
aLibraryStub.c
int aLibraryCallWeCannotChange(int param)
{
if (aLibraryCallWeCannotChangeFp) aLibraryCallWeCannotChangeFp(param);
return 0;
}
int (*aLibraryCallWeCannotChangeFp)(int param) = NULL;
-------------------------
TestThatUsesLibrary.cpp
TEST_GROUP(blah)
{
void setup()
{
UT_PTR_SET(aLibraryCallWeCannotChangeFp, dynamicStubOfALibraryCall);
}
}
Now it is easy to place the code of your stub close to your tests and you will never have to change the linker stub code.
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.
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
