<?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>.zugiart &#187; software engineering</title>
	<atom:link href="http://www.zugiart.com/tag/software-engineering/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.zugiart.com</link>
	<description>Software Engineering, buddhism, and everything else in between.</description>
	<lastBuildDate>Mon, 09 Jan 2012 05:50:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Life and Death of a software system</title>
		<link>http://www.zugiart.com/2010/03/life-and-death-of-a-software-system/</link>
		<comments>http://www.zugiart.com/2010/03/life-and-death-of-a-software-system/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 12:11:45 +0000</pubDate>
		<dc:creator>zen</dc:creator>
				<category><![CDATA[geeky]]></category>
		<category><![CDATA[thoughts]]></category>
		<category><![CDATA[buddhism]]></category>
		<category><![CDATA[death]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[software engineering]]></category>

		<guid isPermaLink="false">http://www.zugiart.com/?p=1069</guid>
		<description><![CDATA[Every entity in this world will go through this cycle of living and dying - nothing shall escape it. This includes software systems.]]></description>
			<content:encoded><![CDATA[<p>Birth, Aging, Sickness, and Death.</p>
<p>Every entity in this world will go through this cycle of living and dying. Nothing shall escape it.</p>
<p>This applies to the most obvious entity of all, our own self. However this also applies to other concept in life. Take for example, a computer system.</p>
<p>A computer system is often the result of a software project. There is the moment where an idea is being formulated, a prototype is built to pitch the project, budget acquired, team formulated and grown, and finally, the project took off (birth). Over time, the system is crafted, again and again it is perfected, broken, fixed, patched, deployed. installed, broken again, fixed again, and so on (aging).</p>
<p>However, as software system changes hand from one team to another, fixes and enhancement done to it may or may not be in accordance with the original structure conceived by its creators. This will eventually result in various internal complication and inconsistencies. Sometimes it is not the software that age, but the hardware. Disks failing, cables aging, memory corruption, dead power supply, and so on. Indeed, nothing last forever! (sickness).</p>
<p>Finally, at some point, all software system will be retired. It may became obsolete, replaced by a newer system, or simply, broke down (death). On that fateful day, management, end-users, or whoever it is that work closely with the system will eventually look back and reflect upon the value it has contributed to the organization or end users. Even future systems implemented will be measured, directly or indirectly, against its older counterparts.</p>
<p>Therefore for those of you who works in the realm of computing, do keep in mind this principle. Take it to your heart that nothing in this world is permanent.</p>
<p>In doing so, when crafting and scoping a system, it is important that we ask ourself (and the client) &#8211; what is the intended lifecycle of this project or software system? how will it be supported and maintained? who will look after the system when your team is gone?</p>
<p>Remember that a software system is an entity as much as you are. How you write each of your system reflects your view and life-state in general. And verily so, you can infer the character of a programmer from a piece of code that he has written. From the various decision points he made which is visible in the way the system is structured, organized, partitioned and optimized.</p>
<p>Have that system lived a life worth living?</p>
<p>Well, have you?</p>
<p>Indeed it is true that truth emerges and lies stripped bare when one reflects upon Death. When the system has reached the end of its live, and your name written as craftsman of that system in the various source code and documentations that surrounds the system, how would you like to be perceived?</p>
<p>So if there is one credo for a programmer to follow, this would be it:</p>
<blockquote><p>Live a life worth living &#8211; Craft a system worth crafting.<br />
The two goes hand in hand.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.zugiart.com/2010/03/life-and-death-of-a-software-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On the importance of restructuring</title>
		<link>http://www.zugiart.com/2009/08/importance-of-restructuring/</link>
		<comments>http://www.zugiart.com/2009/08/importance-of-restructuring/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 12:51:54 +0000</pubDate>
		<dc:creator>zen</dc:creator>
				<category><![CDATA[thoughts]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[refactor]]></category>
		<category><![CDATA[software engineering]]></category>

		<guid isPermaLink="false">http://www.zugiart.com/2009/08/importance-of-restructuring/</guid>
		<description><![CDATA[I was restructuring my room (which took me all avo) and I realized... this is so damn similar to refactoring source code!]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just finished <em>restructuring</em> my room &#8211; took me pretty much the whole avo today. I know some of you might be questioning my choice of word here &#8211; <em>restructuring</em>, isn&#8217;t that a matter of shifting furnitures around? (in which case, rearranging should be more appropriate).</p>
<p>Well, as I was <em>restructuring</em> my room, I realized that what I am doing is very similar to refactoring of source code (in the context of computer programming). Basically, you take a step back and assess the following things:</p>
<ul>
<li>What are the tasks (<em>use cases</em>) that got executed most often</li>
<li>How does the facility (in this case my room) get used to satisfy those use cases.</li>
<li>If I were to start with a clean slate (a blank room) how best to rearrange the components, as well as the parts within each component to best satisfy the requirement?</li>
</ul>
<p>Usually when people rearrange their furniture around, they are mostly concerned with only space, looks, and feel of the room. But what I did today was more than that, of course I think about space &#8211; I think about the limited area in my room that are not used very often and re-arrange my bed, study desk, and shelf around based on that.</p>
<p>But more than thinking about the placement of things, I also think about stuff like:</p>
<ul>
<li><strong>Where should I store my recent documents, vs my old documents?<br />
Where should my old documents live?</strong><br />
I settled with putting recent document on the right end of my desk, and archived documents on the bottom shelf. I rarely access these old docs so firstly, it make sense to put them on separate pile. But the question then becomes..</li>
<li><strong>How should I archive my old docs?</strong><br />
I settled with sorting and storing them in chronological order, by projects / case. I put them on a small box each. I don&#8217;t open up old docs regularly, (else they will not be called old) but when I do want to find something older than 6 months, it usually take ages. To partition and archive it this way feels right for me. Loving the outcome so far.</li>
<li><strong>Where should I put my boiler?</strong><br />
Because I&#8217;m a serious fan of tea, I actually moved the boiler up from the kitchen into my DESK. I reckon there&#8217;s no need to go downstairs to get hot water if I can just boil them right in front of me. Again, loving this decision so far.</li>
<li><strong>Where should I put my guitars?</strong><br />
I actually noticed an area in my room that I don&#8217;t use a lot &#8211; it&#8217;s actually a walkway to the balcony. But because it&#8217;s usually very windy and cold outside, I never accessed the balcony. So I turn this area into my mini reading area and I put my guitars close to it. Instant mini zen space. I just sat down there after dinner strumming stuff out. That mini space rocks.</li>
<li>&#8230;And so on and so forth, you get the idea.</li>
</ul>
<p>I know, right? This is so geeky, LOL &#8211; But it surprises me that the thought process I went through is VERY similar to refactoring the source base for a computer program. Even the dilemma at the middle of the procedure is also very similar &#8211; while I was restructuring there was so much mess in my room (I can&#8217;t walk in a straight line!) that I doubted whether I was actually adding some real value or whether I was just in the mood of shifting things around. If you are a computer programmer that have experience in undertaking a big refactoring &#8216;surgery&#8217; &#8211; you should be familiar with what I am talking about.</p>
<p>Anyway, all in all it turns out that the restructuring was for the better. I&#8217;ve moved old books I don&#8217;t use downstairs to the big shelf where all books live, I&#8217;ve reclaimed areas in my room that I don&#8217;t use very often into my mini zen space, and my book shelves &#8211; even though it looked the same, now the areas within it are partitioned and each partition have a <em>purpose</em> that better fit my current need.</p>
<p>In short, my room now satisfy the requirement better.</p>
<p>I know, I can ready your mind &#8211; WHY THE HASSLE? IT&#8217; S JUST A BLOODY ROOM!</p>
<p>Yes, all of the stuff I&#8217;ve mentioned here are all small things &#8211; boiler placement, document archival policy, reclaiming spaces &#8211; they&#8217;re all just &#8216;insignificant&#8217; details. I mean it&#8217;s just a room right? It&#8217;s so easy to just put stuff in and be done with it&#8230;</p>
<p>But so is refactoring a computer program. Indentation, comments, function signature, separation of concern, re-assessing the role of a class, a module, a package, and so on. So is about being organised, being punctual, being disciplined, being mindful, and so on.</p>
<p>All of this are just small &#8216;insignificant&#8217; stuff. But add all of those small things up, and you will find that the cumulative sum of those things <span style="text-decoration: underline;">defines</span> your limitation. The short term reward of fixing each &#8216;insignificant&#8217; problem is usually not very noticeable &#8211; but in the long run, the reward of removing or reducing a factor that limits your ability to function more effectively, more in tune with your personal self is well worth the trouble.</p>
<p>How&#8217;s that for room restructuring philosophy? <img src='http://www.zugiart.com/main/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  <img src='http://www.zugiart.com/main/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So tonight, before you go to bed, if you feels like taking a spin at this stuff, go and stand in a corner of your target room and <em>really</em> think about what you want to use this room for. What is its purpose? And in doing so, still with your &#8216;organizer&#8217; goggles on, look again at all the components inside it. Does that stuff fit in the room? Does it feels right to have those stuffs there, positioned that way, arranged and partitioned that way? If not, and you genuinely feel that &#8211; then the question is not &#8220;why take the trouble to move it around?&#8221; &#8211; but rather &#8220;why NOT move it around?&#8221;</p>
<p>After all, isn&#8217;t this the essential way of personalising your, well, personal living space?</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=63ef76cc-ca30-8aaf-b110-1339c36d0e3a" alt="" /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.zugiart.com/2009/08/importance-of-restructuring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

