Saturday, 16 April 2011

Agile Japan 2011

Despite the fact that the study of Japanese companies by Nonaka and Takeuchi in their seminal paper “The new new product development game”  is credited with giving the name to Scrum  I don’t see a widespread adoption of agile methods for software development in Japan. Certainly at the large IT company where I work, process heavy waterfall style development seems to be the norm. A couple of years ago, the “quality division” tried to introduce a waterfall process in order to unify the process across all projects in the company to improve “quality.” This effort demonstrated everything that was wrong about imposing heavy defined processes and fortunately our division successfully opted out.

Introducing change anywhere is hard and I struggle to improve our development process. Two of the problems that I face are that agile methods do not seem well known, at least among my colleagues, and a belief that such techniques may work in America but would not work in Japan. This made me especially happy to be able to attend Agile Japan 2011  because the keynote speaker was Linda Rising, talking about introducing change, and it was a chance for my colleagues to see that Agile is used in Japan.

The main conference was held in Tokyo but there were 10 satellite conferences held around Japan, from Okinawa to Hokkaido, including one in Sendai. Because there was a satellite conference in Osaka it was easy for me to take the whole team. Initially I was expecting just a video link to Tokyo, and this was the case for the morning session. But for the afternoon they had a local program – with parallel sessions! There seemed to be about 60 attendees in Osaka.

In the keynote from Linda Rising she discussed her favourite patterns from “Fearless Change.” I had read this book some time ago and it was a nice refresher of the patterns. I will definitely have to re-read the book again. The comment that seemed to resonate most was “Just do it!”. This presentation is now on YouTube

The first presentation in Osaka in the afternoon was by Kawabata Mitsuyoshi of Agileware  talking about the 5 eXtreme Programing values. The most interesting part of this presentation for me was the specific difficulties of doing agile in Japan. XP values face to face communication but often when you want to discuss an issue the response is “I will send an email” or “let’s discuss it later.” This is something I have noticed myself with developers using email to “communicate” with someone a few meters away. I doubt that this problem is unique to Japan though.

The second session I attended in the afternoon was a workshop by Tarumoto Tetsuya  on  Usability Testing and more specifically DIY usability testing when you can’t afford or wait for a professionally run usability test. This included a very interesting description of the usability testing for the Suica  contactless smart card used for JR railways in Tokyo.

To demonstrate how to run a test, asking the users what they are thinking rather than asking them their opinion of the software being tested the workshop included a Kanji game. Unfortunately this was completely impossible for me, lacking the many years of hard study of Kanji which all Japanese have at school.

Overall the conference was very well run, had some interesting presentations and I definitely hope that there will be an Agile Japan 2012 and that I will be able to go.

Saturday, 9 April 2011

3D rotation about an arbitrary axis

I often need to do some geometric calculations involving rotation of a vector about an axis. However, not often enough to have the matrices for the rotation to hand. The calculation is not particulary difficult and is described in many places, but last time I needed this I found a very good write up by Glenn Murray:

Not only is this an easy to follow description, it also has the final rotation matrices which makes it very easy to code.

Tuesday, 5 April 2011

Printing from QtCreator

Why are the printing functions from most IDEs so bad? OK so I have not really compared the printing function in many IDEs, but the ones that I have used hardly offer any control over the printing at all and print in a large font.  I do like to read through listings on paper and to make notes on the listing  when trying to understand code or planning some modifications. But, I don't like priniting out pages and pages just to get a single function.

For whole files, I have been using a2ps. It can print multiple pages per sheet, supports two sided printing and produces readable listings with a small font. However, prinitng selected text was more difficult.

Now, QtCreator has support for external tools so I can print both whole files and selected text from within QtCreator but using a2ps. To print a file I just configured an external tool with the command line:
/usr/bin/a2ps --tabsize=4 --sides=tumble --medium=a4 -f8 -Ec++  --center-title=${CurrentProject:FilePath} -g -d "%{CurrentDocument:FilePath}"

To print a selection is similar, but instead of specifying the file as an argument, %{CurrentDocument:Selection} is specified as the input to the tool as shown below.

Sunday, 3 April 2011

Hard Choices

The Hard Choices board game from the Software Engineering Institute is a game designed to teach the effect of technical debt in software development. Players choose between taking a shortcut or taking the "long way" and gathering more tools. Shortcuts incur a -1 movement penalty on subsequent turns unless one turn is spent "refactoring."

An interesting suggestion from the Facilitator's guide is to play multiple rounds, keeping the shortcut and tools cards from the previous round. This simulates a second release where shortcuts from the first round will continue to slow development.

I want to play this with my development team but I am not sure how well the will take to playing a dice game in the office. The discussion following the game is likely to be the most important part.

The game itself is provided as a PDF download to print out. Just printing it out seemed a bit too simple so I printed it on some ink jet films and stuck the board on a piece of poystyrene board and the tool cards onto some thick card.