<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bill Higgins&#039; Blog &#187; culture</title>
	<atom:link href="http://billhiggins.us/blog/category/culture/feed/" rel="self" type="application/rss+xml" />
	<link>http://billhiggins.us/blog</link>
	<description></description>
	<lastBuildDate>Fri, 30 Jul 2010 00:09:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>measures of progress</title>
		<link>http://billhiggins.us/blog/2008/01/02/measures-of-progress/</link>
		<comments>http://billhiggins.us/blog/2008/01/02/measures-of-progress/#comments</comments>
		<pubDate>Wed, 02 Jan 2008 06:54:47 +0000</pubDate>
		<dc:creator>Bill Higgins</dc:creator>
				<category><![CDATA[culture]]></category>
		<category><![CDATA[design]]></category>

		<guid isPermaLink="false">http://billhiggins.us/weblog/2008/01/02/measures-of-progress/</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>I had an insight a few weeks ago that I thought was worth sharing. First some context.</p>
<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>
<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>
<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>
<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é over the past several years to make fun of architects who are too far removed from day-to-day coding, testing, and building.</p>
<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>
<p>[1] By &#8220;platform-level&#8221; I simply mean more of the infrastructure. That is, frameworks and APIs rather than tangible applications.</p>
]]></content:encoded>
			<wfw:commentRss>http://billhiggins.us/blog/2008/01/02/measures-of-progress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>eXtreme UI design</title>
		<link>http://billhiggins.us/blog/2007/02/24/extreme-ui-design/</link>
		<comments>http://billhiggins.us/blog/2007/02/24/extreme-ui-design/#comments</comments>
		<pubDate>Sun, 25 Feb 2007 02:25:21 +0000</pubDate>
		<dc:creator>Bill Higgins</dc:creator>
				<category><![CDATA[culture]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[jazz]]></category>

		<guid isPermaLink="false">http://billhiggins.us/weblog/2007/02/24/extreme-ui-design/</guid>
		<description><![CDATA[In the last week of the most recent Jazz milestone, I realized that I was running out of time to give one of the web features a UI overhaul. Jen Hayes, the primary web UI designer, had sent me a spec more than a month before but I hadn&#8217;t implemented it because I was overwhelmed [...]]]></description>
			<content:encoded><![CDATA[<p>In the last week of the most recent <a href="http://jazz.net/" title="Jazz.net">Jazz</a> milestone, I realized that I was running out of time to give one of the web features a UI overhaul.  Jen Hayes, the primary web UI designer, had sent me a spec more than a month before but I hadn&#8217;t implemented it because I was overwhelmed by the many lines, measurements, and notes specifying the changes I was to make.  So I moved on to other stuff and forgot about the UI work until the UI designers brought up my procrastination on a UI design review call with <a href="http://en.wikipedia.org/wiki/Erich_Gamma" title="Wikipedia: Erich Gamma">Erich</a>.  Doh!</p>
<p>Jen pointed out the most pressing problem (font style in form elements, if memory serves) and I said &#8220;Oh, I can change that&#8221; and one line of <a href="http://en.wikipedia.org/wiki/CSS" title="Wikipedia: Cascading Style Sheets">CSS</a> later, the major problem was fixed.  Hey, this was pretty easy!   Jen mentioned a few other things and I realized that they were easy as well.  Erich and the other folks dropped off the call and we decided to start a NetMeeting and try to knock out as many UI polish items we could.  Two hours later we were completely done &#8211; not only had we fulfilled the spirit of the spec, we&#8217;d rethought a few spec&#8217;d decisions and tweaked a few additional items in the process of our extremely rapid iterations.</p>
<p>A few days later, I reflected on this and wondered why the heck we had the UI designers sending us super-detailed specs in the first place.  If someone were to send me a highly-detailed technical spec on how I should code a particular feature, I&#8217;d ask them if I were being <a href="http://en.wikipedia.org/wiki/Punk%27d" title="Wikipedia: Punk'd">Punk&#8217;d</a>.  Yet with regards to UI design, this is standard practice.  Not anymore, at least for me.  The UI designers are welcome to draw up whatever specs they like, but I&#8217;m only going to do major UI work via pair programming with a UI designer.</p>
<p>Pair programming with a UI designer has the same benefits as pair programming something in [fill in your programming language of choice].  You can experiment, discuss, learn, and refine very quickly, and the real-time verbal and visual communication is much higher bandwidth than email and documents.  This is especially true in a web environment, where you can hack CSS literally in real-time via <a href="http://editcss.mozdev.org/" title="mozdev.org - editcss">EditCss</a> and a screen sharing program.</p>
<p>This experience and another recent email conversation with <a href="http://www.redmonk.com/jgovernor/" title="James Governor">James Governor</a> on my reticence to publish a new Ajax article &#8220;before it is completely ready&#8221; has made me decide to reflect on how I can apply the principles of experiment/discuss/learn/refine to everything I do.</p>
]]></content:encoded>
			<wfw:commentRss>http://billhiggins.us/blog/2007/02/24/extreme-ui-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>disciplined laziness</title>
		<link>http://billhiggins.us/blog/2007/02/22/disciplined-laziness/</link>
		<comments>http://billhiggins.us/blog/2007/02/22/disciplined-laziness/#comments</comments>
		<pubDate>Thu, 22 Feb 2007 09:21:19 +0000</pubDate>
		<dc:creator>Bill Higgins</dc:creator>
				<category><![CDATA[culture]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[jazz]]></category>

		<guid isPermaLink="false">http://billhiggins.us/weblog/2007/02/22/disciplined-laziness/</guid>
		<description><![CDATA[The other day, I thought of a clever solution to speed up an important Jazz function by perhaps 20-40% (depending on a set of environmental factors). I eagerly documented the solution in a bug report and CC&#8217;d several teammates. Several times over the past week, I almost went ahead and just coded the solution, because [...]]]></description>
			<content:encoded><![CDATA[<p>The other day, I thought of a clever solution to speed up an important <a href="http://jazz.net/" title="Jazz.net">Jazz</a> function by perhaps 20-40% (depending on a set of environmental factors).  I eagerly documented the solution in a bug report and CC&#8217;d several teammates.  Several times over the past week, I almost went ahead and just coded the solution, because I was so happy with its cleverness.</p>
<p>But I haven&#8217;t done this.</p>
<p>Fortunately for users but unfortunately for my idea, the function in question already runs as fast (1-4 seconds) as users expect it to run, given the nature of the function.  So although the 20-40% improvement is certainly <em>relatively</em> significant, it isn&#8217;t of any practical significance to users.  After all, who cares if something that currently runs in a &#8216;speedy&#8217; 2 seconds were reduced to 1.5 seconds?</p>
<p>So it&#8217;s been with great discipline (and a bit of angst) that I&#8217;ve abstained from writing this clever code, basically because of the <a href="http://en.wikipedia.org/wiki/YAGNI" title="Wikipedia: Yout Ain't Gonna Need It">YAGNI principle</a>, which the team as a whole rigorously observes.  The benefits (0.2 &#8211; 1.6 second reduced response time) simply don&#8217;t justify these costs:</p>
<ul>
<li>time to implement</li>
<li>time to test</li>
<li>potential defects (the current implementation has been stable for six months)</li>
<li>increased complexity (it&#8217;s clever, you know)</li>
<li>opportunity cost of not doing other work which <em>is</em> of practical use to users (backlogged enhancement requests, UI/UX improvements, bug fixes)</li>
</ul>
<p>The reason I bring this up is because it demonstrates the powerful temptation to implement a clever or elegant solution <em>despite</em> the fact that it lacks a compelling problem.   I consider YAGNI to be a fundamental principle of my personal development philosophy, yet I <em>still</em> found myself tempted to implement the solution once I had fallen in love with its cleverness and efficiency.</p>
<p>So &#8230; I&#8217;ll be patient for now and my solution will remain unimplemented, but documented in a bug report.  If, over time, other system factors cause the response time to degrade, <em>perhaps</em> the solution&#8217;s value may increase enough to justify its costs.</p>
<p>Or not.</p>
]]></content:encoded>
			<wfw:commentRss>http://billhiggins.us/blog/2007/02/22/disciplined-laziness/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>my unusual start with the Jazz project</title>
		<link>http://billhiggins.us/blog/2007/02/08/my-unusual-start-with-the-jazz-project/</link>
		<comments>http://billhiggins.us/blog/2007/02/08/my-unusual-start-with-the-jazz-project/#comments</comments>
		<pubDate>Fri, 09 Feb 2007 03:59:30 +0000</pubDate>
		<dc:creator>Bill Higgins</dc:creator>
				<category><![CDATA[culture]]></category>
		<category><![CDATA[jazz]]></category>

		<guid isPermaLink="false">http://billhiggins.us/weblog/2007/02/08/my-unusual-start-with-the-jazz-project/</guid>
		<description><![CDATA[I first came in contact with the Jazz project back in 2005 while I was working as an IT architect in IBM Global Services. A couple of IGS and Rational managers agreed that it would be a good idea if I shared with the Jazz team some of my experiences working on large IT integration [...]]]></description>
			<content:encoded><![CDATA[<p>I first came in contact with <a href="http://jazz.net/">the Jazz project</a> back in 2005 while I was working as an IT architect in IBM Global Services.  A couple of IGS and Rational managers agreed that it would be a good idea if I shared with the Jazz team some of my experiences working on large IT integration projects.  So I began spending 25% of my time working with the Jazz product management team.</p>
<p>I felt fortunate for this interaction because I was impressed both with the Jazz strategy and the Jazz team &#8211;  composed primarily of the folks who created <a href="http://www.eclipse.org/eclipse/">the Eclipse platform</a>.  However, I felt like I wasn&#8217;t adding as much value as I could have since I didn&#8217;t interact much with the development team, who were driving much of the direction.</p>
<p>I spoke with Kurt Bittner of the product management team about my concerns and he told me &#8220;You&#8217;ve got development experience, why don&#8217;t you talk to Scott Rich about joining the development team?&#8221;.  To me this was a pretty wild idea, since in Global Services I&#8217;d worked hard to &#8216;escape&#8217; the Developer caste in favor of architecture.  But Kurt explained that in the Eclipse/Jazz team, everyone, up to the executive level, participated in technical design and even wrote code.</p>
<p>After thinking about this a while, I decided it was a good idea, so I spoke with Scott about working on his Jazz server team.  Our talk went well and we both had a good vibe but the outcome was a bit muddy.  Because no one on the Jazz development team had seen my technical skills first-hand, and because I hadn&#8217;t done active development for more than a year, they wanted to bring me on in a sort of trial period.  If I did well, there was an opportunity to join full-time, and if things didn&#8217;t go well, no harm done.</p>
<p>At first this was quite surprising, because since I joined IBM, I&#8217;d always been a top technical performer and had a very good reputation around Global Services.  But the more I thought about it, the more I realized that this was a very positive sign about the Jazz development culture.  My glowing performance reviews weren&#8217;t enough &#8211; I had to <em>prove and show my capabilities</em> &#8211; this team would not risk bringing on dead weight.  Now I wanted to join this team even more and worked very hard.  So on September 14th 2005, after two months of working on a trial basis, Scott asked me to join the team full-time.  This was probably the happiest moment of my IBM career.  I even saved the chat:</p>
<p><strong>Scott Rich</strong> &#8211; hey, still there?</p>
<p><strong>Bill Higgins</strong> &#8211; yes</p>
<p><strong>Scott Rich</strong> &#8211; what would you think about joining the Jazz team?  <img src='http://billhiggins.us/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>Bill Higgins</strong> &#8211; !!!!!!!!!</p>
<p><strong>Bill Higgins</strong> &#8211; are you serious?!?!?!?!</p>
<p><strong>Scott Rich</strong> &#8211; yep, you&#8217;re in.  your final test is to figure out how to apply for JobReq #006282 in the jobs system&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://billhiggins.us/blog/2007/02/08/my-unusual-start-with-the-jazz-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>eating with Chinese friends and family</title>
		<link>http://billhiggins.us/blog/2007/01/18/eating-with-chinese-friends-and-family/</link>
		<comments>http://billhiggins.us/blog/2007/01/18/eating-with-chinese-friends-and-family/#comments</comments>
		<pubDate>Thu, 18 Jan 2007 13:29:55 +0000</pubDate>
		<dc:creator>Bill Higgins</dc:creator>
				<category><![CDATA[culture]]></category>

		<guid isPermaLink="false">http://billhiggins.us/weblog/2007/01/18/eating-with-chinese-friends-and-family/</guid>
		<description><![CDATA[My wife Chunhui was born and raised in Jinan, China.  One of the fun challenges of an American-Chinese marriage is to recognize the subtle cultural differences so that you don&#8217;t unintentionally violate the other person&#8217;s cultural assumptions and mores.  Recently we had an interesting discussion with another American-Chinese couple on the different customs with regards [...]]]></description>
			<content:encoded><![CDATA[<p>My wife Chunhui was born and raised in <a href="http://en.wikipedia.org/wiki/Jinan">Jinan, China</a>.  One of the fun challenges of an American-Chinese marriage is to recognize the subtle cultural differences so that you don&#8217;t unintentionally violate the other person&#8217;s cultural assumptions and mores.  Recently we had an interesting discussion with another American-Chinese couple on the different customs with regards to finishing ones meal.</p>
<p>We observed that in American culture, you&#8217;re expected to take what food you want from the center of the table, and <span style="font-style: italic">finish what you take</span>.  In Chinese culture, you can take food from the table, but other people at the table are just as likely to eagerly <span style="font-style: italic">give</span> you food in a spirit of generosity, especially if they think you like something.  What makes your Chinese friends and family think that you like something?  If you finish it!</p>
<p>This can easily lead to some crossed cultural wires.  Americans feel culturally-obligated to finish what they take, and Chinese people feel culturally-obligated to give more food to someone who seems to enjoy it.  The trick is that when you want to be done with a particular dish, you simply leave a small but visible portion of the food on your plate, so none of your Chinese friends and family assume that you want more.  This way you don&#8217;t overeat, and you don&#8217;t get into an awkward &#8220;No, I really am full!&#8221; conversation with your Chinese friends and family as they try to put more food on your plate.</p>
]]></content:encoded>
			<wfw:commentRss>http://billhiggins.us/blog/2007/01/18/eating-with-chinese-friends-and-family/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>being constructive</title>
		<link>http://billhiggins.us/blog/2007/01/18/being-constructive/</link>
		<comments>http://billhiggins.us/blog/2007/01/18/being-constructive/#comments</comments>
		<pubDate>Thu, 18 Jan 2007 05:15:35 +0000</pubDate>
		<dc:creator>Bill Higgins</dc:creator>
				<category><![CDATA[culture]]></category>
		<category><![CDATA[jazz]]></category>

		<guid isPermaLink="false">http://billhiggins.us/weblog/2007/01/18/being-constructive/</guid>
		<description><![CDATA[Marcus Aurelius begins his Meditations by giving thanks for the qualities he gained through observation of others who exhibited those qualities. On a much humbler scale, I recently reflected that my personality has changed as a result of observing the constructive behavior of my project leaders. One example of this happened at the end of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Marcus_Aurelius">Marcus Aurelius</a> <a href="http://classics.mit.edu/Antoninus/meditations.1.one.html">begins his <em>Meditations</em></a> by giving thanks for the qualities he gained through observation of others who exhibited those qualities.  On a much humbler scale, I recently reflected that my personality has changed as a result of observing the constructive behavior of my project leaders.</p>
<p>One example of this happened at the end of 2006.  The day before we were supposed to freeze code for the year, I assisted another developer on a late-breaking severe defect.  Unfortunately we didn&#8217;t test the fix adequately and it led to another defect which I discovered two hours after the final scheduled build completed.  Sleep-deprived and stressed, I forgot about the code freeze and delivered a fix to the second defect.  Fifteen minutes after <a href="http://www-03.ibm.com/developerworks/blogs/page/BillHiggins?entry=done_for_2006">delivering the patch</a>, one of our senior technical people sent out an email reminding everyone that the codebase was frozen.  I felt horrible because I&#8217;d committed a major faux pas at the most critical period in the development cycle.  With great embarrassment, I sent a follow-up email to the project, notifying them of my mistake.</p>
<p>The next morning I came into the RTP lab for the end-game planning call with the PMC and component leads.  I went to a meeting room and found John Wiegand and Scott Rich, who at this point were fully aware of the mistake I made.  With a sheepish smile, I asked &#8220;Can I buy anyone a coffee?&#8221;  Scott replied &#8220;You&#8217;re not forgiven <em>that</em> easily.  What you did last night requires coffee <em>and</em> donuts.&#8221;  John said, &#8220;Well, we all screw up from time to time, and the important thing is that you recognized the mistake and, to look at the positive aspect of it, the feature now works.&#8221;  And that was that.  In the end it turned out that there were a few other lingering bugs in the final scheduled build so we did one more build and all was well.</p>
<p>Another example was my mid-year checkpoint with Erich Gamma, reviewing the progress on the subsystem that I lead. My team was struggling at the time.  In some very new technical territory, we were progressing more slowly than anyone would have liked.  I was dreading the call, because Erich&#8217;s sort of a professional hero of mine, so I really wasn&#8217;t looking forward to hearing him tell me that things weren&#8217;t going well.  But the call wasn&#8217;t like that at all.  He began by reflecting on the things we&#8217;d accomplished and what had gone well.  Only after a few minutes of discussing accomplishments did he gently segue into the discussion of areas that needed improvement.  We prioritized a list of architectural features and user scenarios, and then worked through the details of what my team would need from other teams to succeed.  I left the call feeling energized about what I was confident we could achieve, and over the past six months, I&#8217;m confident that we&#8217;ve met or exceeded those expectations.</p>
]]></content:encoded>
			<wfw:commentRss>http://billhiggins.us/blog/2007/01/18/being-constructive/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
