{"id":74,"date":"2008-01-02T01:54:47","date_gmt":"2008-01-02T06:54:47","guid":{"rendered":"https:\/\/billhiggins.us\/weblog\/2008\/01\/02\/measures-of-progress\/"},"modified":"2008-01-02T01:54:47","modified_gmt":"2008-01-02T06:54:47","slug":"measures-of-progress","status":"publish","type":"post","link":"https:\/\/billhiggins.us\/blog\/2008\/01\/02\/measures-of-progress\/","title":{"rendered":"measures of progress"},"content":{"rendered":"<p>I had an insight a few weeks ago that I thought was worth sharing. First some context.<\/p>\n<p>On <a href=\"http:\/\/jazz.net\/\" title=\"Jazz.net\">the Jazz project<\/a>, one of my jobs is leading the software development for our platform-level web UI stuff [1]. <a href=\"http:\/\/en.wikipedia.org\/wiki\/Erich_Gamma\" title=\"Erich Gamma - Wikipedia\">Erich Gamma<\/a> is the overall Jazz technology lead. Twice a month we have a sync up meeting where we discuss platform-level web UI progress.<\/p>\n<p>In our last chat in mid-December, one of the things we chatted about was the status of the Jazz Server&#8217;s Admin Web UI. We began bootstrapping the Admin Web UI in September and I thought we&#8217;d made good progress in such a short amount of time. Erich didn&#8217;t seem so impressed with what he saw. I was a bit frustrated by this because I thought Erich was being unreasonable &#8211; we&#8217;d made good progress for the short amount of time we&#8217;d been working on it. But after a few more minutes of chatting, I realized that there was simply a mismatch in what we were evaluating. I was evaluating the state of the Admin Web UI vs. the resources (time and people) we&#8217;d had to work on it; Erich was evaluating the state of the Admin Web UI vs. his vision of what an awesome Admin Web UI should look like. Put more tersely, I was measuring &#8220;current vs. previous&#8221; while Erich was measuring &#8220;current vs. ideal&#8221;.<\/p>\n<p>I found this difference in approach fascinating and insightful. I&#8217;m a very methodical person; when someone gives me a job I very methodically list its goals and measures of success, then I work backwards given the time and people I have to reach the goals and then over the course of weeks or month work towards the goals. But during my conversation with Erich I realized that a risk of my methodical approach is that I can become too bogged-down on the blocking and tackling of day-to-day software development and become overly focused on incremental progress and lose sight of the big vision of what you&#8217;re trying to build. I found that when I adopted Erich&#8217;s point of view and thought about the current state of the Admin Web UI vs. what it could become in the very long-term, I became very dissatisfied with its current state and highly motivated to be more ambitious with the next iteration plan.<\/p>\n<p>It&#8217;s ironic because most of the iterative software development literature talks about the converse problem &#8211; you&#8217;re too focused on the big picture that you don&#8217;t make day-to-day progress. Indeed it&#8217;s become a clich\u00c3\u00a9 over the past several years to make fun of architects who are too far removed from day-to-day coding, testing, and building.<\/p>\n<p>So the insight I gained was that I need to think in terms of both &#8220;current vs. previous&#8221; and &#8220;current vs. ideal&#8221;. Fortunately our iterative development process supports finding this balance. At the beginning of iterations it&#8217;s fine to dream big dreams about what you&#8217;re trying to achieve but then to become very pragmatic about how to make incremental progress towards realizing those dreams in the course of a four week iteration. Then over the four weeks you can be extremely methodical about making progress. Then at the end of the iteration you can reflect on what you&#8217;ve accomplished and feel some short satisfaction that the software is significantly better now than it was four weeks ago. Then you can reflect that the software&#8217;s not nearly as good as you ideally want it to be which provides the motivation to start the cycle again.<\/p>\n<p>[1] By &#8220;platform-level&#8221; I simply mean more of the infrastructure. That is, frameworks and APIs rather than tangible applications.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I had an insight a few weeks ago that I thought was worth sharing. First some context. On the Jazz project, one of my jobs is leading the software development for our platform-level web UI stuff [1]. Erich Gamma is the overall Jazz technology lead. Twice a month we have a sync up meeting where [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,6],"tags":[],"class_list":["post-74","post","type-post","status-publish","format-standard","hentry","category-culture","category-design"],"_links":{"self":[{"href":"https:\/\/billhiggins.us\/blog\/wp-json\/wp\/v2\/posts\/74","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/billhiggins.us\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/billhiggins.us\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/billhiggins.us\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/billhiggins.us\/blog\/wp-json\/wp\/v2\/comments?post=74"}],"version-history":[{"count":0,"href":"https:\/\/billhiggins.us\/blog\/wp-json\/wp\/v2\/posts\/74\/revisions"}],"wp:attachment":[{"href":"https:\/\/billhiggins.us\/blog\/wp-json\/wp\/v2\/media?parent=74"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/billhiggins.us\/blog\/wp-json\/wp\/v2\/categories?post=74"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/billhiggins.us\/blog\/wp-json\/wp\/v2\/tags?post=74"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}