Sun Mar 21 10:06:39 CET 2010

What did I learn this time?

The project I'm about to finish was something new to me.  In some
sense it was quite frustrating as it wasn't much about design and
programming, but more about communication and politics.

All my work up till now has been higly technical: understand the
problem deeply, write a solution, debug, iterate.

This time the technical challenges where minor, apart from absorbing
knowledge about a new system and its quirks (Android) and a new
programming language (Java).  Most work went into:

   - Very difficult path from requirements to specifications.

     Things seemed obvious at first, but workarounds for secondary
     effects out of our control greatly complicated the design and
     implementation.  New use-case requirements kept popping up.  Lack
     of adequate tests to see what is really needed.

   - No real feedback from particular use case to general

     This seems to be largely a consequence of hierarchical way of
     planning and making decisions common in large companies.  This
     project was special as it was a small one, not important enough
     for upper layers to bother.

   - Documentation.

     Getting the point across is difficult when using concepts from
     functional programming in an OO-oriented shop.  Writing good
     design documentation is hard.  Keeping it up to date is harder.
     Make sure that documentation and implementation are linked!  Turn
     every question ever asked into a FAQ item.

   - Struggle with tools.  The android development tools are not very
     good.  They are slow, buggy and error-prone.  The large
     write-compile-test cycle makes working with this system quite

   - Meetings drain energy.

     My efficient work modes are problem solving (long stretches of
     deep concentration) and process management (keeping and eye on
     and streering a lot of not too complicated semi-automatic

     Dealing with people and disagreements is not something that fits
     into this plan.  It is as if _everyting_ in my mind needs to be
     swapped to secondary storage to make room for the social
     interaction rules.