<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>f3yourmind</title>
	
	<link>http://aslamkhan.net</link>
	<description>"There are no limits. There are only plateaus, and you must not stay there, you must go beyond them." - Bruce Lee</description>
	<pubDate>Thu, 09 Jul 2009 13:19:42 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<creativeCommons:license>http://creativecommons.org/licenses/by-nd/3.0/</creativeCommons:license><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/f3yourmind" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Pass the Parcel</title>
		<link>http://feedproxy.google.com/~r/f3yourmind/~3/CoiD4XXfFFE/</link>
		<comments>http://aslamkhan.net/software-development/pass-the-parcel/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 13:19:42 +0000</pubDate>
		<dc:creator>Aslam</dc:creator>
		
		<category><![CDATA[Architecture and Development]]></category>

		<category><![CDATA[Agile]]></category>

		<category><![CDATA[balance]]></category>

		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://aslamkhan.net/?p=214</guid>
		<description><![CDATA[Fiona and I are planning Lia&#8217;s 5th birthday (27 July!) and a favourite kids&#8217; party game is Pass the Parcel.  Kids sit in a circle, and there&#8217;s a surprise package with wads and wads of wrapping.  Music plays. Kids pass the parcel around. Music stops. Kid with parcel removes one layer of wrapping.  Music plays, [...]]]></description>
			<content:encoded><![CDATA[<p>Fiona and I are planning Lia&#8217;s 5th birthday (27 July!) and a favourite kids&#8217; party game is <em>Pass the Parcel</em>.  Kids sit in a circle, and there&#8217;s a surprise package with wads and wads of wrapping.  Music plays. Kids pass the parcel around. Music stops. Kid with parcel removes one layer of wrapping.  Music plays, pass it again.  And the last layer removed reveals the prize and that kid gets to keep it.  Do it once for each child, carefully timing the music and every kid is a winner <img src='http://aslamkhan.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>It reminded me of this business of tossing artifacts from once person to another in a development team.  In waterfall, it&#8217;s obvious who has what and what layer is peeled off when.  In <em>fake agile(*)</em>, it&#8217;s not so obvious.  You know the music is playing when people ignore responsibility and toss it onwards or backwards.  The only difference, is that the party game everyone wins.  In the software game, everyone loses.</p>
<p>A few years back I sat in a class where <a href="http://www.threeriversinstitute.org/blog">Kent Beck</a> explored XP with ten of us for a day.  For the first time, I realised that XP was less about coding practices and more about being decent people.  If I wanted to write quality software on time, on budget, etc. then I needed to have courage to accept responsibility for everything.  I don&#8217;t need to do everything, but I needed to feel responsible for everything.  No more passing the parcel, when it was convenient for me.  To do that, you need courage and respect.</p>
<p>Somehow, it feels like an Ubuntu coding thing again.  If you pass the parcel, make sure the receiver has good chance of winning the game.</p>
<p><em>(*) When the teams says they&#8217;re agile, practice agility mechanically, but don&#8217;t live by the value system which will make them agile in their heads.</em></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/f3yourmind?a=CoiD4XXfFFE:9qlbonVAKMs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/f3yourmind?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=CoiD4XXfFFE:9qlbonVAKMs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=CoiD4XXfFFE:9qlbonVAKMs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=CoiD4XXfFFE:9qlbonVAKMs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=CoiD4XXfFFE:9qlbonVAKMs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=CoiD4XXfFFE:9qlbonVAKMs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=CoiD4XXfFFE:9qlbonVAKMs:gIN9vFwOqvQ" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://aslamkhan.net/software-development/pass-the-parcel/feed/</wfw:commentRss>
		<feedburner:origLink>http://aslamkhan.net/software-development/pass-the-parcel/</feedburner:origLink></item>
		<item>
		<title>Ubuntu Coding for your Friends</title>
		<link>http://feedproxy.google.com/~r/f3yourmind/~3/M3IbR3_P9ms/</link>
		<comments>http://aslamkhan.net/software-development/ubuntu-coding-for-your-friends/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 11:07:30 +0000</pubDate>
		<dc:creator>Aslam</dc:creator>
		
		<category><![CDATA[Architecture and Development]]></category>

		<category><![CDATA[Agile]]></category>

		<category><![CDATA[balance]]></category>

		<category><![CDATA[DDD]]></category>

		<category><![CDATA[intentions]]></category>

		<category><![CDATA[learning]]></category>

		<category><![CDATA[ubuntu]]></category>

		<category><![CDATA[zen]]></category>

		<guid isPermaLink="false">http://aslamkhan.net/?p=211</guid>
		<description><![CDATA[Last week I gave a domain driven design course and one slide I put up was titled &#8220;Coding for Friends&#8221; with a single message &#8220;Avoid conceptual corruption&#8221;. In other words &#8220;Code so I can understand you and you don&#8217;t screw up my mind&#8221;.  I did not realise the significance until I started working through the [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I gave a domain driven design course and one slide I put up was titled &#8220;Coding for Friends&#8221; with a single message &#8220;Avoid conceptual corruption&#8221;. In other words &#8220;Code so I can understand you and you don&#8217;t screw up my mind&#8221;.  I did not realise the significance until I started working through the practical exercises with the groups and kept on referring back to this simple idea.</p>
<p>So often we write code in isolation and the code reflects our personal interpretation of the problem and a personalised solution too.  We easily forget that other people will execute this code, modify it, and, at the very least, read it.  Coding is a social exercise first, then a technical exercise.  We have a responsibility towards increasing the probability of success for the next person or team that will work this code.</p>
<p>We can write code in isolation that is of high quality, focusing on self and metaphysics of quality, etc.  That&#8217;s a zen view and it is about you.  I like to think (believe?) that Ubuntu is zen for a group, not for an individual.</p>
<p>In Zulu, the Ubuntu philosophy is summed up as</p>
<blockquote><p>Umuntu ngumuntu ngabantu</p></blockquote>
<p>which roughly translates to</p>
<blockquote><p>A person is a person through (other) persons</p></blockquote>
<p>And in geek-speak it is</p>
<blockquote><p>A developer is a developer through (other) developers</p></blockquote>
<p>I get better because you make me better through your good actions.  And the opposite also holds true: You get worse at what you do when I am bad at what I do.</p>
<p>How do we write ubuntu code?  It&#8217;s not hard.  It&#8217;s based on &#8220;old&#8221; principles and wise words of many people.  It&#8217;s old material but worth revisiting with ubuntu glasses on: when you think about what the effect is on other developers and what the reciprocal effect will be, back onto yourself.</p>
<p><strong>Reveal your intention, not your implementation.</strong> If you have designed a project management app with tasks and decided to implement it as a graph, call the class <em>Task</em> and give it a method called <em>resolveCyclicDependencies()</em>.  Don&#8217;t create a class <em>Node</em> with a method called <em>topologicalSort()</em>.</p>
<p><strong>Avoid side effects.</strong> Let a method do one thing, and one thing only.  It&#8217;s frightening how many developers don&#8217;t do this.  For example, if you add a line item to an invoice, don&#8217;t update the total.  Have something else that calculates the total.  Basically, be boring and predictable.  I long time ago a SQL guru looked at my code and said &#8220;The optimizer does not like fancy code&#8221;.  Same thing.</p>
<p><strong>Broken metaphors.</strong> Metaphors exist for conceptual understanding.  Once you get the conceptual break through, leave it.  It&#8217;s ok! Trying to build an economic model with a metaphoric model of fluid flows (or bears and bulls!) will just create havoc downstream.</p>
<p><strong>Where am I?</strong> Figure out where you are in the bigger picture.  Are you upstream or downstream?  Is someone going call my code to create that <em>Book</em> object? Am I going to call someone else&#8217;s code to get the <em>Customer</em> object?  In other words, know what you supply and what you consume.</p>
<p><strong>Fail fast.</strong> Assert! It&#8217;s allowed in production code too.  I would rather fail quickly and dramatically than delay the effect until it is obscure.  More importantly, when I read an assert then I know that the particular condition is critical.  It is an invariant that must be honored.</p>
<p><strong>Pairing.</strong> Programming in pairs is an active exercise, not a case of a second syntax checker.  I see many teams that pair mechanically and it does nothing for increasing code quality at all.  If you practice active pairing, you are closer to ubuntu coding.</p>
<p>There are other techniques which increase the collective responsibility of your design and code such as context maps in strategic design, values and attitudes such as responsibility and feedback.  I&#8217;ll deal with those on another day.</p>
<p>But for now, I think that</p>
<blockquote><p>Code is code through (other) code!</p></blockquote>
<p>Do you have any other ubuntu coding techniques? Attitudes?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/f3yourmind?a=M3IbR3_P9ms:hOwisUdGcyM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/f3yourmind?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=M3IbR3_P9ms:hOwisUdGcyM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=M3IbR3_P9ms:hOwisUdGcyM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=M3IbR3_P9ms:hOwisUdGcyM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=M3IbR3_P9ms:hOwisUdGcyM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=M3IbR3_P9ms:hOwisUdGcyM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=M3IbR3_P9ms:hOwisUdGcyM:gIN9vFwOqvQ" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://aslamkhan.net/software-development/ubuntu-coding-for-your-friends/feed/</wfw:commentRss>
		<feedburner:origLink>http://aslamkhan.net/software-development/ubuntu-coding-for-your-friends/</feedburner:origLink></item>
		<item>
		<title>One Hundreth Away from Fame</title>
		<link>http://feedproxy.google.com/~r/f3yourmind/~3/03Jdl9H1aA8/</link>
		<comments>http://aslamkhan.net/software-development/one-hundreth-away-from-fame/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 11:33:22 +0000</pubDate>
		<dc:creator>Aslam</dc:creator>
		
		<category><![CDATA[Architecture and Development]]></category>

		<category><![CDATA[balance]]></category>

		<category><![CDATA[diversity]]></category>

		<category><![CDATA[learning]]></category>

		<guid isPermaLink="false">http://aslamkhan.net/?p=208</guid>
		<description><![CDATA[I read an article on the strength of the Finnish schooling system yesterday.  It&#8217;s considered as the best in the world with a 4% variance between the best school and the worst school.  How did they achieve that?  They give a lot of focus on the bottom 99% of kids in the classroom and not [...]]]></description>
			<content:encoded><![CDATA[<p>I read an <a href="http://www.thetimes.co.za/News/Article.aspx?id=1021966">article</a> on the strength of the Finnish schooling system yesterday.  It&#8217;s considered as the best in the world with a 4% variance between the best school and the worst school.  How did they achieve that?  They give a lot of focus on the bottom 99% of kids in the classroom and not the top 1%.</p>
<p>I have a fear that as a community we promote the top 1%.  I hear developers being labeled such as <em>rock stars</em> and <em>ninjas</em>.  It&#8217;s no different to <em>junior</em> developers and <em>senior</em> developers.  We find all sorts of measures to be in the top 1%:  Twitter follower-count, Facebook friends, LinkedIn connections.  I think such labels and measures create an air of exclusivity and elitism to the detriment of 99% of the people.  NINETY NINE PERCENT !!</p>
<p>My 1% rankings have always been nothing more than a fleeting moment.  Once I won a book prize at school and I got an award for some design in university and meal voucher or two for a job well done.  It was meaningfully great in that context, relative to the others in that context.  But it was perceived as such by a few at that moment in time.</p>
<p>Looking back, I feel sad.  Not because of the scarcity my top 1% ranking, but by the reflection that those fleeting moments did not have lasting value to those that were in that context with me.  I should have made it count more significantly.  These days, I want to do things that touch others meaningfully.  Is my my code worth reading and from which you can learn?  Did our conversation over coffee move us closer to understanding each other?  And I want to be affected similarly too, by 100% of the people, not just the 1%.</p>
<p>Sometimes you&#8217;re in the top 1% and sometimes you&#8217;re in the bottom 99%.  But you will always be part of the 100%.  I am nothing, yet I am everything.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/f3yourmind?a=03Jdl9H1aA8:mGScRImy47E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/f3yourmind?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=03Jdl9H1aA8:mGScRImy47E:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=03Jdl9H1aA8:mGScRImy47E:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=03Jdl9H1aA8:mGScRImy47E:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=03Jdl9H1aA8:mGScRImy47E:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=03Jdl9H1aA8:mGScRImy47E:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=03Jdl9H1aA8:mGScRImy47E:gIN9vFwOqvQ" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://aslamkhan.net/software-development/one-hundreth-away-from-fame/feed/</wfw:commentRss>
		<feedburner:origLink>http://aslamkhan.net/software-development/one-hundreth-away-from-fame/</feedburner:origLink></item>
		<item>
		<title>Great Quotes for Domain Driven Design</title>
		<link>http://feedproxy.google.com/~r/f3yourmind/~3/XeNgN8mwsg0/</link>
		<comments>http://aslamkhan.net/software-development/great-quotes-for-domain-driven-design/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 09:39:03 +0000</pubDate>
		<dc:creator>Aslam</dc:creator>
		
		<category><![CDATA[Architecture and Development]]></category>

		<category><![CDATA[DDD]]></category>

		<category><![CDATA[Simplicity]]></category>

		<category><![CDATA[Ubiquitous Language]]></category>

		<guid isPermaLink="false">http://aslamkhan.net/?p=201</guid>
		<description><![CDATA[I am revisiting the material for the factor10 Domain Driven Design course as part of a &#8220;freshen up&#8221; for the when I give it to a development team on July 1, 2009.  So I started hunting for some quotes to liven it up a bit.
Here are some choice bites for ubiquitous language.
&#8220;They have been at [...]]]></description>
			<content:encoded><![CDATA[<p>I am revisiting the material for the <a href="http://www.factor10.com">factor10</a> Domain Driven Design course as part of a &#8220;freshen up&#8221; for the when I give it to a development team on July 1, 2009.  So I started hunting for some quotes to liven it up a bit.</p>
<p>Here are some choice bites for ubiquitous language.</p>
<blockquote><p>&#8220;They have been at a great feast of languages and stolen the scraps&#8221; <em>&#8211; William Shakespear</em></p></blockquote>
<p>and</p>
<blockquote><p>&#8220;Thought is the blossom; language the bud; action the fruit behind it&#8221;<em> &#8212; Ralph Waldo Emerson</em></p></blockquote>
<p>And on the need for simplicity, I really liked this one.</p>
<blockquote><p>&#8220;There is never any justification for things being complex when they could be simple&#8221; <em>&#8211; Edward de Bono</em></p></blockquote>
<p><a href="http://www.integralwebsolutions.co.za/Blog.aspx">Robert Bravery</a> commented on an <a href="http://aslamkhan.net/software-development/kung-fu-coding-bruce-lee-style/">old blog post</a> of mine and I re-discovered this one</p>
<blockquote><p>&#8220;Don&#8217;t indulge in any unnecessary, sophisticated moves.  You&#8217;ll get clobbered if you do&#8221; <em>&#8211; Bruce Lee</em></p></blockquote>
<p>Lastly, and the one I&#8217;m definitely going to use to stress the importance of working directly with the domain expert.</p>
<blockquote><p>&#8220;Never hold discussions with the monkey when the organ grinder is in the room&#8221; <em>&#8211; Winston Churchill</em></p></blockquote>
<p>What a diverse group of people but such collective value.  Do you have any classic quotes?  Obscure quotes?</p>
<p><em></em></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/f3yourmind?a=XeNgN8mwsg0:1RSHi_Ea6eU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/f3yourmind?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=XeNgN8mwsg0:1RSHi_Ea6eU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=XeNgN8mwsg0:1RSHi_Ea6eU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=XeNgN8mwsg0:1RSHi_Ea6eU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=XeNgN8mwsg0:1RSHi_Ea6eU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=XeNgN8mwsg0:1RSHi_Ea6eU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=XeNgN8mwsg0:1RSHi_Ea6eU:gIN9vFwOqvQ" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://aslamkhan.net/software-development/great-quotes-for-domain-driven-design/feed/</wfw:commentRss>
		<feedburner:origLink>http://aslamkhan.net/software-development/great-quotes-for-domain-driven-design/</feedburner:origLink></item>
		<item>
		<title>My Event Horizon</title>
		<link>http://feedproxy.google.com/~r/f3yourmind/~3/by9WtBCGTxQ/</link>
		<comments>http://aslamkhan.net/events/my-event-horizon/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 21:57:51 +0000</pubDate>
		<dc:creator>Aslam</dc:creator>
		
		<category><![CDATA[Conferences, Speaking Gigs, etc.]]></category>

		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Agile]]></category>

		<category><![CDATA[AOP]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[DDD]]></category>

		<category><![CDATA[OOPSLA]]></category>

		<category><![CDATA[oredev]]></category>

		<category><![CDATA[SA Developers]]></category>

		<category><![CDATA[SPIN]]></category>

		<guid isPermaLink="false">http://aslamkhan.net/?p=198</guid>
		<description><![CDATA[It&#8217;s already halfway through the year, so let&#8217;s see what events are is in store for the rest of the year.
June: Next week is SPIN week.  Join us after the June 16 public holiday.  Same time, same place.  Last month we had 40 people attend and we just about ran out of chairs.  Lots of [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s already halfway through the year, so let&#8217;s see what events are is in store for the rest of the year.</p>
<p><strong>June:</strong> Next week is <a href="http://www.spin.org.za">SPIN</a> week.  Join us after the June 16 public holiday.  Same time, same place.  Last month we had 40 people attend and we just about ran out of chairs.  Lots of new faces.  Please come along.  The talks are normally good and the conversations are great.</p>
<p><strong>July:</strong> Really need to get my act together and get to the next<a href="http://sadeveloper.net"> SA Developer</a>&#8217;s talk.  <a href="http://hilton.giesenow.com/">Hilton Giesenow</a> tells me it&#8217;s a great local event.  And On July 27, Lia turns 5!  Simply amazing!</p>
<p><strong>August:</strong> Hmmm, seems quiet?  I think I&#8217;m going to submit a tutorial proposal for the <a href="http://www.sbs.co.za/icse2010/">ICSE conference</a> happening in Cape Town in May 2010.</p>
<p><strong>September:</strong> Looking forward to the<a href="http://www.scrum.org.za"> Scrum User Group</a>&#8217;s conference in early September.  I may be giving a talk on the techie track.  I think it&#8217;s going to be a great event.  <a href="http://scrumisscrum.wordpress.com/">Carlo</a> and <a href="http://www.scrumsense.com/">Peter</a> tell me so.  But on September 3, Fiona turns &#8230; older <img src='http://aslamkhan.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><strong>October:</strong> My tutorial on using DDD and AOP to create clean, rich domain models has been accepted by OOPSLA.  So, October is <a href="http://www.oopsla.org/oopsla2009/">OOPSLA</a> time for me.</p>
<p><strong>November:</strong> I will miss <a href="http://www.oredev.org">Oredev</a>.  The competition to get in was so much tougher.  That just means it&#8217;s going to be better than last year.  If you&#8217;re a S.African developer, you should make a plan to get there.  It&#8217;s a great event that is very high on value for money.  But my November highlight is Khaleel turning 9 on the 22nd!  Boy, how did that happen so fast?</p>
<p><strong>December:</strong> Crazy season again.  I really hope it&#8217;s a quiet, relaxing one this year.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/f3yourmind?a=by9WtBCGTxQ:KiuhRGLTp_A:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/f3yourmind?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=by9WtBCGTxQ:KiuhRGLTp_A:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=by9WtBCGTxQ:KiuhRGLTp_A:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=by9WtBCGTxQ:KiuhRGLTp_A:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=by9WtBCGTxQ:KiuhRGLTp_A:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=by9WtBCGTxQ:KiuhRGLTp_A:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=by9WtBCGTxQ:KiuhRGLTp_A:gIN9vFwOqvQ" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://aslamkhan.net/events/my-event-horizon/feed/</wfw:commentRss>
		<feedburner:origLink>http://aslamkhan.net/events/my-event-horizon/</feedburner:origLink></item>
		<item>
		<title>If you’re not on Afrigator, you’re not on the Continent</title>
		<link>http://feedproxy.google.com/~r/f3yourmind/~3/PAUpwTJ98uw/</link>
		<comments>http://aslamkhan.net/general/if-youre-not-on-afrigator-youre-not-on-the-continent/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 09:12:25 +0000</pubDate>
		<dc:creator>Aslam</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[gator]]></category>

		<category><![CDATA[social networks]]></category>

		<category><![CDATA[ZA]]></category>

		<guid isPermaLink="false">http://aslamkhan.net/?p=191</guid>
		<description><![CDATA[Take a bow Justin Hartman and the rest of the Afrigator crew!  Great site, great feel, constantly improving. Superb.
A few weeks back I got invited to Gatorpeeps by Stii via a tweet dialog that we had.  Didn&#8217;t know much about it but dived right in.  What a great surprise.  Although I only have 10 followers [...]]]></description>
			<content:encoded><![CDATA[<p>Take a bow <a href="http://justinhartman.com/">Justin Hartman</a> and the rest of the <a href="http://www.afrigator.com">Afrigator</a> crew!  Great site, great feel, constantly improving. Superb.</p>
<p>A few weeks back I got invited to <a href="http://afrigator.com/peeps">Gatorpeeps</a> by <a href="http://stii.co.za/">Stii</a> via a tweet dialog that we had.  Didn&#8217;t know much about it but dived right in.  What a great surprise.  Although I only have 10 followers and less than 100 peeps, I found the community  humble, friendly and relaxed.  What a pleasure.</p>
<p>It reminded me of the pre-Internet days when everyone on a BBS at the slow end of a 9600Baud Hayes (in)compatible modem was just there to help each other out.  No showboating, no egos, just people interacting with people.  It felt good then.  And it feels good again.</p>
<p>So what&#8217;s wrong with twitter?  Nothing.  But these are local folk with local perspectives which makes it easier to relate to and quicker to build relationships.  Hey, I&#8217;m certainly not a big mate of any of my followers but it feels comfortable and that says a lot about what Afrigator is doing right.</p>
<p>I&#8217;ve met some remarkable people in the last few weeks.  Here&#8217;s just a few of them.</p>
<blockquote><p><a href="http://gatorpeeps.com/ashraf">@ashraf</a> runs a super cool <a href="http://www.safootballfans.co.za/">football fanzine</a>.  Why go hunting for footie gossip when I get a peep feed .</p>
<p><a href="http://gatorpeeps.com/aegjung">@aegjung</a> is an interesting combination of Afrikaner philosphy and culture and <a href="http://emiljung.co.za/">alternative views of things</a>.</p>
<p><a href="http://gatorpeeps.com/cntombela">@cntombela</a> has a another great <a href="http://www.footballfevr.com/">footie blog</a> with local flavor too.</p>
<p><a href="http://gatorpeeps.com/justinhartman">@justinhartman</a> is the open face behind Afrigator but his <a href="http://justinhartman.com/">blog</a> is a lot wider than his job</p>
<p><a href="http://gatorpeeps.com/robertbravery">@robertbravery</a> gives me a quick <a href="http://www.integralwebsolutions.co.za/Blog.aspx">daily dose</a> of web content/tech knowledge.  Short and sweet.</p>
<p><a href="http://gatorpeeps.com/stii">@stii </a>is a developer supreme at Afrigator and his <a href="http://stii.co.za/">blog</a> is a mixture of developer experiences and observations.</p></blockquote>
<p>Go on, get your blog onto Afrigator and start peeping.  You&#8217;ll be surprised how many people like you are out there.</p>
<p>Like I said &#8230; if you ain&#8217;t on the gator, you ain&#8217;t in africa.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/f3yourmind?a=PAUpwTJ98uw:yqgfx5CuhIs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/f3yourmind?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=PAUpwTJ98uw:yqgfx5CuhIs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=PAUpwTJ98uw:yqgfx5CuhIs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=PAUpwTJ98uw:yqgfx5CuhIs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=PAUpwTJ98uw:yqgfx5CuhIs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=PAUpwTJ98uw:yqgfx5CuhIs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=PAUpwTJ98uw:yqgfx5CuhIs:gIN9vFwOqvQ" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://aslamkhan.net/general/if-youre-not-on-afrigator-youre-not-on-the-continent/feed/</wfw:commentRss>
		<feedburner:origLink>http://aslamkhan.net/general/if-youre-not-on-afrigator-youre-not-on-the-continent/</feedburner:origLink></item>
		<item>
		<title>Writing Specs is Writing Code is Designing</title>
		<link>http://feedproxy.google.com/~r/f3yourmind/~3/DTrvaQB583U/</link>
		<comments>http://aslamkhan.net/software-development/writing-specs-is-writing-code-is-designing/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 11:45:35 +0000</pubDate>
		<dc:creator>Aslam</dc:creator>
		
		<category><![CDATA[Architecture and Development]]></category>

		<category><![CDATA[adapt]]></category>

		<category><![CDATA[Agile]]></category>

		<category><![CDATA[balance]]></category>

		<category><![CDATA[BDD]]></category>

		<category><![CDATA[feedback]]></category>

		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://aslamkhan.net/?p=188</guid>
		<description><![CDATA[A team that I am coaching has settled on using BDD stories and scenarios for describing their requirements and specifications.  They&#8217;ve also chosen cucumber as their acceptance testing tool.  All well and good, but they are making very slow progress and seem to be really struggling with the change in workstyle.  I think I&#8217;ve spotted [...]]]></description>
			<content:encoded><![CDATA[<p>A team that I am coaching has settled on using <a href="http://dannorth.net/whats-in-a-story">BDD</a> stories and scenarios for describing their requirements and specifications.  They&#8217;ve also chosen <a href="http://wiki.github.com/aslakhellesoy/cucumber">cucumber</a> as their acceptance testing tool.  All well and good, but they are making very slow progress and seem to be really struggling with the change in workstyle.  I think I&#8217;ve spotted the reason for this.</p>
<p>The feedback loop is missing.  They view the stories as a spec that has been handed down.  And they have not made the connection that spec writing is design work that is intended to clearly illustrates concepts in a domain.  It is a form of writing code.  But it&#8217;s just that this code is, maybe, non-executable.</p>
<p>Here&#8217;s my workflow and how I close the loop.</p>
<ul>
<li>write story and scenario</li>
<li>Sketch a design if needed - helps when pairing to be on the same page.</li>
<li>Start writing test for scenario</li>
<li>ooops &#8230; test is getting complicated? stuck?</li>
<li>maybe the domain is not understood enough? Dig deeper, improve scenario, design (as needed) and continue writing test</li>
<li>or maybe the scenario was badly written? Ignore scenario structure, continue writing test.  Refactor scenario later.  We&#8217;re in deep discovery mode here.</li>
<li>get test to pass</li>
<li>refactor code</li>
<li>refactor scenario</li>
<li>&#8230; cycle the red-green-refactor until happy.</li>
</ul>
<p>Acknowledging when you&#8217;re in discovery mode and knowing that you are allowed to refactor requirements is the trick.  Nothing is cast in concrete.  That&#8217;s why I like frequent feedback loops with tight turning circles.</p>
<p>No feedback loop, no progress.</p>
<p>BTW, I really don&#8217;t like explaining such things as flow-charts and sequences.  You got to find your own style.  It&#8217;s not a recipe or rules thing.  The above is something that is about as close to what I do but it changes when the need arises.  That&#8217;s also another key feature of being agile - adapt or die in the waterfall.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/f3yourmind?a=DTrvaQB583U:l9P-NUN8yws:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/f3yourmind?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=DTrvaQB583U:l9P-NUN8yws:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=DTrvaQB583U:l9P-NUN8yws:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=DTrvaQB583U:l9P-NUN8yws:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=DTrvaQB583U:l9P-NUN8yws:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=DTrvaQB583U:l9P-NUN8yws:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=DTrvaQB583U:l9P-NUN8yws:gIN9vFwOqvQ" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://aslamkhan.net/software-development/writing-specs-is-writing-code-is-designing/feed/</wfw:commentRss>
		<feedburner:origLink>http://aslamkhan.net/software-development/writing-specs-is-writing-code-is-designing/</feedburner:origLink></item>
		<item>
		<title>Domain Specific Reference Architectures</title>
		<link>http://feedproxy.google.com/~r/f3yourmind/~3/4XJe8d4dENA/</link>
		<comments>http://aslamkhan.net/software-development/domain-specific-reference-architectures/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 20:37:29 +0000</pubDate>
		<dc:creator>Aslam</dc:creator>
		
		<category><![CDATA[Architecture and Development]]></category>

		<category><![CDATA[architecture]]></category>

		<category><![CDATA[DDD]]></category>

		<category><![CDATA[intentions]]></category>

		<category><![CDATA[SOA]]></category>

		<category><![CDATA[Ubiquitous Language]]></category>

		<guid isPermaLink="false">http://aslamkhan.net/?p=129</guid>
		<description><![CDATA[Many big vendors have invested a lot on blue print or reference architectures.  I came across another in recent months.  I witnessed a vendor team moving from client to client implementing this reference architecture as part of their SOA solution.
What were they actually doing? They were mapping the client&#8217;s domain to the reference architecture domain [...]]]></description>
			<content:encoded><![CDATA[<p>Many big vendors have invested a lot on blue print or reference architectures.  I came across another in recent months.  I witnessed a vendor team moving from client to client implementing this reference architecture as part of their SOA solution.</p>
<p><strong>What were they actually doing?</strong> They were mapping the client&#8217;s domain to the reference architecture domain and thereby identified reference architecture services that supported the client&#8217;s needs.  This most probably works for some people.   But I feel uncomfortable with it because&#8230;</p>
<ul>
<li>It means translating from one domain to another and back again.  It&#8217;s like having one massive bounded context around the reference architecture with a gigantic set of adaptors and transformers.</li>
<li>There is a very real possibility of semantic impedance on the boundary of the two domains.</li>
<li>There is likely to be two domain vocabularies or one large polluted vocabulary with synonyms, etc.</li>
</ul>
<p>There are other reasons but these few are just old problems and habits coming back again.  Things that we accepted as dangerous and limits success in creating good software.</p>
<p><strong>So, are reference architectures bad?</strong> Yes and no.  Maybe you should consider adopting its domain vocabulary as a first step.  A reference architecture with a rich metamodel is more likely to be more valuable than one without a metamodel.</p>
<p>And the moment you start thinking at a meta level, then you&#8217;re moving into a higher level of abstraction.  In this higher level, you will have a greater opportunity to describe your intentions agnostic of the reference architecture and the vendor&#8217;s technology stack.</p>
<p>The way I see it, services are defined at a meta level.  They describe your intentions and are independent of a reference architecture.  However, if you chose a reference architecture up front, then describe your intentions in the vocabulary of the reference architecture.</p>
<p>Does this make sense?  Because I&#8217;m just hypothesising here.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/f3yourmind?a=4XJe8d4dENA:-aou7ItzUJw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/f3yourmind?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=4XJe8d4dENA:-aou7ItzUJw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=4XJe8d4dENA:-aou7ItzUJw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=4XJe8d4dENA:-aou7ItzUJw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=4XJe8d4dENA:-aou7ItzUJw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=4XJe8d4dENA:-aou7ItzUJw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=4XJe8d4dENA:-aou7ItzUJw:gIN9vFwOqvQ" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://aslamkhan.net/software-development/domain-specific-reference-architectures/feed/</wfw:commentRss>
		<feedburner:origLink>http://aslamkhan.net/software-development/domain-specific-reference-architectures/</feedburner:origLink></item>
		<item>
		<title>Wanted: Muse. No experience needed.</title>
		<link>http://feedproxy.google.com/~r/f3yourmind/~3/TZEQsf7ZIhU/</link>
		<comments>http://aslamkhan.net/software-development/wanted-muse-no-experience-needed/#comments</comments>
		<pubDate>Tue, 12 May 2009 09:03:31 +0000</pubDate>
		<dc:creator>Aslam</dc:creator>
		
		<category><![CDATA[Architecture and Development]]></category>

		<category><![CDATA[creativity]]></category>

		<category><![CDATA[learning]]></category>

		<guid isPermaLink="false">http://aslamkhan.net/?p=185</guid>
		<description><![CDATA[Artists have muses.  Muses are their creative inspiration.  The Greeks also called it a daemon - that mythical thing that gave magical creativity.  It&#8217;s actually their genius spirit that helps them when they&#8217;re stuck in a metaphorical tight corner.  Same thing, I think.  So when did we stop having geniuses and became geniuses?
I think I [...]]]></description>
			<content:encoded><![CDATA[<p>Artists have muses.  Muses are their creative inspiration.  The Greeks also called it a daemon - that mythical thing that gave magical creativity.  It&#8217;s actually their genius spirit that helps them when they&#8217;re stuck in a metaphorical tight corner.  Same thing, I think.  So when did we stop having geniuses and became geniuses?</p>
<p>I think I am actually searching for a muse.  Something that will be my creative genius.  I gave up trying to be a genius a long time ago.  Now I just want to learn from those that are better than me, whatever the context.  Maybe my muse is the sum of every engagement with the genius in each person with whom I work and live.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/f3yourmind?a=TZEQsf7ZIhU:zTvGs8aLpt8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/f3yourmind?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=TZEQsf7ZIhU:zTvGs8aLpt8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=TZEQsf7ZIhU:zTvGs8aLpt8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=TZEQsf7ZIhU:zTvGs8aLpt8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=TZEQsf7ZIhU:zTvGs8aLpt8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=TZEQsf7ZIhU:zTvGs8aLpt8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=TZEQsf7ZIhU:zTvGs8aLpt8:gIN9vFwOqvQ" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://aslamkhan.net/software-development/wanted-muse-no-experience-needed/feed/</wfw:commentRss>
		<feedburner:origLink>http://aslamkhan.net/software-development/wanted-muse-no-experience-needed/</feedburner:origLink></item>
		<item>
		<title>Searching for miracles</title>
		<link>http://feedproxy.google.com/~r/f3yourmind/~3/g5GOVjJBodM/</link>
		<comments>http://aslamkhan.net/software-development/searching-for-miracles/#comments</comments>
		<pubDate>Tue, 12 May 2009 08:58:26 +0000</pubDate>
		<dc:creator>Aslam</dc:creator>
		
		<category><![CDATA[Architecture and Development]]></category>

		<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://aslamkhan.net/?p=182</guid>
		<description><![CDATA[I never liked the words pilot nor proof of concept.   I have been through many pilot projects and proof of concept as projects or in projects.  Although the intention is well understood by everyone at the very beginning, by the time we reached the end, there almost always seems to be confusion about the purpose [...]]]></description>
			<content:encoded><![CDATA[<p>I never liked the words <em>pilot</em> nor <em>proof of concept</em>.   I have been through many pilot projects and proof of concept as projects or in projects.  Although the intention is well understood by everyone at the very beginning, by the time we reached the end, there almost always seems to be confusion about the purpose and next step.  Now I don&#8217;t even seem to know the differences and intentions anymore.  Even though everyone seems to know that they are different, they receive the same miracle software expectation.  It&#8217;s an execution confusion issue.</p>
<p>But I think the main reason for pilots and proof of concepts is to get feedback.  Spikes do the same thing too.  You know you&#8217;re seeking enlightenment when you start saying <em>&#8220;I don&#8217;t know &#8230; enough&#8230;&#8221;</em> or <em>&#8220;It depends&#8230;&#8221;</em> or <em>&#8220;What if.&#8221;</em> Whenever we work with a new domain or a tricky part of an application, we are searching for feedback, not miracles.  If you practice TDD and do exploratory testing of concepts that are not 100% clear in design and even understanding, then you know what I mean.  Perhaps we must just drop the grand classification labels and our response should be something like <em>&#8220;Well, let&#8217;s explore this tiny bit and see what happens&#8221;</em> or <em>&#8220;Why don&#8217;t we try out this idea by doing &#8230;&#8221;</em>.</p>
<p>So we do proof of concepts and pilots all the time.  It&#8217;s just that I hate searching for miracles but I like feedback which helps me change the probabilities of certain of things happening.  And I like it to be part of my workflow.  Exploration gives me feedback and increased understanding that leads to more exploration.  I hate it being a milestone on a Gantt chart and when that milestone is a common point in critical execution paths for the project, then I know, for sure, someone was actually looking for a miracle.</p>
<p>If you are somewhere on the agile adoption curve, then drop the Gantt chart.  Now you&#8217;ve just removed the shrine for miracle worship.  There are no shortcuts to enlightenment, just feedback with every step.  Success depends on how you absorb and react to that feedback.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/f3yourmind?a=g5GOVjJBodM:qMf563OwLQE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/f3yourmind?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=g5GOVjJBodM:qMf563OwLQE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=g5GOVjJBodM:qMf563OwLQE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=g5GOVjJBodM:qMf563OwLQE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=g5GOVjJBodM:qMf563OwLQE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/f3yourmind?a=g5GOVjJBodM:qMf563OwLQE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/f3yourmind?i=g5GOVjJBodM:qMf563OwLQE:gIN9vFwOqvQ" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://aslamkhan.net/software-development/searching-for-miracles/feed/</wfw:commentRss>
		<feedburner:origLink>http://aslamkhan.net/software-development/searching-for-miracles/</feedburner:origLink></item>
	</channel>
</rss>
