<?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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Sober Counsel</title>
	
	<link>http://www.sobercounsel.com</link>
	<description>Discussion of topics relevant to IT Management in a Corporate context.</description>
	<pubDate>Mon, 08 Jun 2009 19:26:10 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<thespringbox:skin xmlns:thespringbox="http://www.thespringbox.com/dtds/thespringbox-1.0.dtd">http://feeds.feedburner.com/sobercounsel?format=skin</thespringbox:skin><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/sobercounsel" type="application/rss+xml" /><feedburner:emailServiceId>sobercounsel</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Keynote address at Contact Centres World.</title>
		<link>http://feedproxy.google.com/~r/sobercounsel/~3/YETGmvwRB8o/</link>
		<comments>http://www.sobercounsel.com/2009/06/08/keynote-address-at-contact-centres-world/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 17:48:03 +0000</pubDate>
		<dc:creator>Malcolm Mac Donald</dc:creator>
		
		<category><![CDATA[Management]]></category>

		<guid isPermaLink="false">http://www.sobercounsel.com/?p=130</guid>
		<description><![CDATA[

I will be delivering a Keynote address at the Contact Centres World - Africa 2009 convention.
The Topic will be:
Enabling business growth and innovation in a technologically converged world
·          Technology convergence impacts on service quality
·          Developing a consolidated ICT environment through long term vendor partnerships
·          Achieving more with less resources
I&#8217;ll have some great prizes to hand [...]]]></description>
			<content:encoded><![CDATA[<div><img src="http://www.sobercounsel.com/wp-content/uploads/2009/06/moz-screenshot.jpg" alt="" /><br />
<img src="http://www.sobercounsel.com/wp-content/uploads/2009/06/moz-screenshot-1.jpg" alt="" /></p>
<div>I will be delivering a Keynote address at the Contact Centres World - Africa 2009 convention.</p>
<p>The Topic will be:<br />
Enabling business growth and innovation in a technologically converged world<br />
·          Technology convergence impacts on service quality<br />
·          Developing a consolidated ICT environment through long term vendor partnerships<br />
·          Achieving more with less resources</p></div>
<div>I&#8217;ll have some great prizes to hand out and there will be a raffle to be the next person interviewed on my Podcast show &#8220;PlanIT&#8221; hosted by ITWeb. (www.discussit.co.za)  See you there!</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.sobercounsel.com/2009/06/08/keynote-address-at-contact-centres-world/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sobercounsel.com/2009/06/08/keynote-address-at-contact-centres-world/</feedburner:origLink></item>
		<item>
		<title>Why Strategies aren’t implemented.</title>
		<link>http://feedproxy.google.com/~r/sobercounsel/~3/HFbsID2xgKE/</link>
		<comments>http://www.sobercounsel.com/2008/08/24/why-strategies-arent-implemented/#comments</comments>
		<pubDate>Sun, 24 Aug 2008 11:01:23 +0000</pubDate>
		<dc:creator>Malcolm Mac Donald</dc:creator>
		
		<category><![CDATA[Management]]></category>

		<category><![CDATA[Philosophy]]></category>

		<category><![CDATA[Architecture]]></category>

		<category><![CDATA[Buy-in]]></category>

		<category><![CDATA[Change]]></category>

		<category><![CDATA[Strategy]]></category>

		<guid isPermaLink="false">http://www.sobercounsel.com/?p=124</guid>
		<description><![CDATA[Have you ever said something that sounds really silly, then replayed it in your head and thought &#8220;Actually that&#8217;s really profound&#8221;.
I was trying to describe the strategic process to someone the other day and I ended up saying:
&#8220;If you have no desire to be somewhere else, then you must be happy with where you are.&#8221;
- [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever said something that sounds really silly, then replayed it in your head and thought &#8220;Actually that&#8217;s really profound&#8221;.</p>
<p>I was trying to describe the strategic process to someone the other day and I ended up saying:</p>
<blockquote><p>&#8220;If you have no desire to be somewhere else, then you must be happy with where you are.&#8221;<br />
- Me</p></blockquote>
<p>I immediately thought &#8220;what a stupid and obvious thing to say&#8221;  then I thought &#8220;No, that is exactly right!&#8221;</p>
<p>If people are happy where they are, and have no desire to be somewhere else, then they have absolutely no motivation to move.  They will stay where they are.</p>
<p>This in the context of strategy is why strategies are often not implemented.  The people who are supposed to implement them have no desire to be &#8220;somewhere else.&#8221;</p>
<p>One of my professors at Wits Business school, Prof. Rasoava Rijamampianina &#8220;Rija&#8221; used to say:</p>
<blockquote><p>&#8220;The only person who appreciates change is a baby with a wet nappy&#8221;<br />
- Prof. Rija</p></blockquote>
<p>This is really it.  Have we as strategists spent enough time on the consequences of NOT changing.  If the organisation believes it is OK where it is, or that the strategy is not addressing the right problems then change will not happen.  What&#8217;s more if the change is forced it will only be sustained as long as the leader who forced it is continuously maintaining it.  As soon as that leader leaves, the fascade of change will fall off.</p>
<ul>
<li>The People implementing it need to believe in it.</li>
<li>They need to understand why staying where they are will be disastrous.</li>
<li>They need to understand why it will be &#8220;so much better&#8221; where we are going</li>
<li>They need to believe in both of those.</li>
</ul>
<p>Simple.</p>
<p>This doesn&#8217;t mean the strategy is the right one, or that any of the promises it makes are true.  We have many examples from history of people fervently and whole-heartedly striving for something totally wrong.  The strategy was wrong, the outcome disastrous but the strategy WAS IMPLEMENTED.</p>
<p>The skill of the strategist is two-fold then.</p>
<ul>
<li>Find the &#8220;best&#8221; strategy for the organisation that will have desirable outcomes.</li>
<li>Convince the implementers of the need to change.</li>
</ul>
<p>Some of my stakeholders will say, &#8220;Yes, Yes, Yes!  That is exactly what we need!  We agree.  Let&#8217;s do that&#8221; and then they proceed to do nothing.</p>
<p>Intellectually they agree with the proposed strategy, but they do not believe it will be implemented, or they believe it will not address their immediate needs.  This is of course the proverbial &#8220;self-fulfilling prophecy.&#8221;</p>
<p>Watch out for this. Those people need special attention. A strategy will not be implemented if the people who have to implement it do not believe in it as evidenced by their actions.</p>
<p>I have waffled a bit, but I think the point is clear:</p>
<ul>
<li>Make sure your stakeholders believe in the proposed strategy.</li>
<li>Measure their belief by their actions, not their words.</li>
<li>If you want it to be sustainable, avoid the temptation to use &#8220;Brute Force&#8221; to get it implemented.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sobercounsel.com/2008/08/24/why-strategies-arent-implemented/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sobercounsel.com/2008/08/24/why-strategies-arent-implemented/</feedburner:origLink></item>
		<item>
		<title>Architectural Patterns:  A Pattern</title>
		<link>http://feedproxy.google.com/~r/sobercounsel/~3/g-8jAgCGvzE/</link>
		<comments>http://www.sobercounsel.com/2008/08/18/architectural-patterns-a-pattern/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 17:51:01 +0000</pubDate>
		<dc:creator>Malcolm Mac Donald</dc:creator>
		
		<category><![CDATA[Challenge]]></category>

		<category><![CDATA[Management]]></category>

		<category><![CDATA[Architecture]]></category>

		<category><![CDATA[Design]]></category>

		<category><![CDATA[Framework]]></category>

		<category><![CDATA[Patterns]]></category>

		<guid isPermaLink="false">http://www.sobercounsel.com/?p=115</guid>
		<description><![CDATA[We have often in the past struggled with the process of establishing some architectural patterns.
It is probably one of those things, that if you try to find a use for it, you will fail, but one day it will suddenly be obvious.
One of my esteemed colleagues was working on an audit of a Disaster recovery [...]]]></description>
			<content:encoded><![CDATA[<p>We have often in the past struggled with the process of establishing some architectural patterns.</p>
<p>It is probably one of those things, that if you try to find a use for it, you will fail, but one day it will suddenly be obvious.</p>
<p>One of my esteemed colleagues was working on an audit of a Disaster recovery capability for one of our business units.  During the course of his work he was mapping out the locations of all of the servers and the links, and since this was a high availability solution, when he was done he had drawn a picture representing a typical high availability solution, with links to a disaster recovery site for replication and clustered servers for redundancy and load balancing etc.</p>
<p>We decided to abstract the drawing he had made to a more generic view, listing instead of the actual server names, simply the roles they played, like &#8220;Application Server&#8221;, &#8220;Web Server&#8221; etc.  Abstracted a bit further we had a picture of what a typical high availability solution should look like in our environment.</p>
<p>It was a simple job to extrapolate from there what a &#8220;Continuous Availability&#8221; solution and what a Regular and Budget solution should look like.  So what we had now was a set of &#8220;Deployment Patterns&#8221; for solution hosting.  From Low-end to High-end requirements.  Next we gave them names and described their defining characteristics.  The &#8220;Budget&#8221; offering would have daily backups and if it failed we would order new hardware with up to 3 weeks of lead time. Each pattern inherited more characteristics as they became clear: Recovery time objectives, Recovery point objectives, Availability targets etc.</p>
<p>So now when we refer to a Bronze deployment or a Silver Deployment, everyone should immediately have in mind the same set of characteristics, and pricing level.</p>
<p>Then we publish a nice little poster describing the patterns we have discovered.  Patterns are discovered, not created.  Standards are created, but patterns usually already exist.  We know what &#8220;Should&#8221; be done in a given set of circumstances and what typically &#8220;Has been&#8221; done before.  The trick is seeing how things relate to one another. &#8220;Ahh, these are different types of hosting deployments, and they have different levels of availability requirements.&#8221;</p>
<p>Another point to note is that patterns come in sets.  We have a set of hosting patterns, a set of monitoring patterns, a set of integration patterns.  We cannot sit down with the objective of creating &#8220;Architectural Patterns&#8221; without an understanding of their objectives.</p>
<p>In <a href="http://hillside.net/patterns/Siemens/book.html"><em>Pattern-Oriented Software Architecture: A System of Patterns</em></a>, (F. Buschmann, R. Meunier, H. Rohnert, P.Sommerlad, and M. Stal, John Wiley and Sons, 1996) three types of patterns are noted:</p>
<ul>
<li>An <strong>Architectural Pattern</strong> expresses a fundamental structural     organization or schema for software systems. It provides a set of predefined subsystems,     specifies their responsibilities, and includes rules and guidelines for organizing the     relationships between them.</li>
<li>A <strong>Design Pattern</strong> provides a scheme for refining the subsystems or     components of a software system, or the relationships between them. It describes commonly     recurring structure of communicating components that solves a general design problem     within a particular context.</li>
<li>An <strong>Idiom</strong> is a low-level pattern specific to a programming language. An     idiom describes how to implement particular aspects of components or the relationships     between them using the features of the given language.</li>
</ul>
<p>From the Book above and some adaptations of other pattern concepts I have adapted this Pattern for Patterns:</p>
<ul>
<li><strong>Name</strong>: A meaningful and memorable way to refer to the pattern, typically a single word or short phrase.</li>
<li><strong>Problems to be solved: </strong>Describes the problem to be solved, with reference to the goals and objectives as appropriate.</li>
<li><strong>Pre-context: </strong>The conditions relevant to the pattern that exist before the pattern is applied.</li>
<li><strong>Principles: </strong>Adopted rules, policies and predetermined modes of action for the pattern.</li>
<li><strong>Solution</strong>: A description of how the problem is solved.</li>
<li><strong>Products</strong>: Example products which can be used to implement the pattern.</li>
<li><strong>Resulting context: </strong>The conditions that result after the pattern is applied, including resolution of competing forces.</li>
<li><strong>Resulting context owner</strong>:    The enterprise client who owns the benefits of the resulting context. Typically this would also be the owner of the requirement for this functionality.  This may be a role rather than an individual e.g. &#8220;Operations Manager&#8221;,&#8221;Integration Committee&#8221; etc.</li>
<li><strong>Examples: </strong>Sample applications of the pattern.</li>
<li><strong>Rationale: </strong>A description of why the solution is solved in a particular way – possibly describing the key trade-offs made between competing forces.  For example:
<ul>
<li>Security, robustness, reliability, fault-tolerance</li>
<li>Manageability</li>
<li>Efficiency, performance, throughout, bandwidth requirements, space utilization</li>
<li>Scalability (incremental growth on-demand)</li>
<li>Extensibility, evolvability, maintainability</li>
<li>Modularity, independence, reusability, openness, composability (plug &#8216;n play), portability</li>
<li>Completeness and correctness</li>
<li>Ease of construction</li>
<li>Ease of use</li>
<li>&#8230; etc.  <strong><em>(SEE MY PREVIOUS POST ON TRIZ&#8230;)</em></strong></li>
</ul>
</li>
<li><strong>Related patterns:</strong> Related patterns are predecessor, successor and alternative patterns, which provide similar solutions.</li>
<li><strong>Parent pattern: </strong>If this pattern is completely contained within another pattern, the name of the containing pattern.</li>
<li><strong>Sub-patterns: </strong>Patterns which provide specialised behaviour yet are completely contained within this pattern.</li>
<li><strong>Known uses: </strong>Known applications of the pattern.</li>
<li><strong>Immediate predecessor patterns: </strong> Other patterns that contributes to the immediate pre-context of this pattern, i.e. They give inputs that are critical to the functioning of this pattern.</li>
<li><strong>Immediate successor patterns: </strong>Other patterns that depends on this pattern for their pre-context, i.e. This pattern must provide inputs to these successor patterns.</li>
<li><strong>Security considerations: </strong>Security aspects that must be considered for the pattern.  Does this pattern treat sensitive data or have capabilities that should be secured.</li>
</ul>
<p>The Names of the various Patterns should be used in a &#8220;Framework&#8221; or Navigation matrix that will help a user to select the appropriate pattern for their particular use.  An Example of this is a set of Monitoring Patterns that we have created.  The Framework indicates monitoring &#8220;objectives&#8221; (SLA Management, Operations Management etc) as column headings and the &#8220;activities&#8221; (Instrumentation, visualisation, correlation etc) as row headings.  At the intersection of each pair is a pattern name.  Find the point in the matrix that best matches your specific intentions and you will have a specific pattern or set of patterns indicated for your business or technical problem.  It is really important to have this navigation structure in place to help users find their way through a potential maze of options.</p>
<p><strong>Some Resources:</strong></p>
<ul>
<li><a href="http://www.opengroup.org/architecture/togaf7-doc/arch/p4/patterns/patterns.htm" target="_blank">The Open Group</a></li>
<li><a href="http://hillside.net/patterns/" target="_blank">Patterns Home Page</a></li>
<li><a href="http://g.oswego.edu/dl/pd-FAQ/pd-FAQ.html" target="_blank">Patterns-Discussion     FAQ</a></li>
<li><a href="http://www.enteract.com/%7Ebradapp/docs/patterns-intro.html" target="_blank">Patterns     and Software: Essential Concepts and Terminology</a></li>
<li><a href="http://martinfowler.com/eaaCatalog/" target="_blank">Catalog of Patterns</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sobercounsel.com/2008/08/18/architectural-patterns-a-pattern/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sobercounsel.com/2008/08/18/architectural-patterns-a-pattern/</feedburner:origLink></item>
		<item>
		<title>The Benefits of Idempotence</title>
		<link>http://feedproxy.google.com/~r/sobercounsel/~3/-KXra_zUmBA/</link>
		<comments>http://www.sobercounsel.com/2008/08/11/the-benefits-of-idempotence/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 08:14:21 +0000</pubDate>
		<dc:creator>Malcolm Mac Donald</dc:creator>
		
		<category><![CDATA[Management]]></category>

		<guid isPermaLink="false">http://www.sobercounsel.com/?p=111</guid>
		<description><![CDATA[This is supposed to be an IT philosophy blog, but I&#8217;ll argue that Idempotence should be a coding philosophy.
Loosely, something that is Idempotent (Idem:Once, Potent:Having effect) will have an effect only the first time it is executed or will have exactly the same result every subsequent time it is executed.
Some say that dividing or multiplying [...]]]></description>
			<content:encoded><![CDATA[<p>This is supposed to be an IT philosophy blog, but I&#8217;ll argue that Idempotence should be a coding philosophy.</p>
<p>Loosely, something that is Idempotent (Idem:Once, Potent:Having effect) will have an effect only the first time it is executed or will have exactly the same result every subsequent time it is executed.</p>
<p>Some say that dividing or multiplying by 1 is an idempotent operation.  In a coding sense I disagree somewhat.  Dividing or multiplying by 1 NEVER changes the result, not even the first time.  So maybe multiplying by zero is a more appropriate example of idempotence.  It changes the result the first time it is executed, but thereafter has no further effect if executed multiple times (i.e. after the first time you are multiplying zero by zero and the result will of course remain zero)</p>
<p>In software this translates into writing code that knows when it has already been &#8220;effective&#8221; and that if it is executed a second time will have no further effect.</p>
<p>An example of this is in batch processing.  A batch program written in an object oriented way could have a stack of calls to the same process (one for each item in the batch) so the batch program simply calls the same routine once for each item in the batch.  If this routine (let&#8217;s call it the batch-item-processor) is written according to idempotent principles, then calling it twice for the same batch-item will have no harmful effect, i.e. that item will not process a second time.</p>
<p>If you have ever had to troubleshoot batch faults you will immediately recognise that this has many benefits.  As the troubleshooter, you do not have to worry about which batch entries have already been processed and which ones have not.  Once you have found the faulty batch-item and either corrected or eliminated it, you simply resubmit the whole batch.  The batch-item-processor will not allow any batch-items to be processed twice.</p>
<p>You may be tempted to code an override switch so that you can force a second-potency of the batch-item-processor for a specific transaction, however it would be more effective to reverse the effects that the &#8220;Idempotency-detector&#8221; in the batch-item-processor uses to detect whether it has been processed previously.  This would roll back to a state before that transaction processed, so the new call to this batch-item-processor would correctly process for the first time &#8220;again&#8221;.</p>
<p>When writing an idempotent batch processor it would therefore be prudent to write a reversal processor at the same time to reverse the effects of the transaction as discussed above.  In fact I would write this in a &#8220;-1&#8243;potent way :-)   So this means it will not try to reverse transactions that have not been actually performed yet.  This means if you want to do a batch reversal you can simply submit the whole batch to the reversal processor and only transactions that have actually been processed will be reversed.  It&#8217;s the same principle in reverse.</p>
<p>The key here is that you give sufficient intelligence to the batch-item-processor and reversal routine to know when it is safe for them to execute.  This is a higher principle than idempotence.  Appropriate-potence: A code-object knows when it can/should process and will not process until those conditions are met.  For example if you call a step in a process which requires that previous steps have already completed, it will simply respond that it cannot run yet because these upstream processes have not yet completed.  Depending on the process you may put it then into a polling loop checking for that state to occur.  Every subsequent call simply responds that it is waiting to run and the new instance terminates itself while the original continues to wait.</p>
<p>NOW you can start building an intelligent network of objects that together form an optimised just-in-time no-lag process in which every step performs at the moment it needs to.  As soon as a required state is reached the dependent process will begin its tasks.  This means that to initiate a process you simply call the LAST step in the process and as it checks state, all the way up the stack it will have initiated the whole process.  If you create a monitor agent for the required state for the FIRST step in the process an event can be generated that triggers this LAST step in the process, and hence the entire end-to-end process is automated.</p>
<p>Another side effect of giving each step the intelligence to know when it can run is that you manage dependencies at each node, you do not have to create a complex dependency matrix, simply worry about the dependencies of each object and let the network of objects calculate the matrix in runtime.</p>
<p>I&#8217;m sure there are many examples of this having been done before.  Leave a comment if you have tried this, or implemented a cool example of this approach - or of course if you simply want to make a comment.  Find the &#8220;Respond&#8221; link below the Article date in the Article Header.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sobercounsel.com/2008/08/11/the-benefits-of-idempotence/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sobercounsel.com/2008/08/11/the-benefits-of-idempotence/</feedburner:origLink></item>
		<item>
		<title>TRIZ, but those Russians are clever!</title>
		<link>http://feedproxy.google.com/~r/sobercounsel/~3/64I3UVTUpb0/</link>
		<comments>http://www.sobercounsel.com/2008/08/06/triz-but-those-russians-are-clever/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 11:47:10 +0000</pubDate>
		<dc:creator>Malcolm Mac Donald</dc:creator>
		
		<category><![CDATA[Announcements]]></category>

		<category><![CDATA[Personal]]></category>

		<category><![CDATA[Philosophy]]></category>

		<category><![CDATA[Review]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[Trends]]></category>

		<category><![CDATA[Engineering]]></category>

		<category><![CDATA[Solutions Design]]></category>

		<category><![CDATA[TRIZ]]></category>

		<guid isPermaLink="false">http://www.sobercounsel.com/?p=89</guid>
		<description><![CDATA[A while back I came across a concept called TRIZ.  Concepts and techniques that are used in non-English speaking countries sometimes do not get translated quickly into use in our insular English worldview.
Triz is a Russian Engineering tool that has been used for some time.  It is apparently a definitive list of design trade-offs that [...]]]></description>
			<content:encoded><![CDATA[<p>A while back I came across a concept called TRIZ.  Concepts and techniques that are used in non-English speaking countries sometimes do not get translated quickly into use in our insular English worldview.</p>
<p>Triz is a Russian Engineering tool that has been used for some time.  It is apparently a definitive list of design trade-offs that should be considered in any engineering design.  It Consists of 39 <em>Features</em> of any solution and 40 <em>Principles</em> that may be applied to address trade-offs of those <em>Features</em>.</p>
<p>see: <a title="TRIZ journal" href="http://www.triz-journal.com/">http://www.triz-journal.com/</a></p>
<p>and</p>
<p><a title="Innovation TRIZ" href="http://www.innovation-triz.com/">http://www.innovation-triz.com/</a></p>
<p>So the 39 <em>Features</em> are placed on both the X and Y axes of a matrix and when you need to optimize one of them you will find the list of principles (from the 40 possible principles) to apply, at the intersection point of the potentially conflicting <em>Features</em>.  I won&#8217;t place the matrix here as that has been done on the sites listed above.  (These 39 <em>Features</em> have yet to be translated into Software System analogs.  Has anyone done this yet, or does anyone know of a Software version of the list of <em>Features</em> anywhere?)</p>
<p>Some proponents of TRIZ found that in software system design these engineering and innovation principles can be applied by simply shifting the terminology from engineering terms to Systems Terms.  The 40 <em>Principles</em> of TRIZ for software are listed here: <a title="TRIZ for Software" href="http://www.triz-journal.com/archives/2001/09/e/index.htm">http://www.triz-journal.com/archives/2001/09/e/index.htm</a>.</p>
<p>I believe that this approach is focused too much on software engineering and is not that clear when a solution architect or systems designer needs to apply these principles i.e. some of these analogs get into coding algorithms instead of modular design.</p>
<p>I have created a slant on these 40 principles that may be more useful to a solutions architect by abstracting some of the principles slightly (others are left intact as per the TRIZforSoftware site).  (Note: this list now includes suggested changes as per <a title="CM Consulting" href="http://www.cm-consulting.ch" target="_blank">Dr Claude Meylan&#8217;s</a> comment) :</p>
<ol>
<li><strong>Segmentation</strong> – Selecting an appropriate degree of Segmentation.  Some problems require a Unique approach to segmentation.</li>
<li><strong>Interference</strong> – Will this affect other Systems or will other Systems interfere with this system</li>
<li><strong>Local Quality</strong> – Will we have to make special exceptions to our standards to improve the quality of the solution for this specific instance?</li>
<li><strong>Load Balancing / Resource Utilization</strong> – Is the design making optimal use of resources as well as appropriate use of load balancing/ parallel processing</li>
<li><strong>Consolidation</strong> – Sometimes it is appropriate to perform multiple functions in a single module or sometimes processes are so similar it would make sense to consolidate them</li>
<li><strong>Universality (mulitfunction or Personalisation)</strong> – It may be appropriate to build a module or system in a way that it can be personalized or that it can serve multiple purposes.</li>
<li><strong>Nesting (classes within classes) –</strong> Nesting of Classes can add to reuse</li>
<li><strong>Multi-Context (reuse within multiple contexts) </strong> - sometimes a system or module built for another purpose is actually reusable within a different context altogether</li>
<li><strong>Pre-Processing </strong></li>
<li><strong>Just in Time action without lag</strong> – is every module aware of when it can start processing to avoid slack or unnecessary load.</li>
<li><strong>Pre-compensation</strong> for reliability problems – what periodic procedures can ensure a greater degree of reliability or stability.</li>
<li><strong>Equipotentiality</strong> – Various modules within a system must be equally scaled</li>
<li><strong>Ability to Rollback</strong> – The system must be able to rollback transactions that cannot be fully processed.</li>
<li><strong>Abstract / complex Data structures</strong> – Does the system really require the flexibility of Abstract data-structures or will straightforward design suffice.  Is it futureproof without these?  Will it be replaced anyway?</li>
<li><strong>Optimal Operating Conditions</strong> -</li>
<li><strong>What if the system fails half-way or does too much</strong> – Will it be possible to interrogate the system / data-artefacts and determine what happened / how to fix it – or is the system intelligent enough to roll back/forward to a valid state.</li>
<li><strong>Affecting other Systems, Data or layers</strong></li>
<li><strong>Rate of Operation</strong> – How fast does the system need to operate?  What is the potential future requirement.</li>
<li><strong>Scheduling</strong> – When will the system need to run?  Is Self-Scheduling part of the design?</li>
<li><strong>Idle Time</strong> – optimal load – Is the system Idle for stretches of time and then overloaded for others?</li>
<li><strong>Burst mode / peak load</strong> – how will the system cope with peaks in load?</li>
<li><strong>Convert harm into benefi</strong>t  - Is there some inherent problem in the process that we can use to our benefit or at least be alerted of should the event occur.</li>
<li><strong>Feedback</strong> – How much Feedback does the system need to give? Too much will slow it down, too little will leave operators wondering if it is functioning properly.</li>
<li><strong>Intermediary Layers</strong> : middleware – Required?  What about SOA?</li>
<li><strong>Self-servicing</strong> (built in updating / alerting) – Does the system automatically raise alerts or check for a newer version of itself or at least submit traps to a monitoring system.</li>
<li><strong>Copying</strong> - how easy to deploy elsewhere?</li>
<li><strong>Disposal</strong> – will it be easy to replace or dispose of? Is the data migrateable and is the level of loose-coupling appropriate so that other systems feeding off it can be converted to talk to the replacement system easily.</li>
<li><strong>Alternatives</strong> to this process (What if we did the whole process another way?)</li>
<li><strong>DMA or Meta-Data structures</strong> – Are there parameters in the system that will restrict us going forward that we could address by a dynamic design.</li>
<li><strong>Wrapper Objects</strong> – Are there existing objects we could wrap to use in the project, or will the new ones be more widely usable with some for of wrapper.</li>
<li><strong>Required to be less than optimal</strong> – e.g. chess: beginner levels.  See Equipotentiality – a system feeding another system may need to operate less-than-optimally.</li>
<li><strong>User Interface appearance &amp; usability</strong></li>
<li><strong>Homogeneity</strong> – Container Objects – Is it all implemented “The way we do it”</li>
<li><strong>Code self-healing / intelligence &amp; Garbage Collection</strong> – Are appropriate clean-up processes designed-in?</li>
<li><strong>Transformation properties</strong> - Multi-role objects – Some objects may be reusable</li>
<li><strong>Phase transition</strong> – unexpected behaviour</li>
<li><strong>Storage or Memory utilisation</strong> during operational cycles</li>
<li><strong>Encryption</strong> – required?  Appropriate level.</li>
<li><strong>Not affecting the live environment</strong> during testing - Test Harness</li>
<li> <strong>Use mulitple methods</strong> to attack the bigger problem</li>
</ol>
<p>(adapted from TRIZ for Software: 40 engineering principles.)</p>
<p>This may be a useful checklist for a solution architect to check their design and optimise the proposed solution.</p>
<p>I&#8217;m still working on translating the 39 Features.</p>
<p>Good luck.  Have fun.  Any comments welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sobercounsel.com/2008/08/06/triz-but-those-russians-are-clever/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sobercounsel.com/2008/08/06/triz-but-those-russians-are-clever/</feedburner:origLink></item>
		<item>
		<title>Architecting for performance: What is performance?</title>
		<link>http://feedproxy.google.com/~r/sobercounsel/~3/XF_OHEHdUnc/</link>
		<comments>http://www.sobercounsel.com/2008/07/23/architecting-for-performance-what-is-performance/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 07:45:43 +0000</pubDate>
		<dc:creator>Malcolm Mac Donald</dc:creator>
		
		<category><![CDATA[ITSM]]></category>

		<category><![CDATA[Management]]></category>

		<category><![CDATA[Philosophy]]></category>

		<category><![CDATA[Improvement]]></category>

		<category><![CDATA[Monitoring]]></category>

		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://www.sobercounsel.com/?p=79</guid>
		<description><![CDATA[Have a look at this video clip before we get into the concept of understanding performance.
Video clip:


Fiat Bravo vs. Ferrari 550 Maranello vs. Ferrari F1
The three cars in this video are clearly very different.  For a formula one car the objective is easy to define. &#8220;Get around the track as fast as possible while [...]]]></description>
			<content:encoded><![CDATA[<p>Have a look at this video clip before we get into the concept of understanding performance.</p>
<p>Video clip:</p>
<blockquote><div class="youtube-video"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="transparent" /><param name="src" value="http://www.youtube.com/v/F-wV134VwnQ" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://www.youtube.com/v/F-wV134VwnQ" wmode="transparent"></embed></object></div>
</blockquote>
<p>Fiat Bravo vs. Ferrari 550 Maranello vs. Ferrari F1</p>
<p>The three cars in this video are clearly very different.  For a formula one car the objective is easy to define. &#8220;Get around the track as fast as possible while meeting all FIA regulations and maintaining appropriate (two race) reliability of every component.&#8221;</p>
<p>For a Ferraro F550 it is a little more difficult to define. Probably somerhing like &#8220;Meet super-luxury standards and reliability for a road going sports car while offering super-car performance at a super-car price-point.&#8221;</p>
<p>For the fiat it is more likely &#8220;provide basic mass producable budget transportation&#8221;</p>
<p>Based on their specific goals it is obvious that we would define performance slightly differently.</p>
<p>For the F1 car it is about winning the constructors championship. For the GT car it is being recognized as the best luxury sports car. For the fiat it is about sales and market share in the budget category.</p>
<p>The point is that for three products produced by the same organisation the goals are completely different and the performance goals are consequently completely different as well.</p>
<p>The key is understanding your goals, understanding how you could measure success, and then target optimizing those metrics.</p>
<p>My view is that architecting for performance starts here. It isn&#8217;t a one- time thing either. This is why monitoring is key.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sobercounsel.com/2008/07/23/architecting-for-performance-what-is-performance/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sobercounsel.com/2008/07/23/architecting-for-performance-what-is-performance/</feedburner:origLink></item>
		<item>
		<title>Enterprise IT Architecture Conference</title>
		<link>http://feedproxy.google.com/~r/sobercounsel/~3/SjoaZzGmpuE/</link>
		<comments>http://www.sobercounsel.com/2008/07/18/enterprise-it-architecture-conference/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 12:36:12 +0000</pubDate>
		<dc:creator>Malcolm Mac Donald</dc:creator>
		
		<category><![CDATA[Management]]></category>

		<category><![CDATA[f1]]></category>

		<category><![CDATA[IT Asset Management]]></category>

		<category><![CDATA[Monitoring]]></category>

		<category><![CDATA[performance]]></category>

		<category><![CDATA[Systems Management]]></category>

		<guid isPermaLink="false">http://www.sobercounsel.com/?p=73</guid>
		<description><![CDATA[
I will be speaking at an Enterprise IT Architecture Conference on the 28th and 29th of July 2008.
Attached are my Presentation Notes that I will talk to on the topic of Architecting for Performance and IT Asset Management
Asset-management-practices
Performance
The videos used in the Performance Presentation are:
Fiat vs Ferrari F550 vs Ferrari F1
F1 Safety Focus - Telemetry
Alonso [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sobercounsel.com/wp-content/uploads/2008/07/istock_000002157303small.jpg"><img class="size-thumbnail wp-image-76 alignleft" title="istock_000002157303small" src="http://www.sobercounsel.com/wp-content/uploads/2008/07/istock_000002157303small-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>I will be speaking at an Enterprise IT Architecture Conference on the 28th and 29th of July 2008.</p>
<p>Attached are my Presentation Notes that I will talk to on the topic of Architecting for Performance and IT Asset Management</p>
<p><a href="http://www.sobercounsel.com/wp-content/uploads/2008/07/asset-management-practices.pdf">Asset-management-practices</a></p>
<p><a href="http://www.sobercounsel.com/wp-content/uploads/2008/07/performance.pdf">Performance</a></p>
<p>The videos used in the Performance Presentation are:</p>
<p><a href="http://www.youtube.com/watch?v=F-wV134VwnQ&amp;feature=related" target="_blank">Fiat vs Ferrari F550 vs Ferrari F1</a></p>
<p><a title="F1 Safety Focus - Telemetry" href="http://video.google.com/videoplay?docid=-1682912035848682861&amp;hl=en" target="_blank">F1 Safety Focus - Telemetry</a></p>
<p><a href="http://www.youtube.com/watch?v=01Cm9TLqHVc&amp;eurl=http://www.downloadyoutubevideos.com/watch.php?theyturl=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D01Cm9TLqHVc" target="_blank">Alonso in McLaren vs 3 Mercedes</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sobercounsel.com/2008/07/18/enterprise-it-architecture-conference/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sobercounsel.com/2008/07/18/enterprise-it-architecture-conference/</feedburner:origLink></item>
		<item>
		<title>Are IT people no longer fueled by Coffee?</title>
		<link>http://feedproxy.google.com/~r/sobercounsel/~3/ZcQL1B9m2sI/</link>
		<comments>http://www.sobercounsel.com/2008/06/26/are-it-people-no-longer-fueled-by-coffee/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 10:51:30 +0000</pubDate>
		<dc:creator>Malcolm Mac Donald</dc:creator>
		
		<category><![CDATA[Challenge]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.sobercounsel.com/?p=72</guid>
		<description><![CDATA[At IBM&#8217;s headquarters, a contribution to cost saving is to shut down the catering services in all but one building from Friday mornings.
This means that someone wanting a cup of coffee would have to walk 10 minutes to the central building in order to get a cup of coffee.
So a 20m break for each cup [...]]]></description>
			<content:encoded><![CDATA[<p>At IBM&#8217;s headquarters, a contribution to cost saving is to shut down the catering services in all but one building from Friday mornings.</p>
<p>This means that someone wanting a cup of coffee would have to walk 10 minutes to the central building in order to get a cup of coffee.</p>
<p>So a 20m break for each cup of coffee.  Now a few techies I know have up to 8 cups of coffee in a day.  Some software developers seem to be entirely fueled by coffee.  How will this end?  Are developers no longer being fueled by coffee?  Or is this just a mistake?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sobercounsel.com/2008/06/26/are-it-people-no-longer-fueled-by-coffee/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sobercounsel.com/2008/06/26/are-it-people-no-longer-fueled-by-coffee/</feedburner:origLink></item>
		<item>
		<title>Corporate Social Software - an opinion on ClearSpace</title>
		<link>http://feedproxy.google.com/~r/sobercounsel/~3/h3IcZ3XrRy8/</link>
		<comments>http://www.sobercounsel.com/2008/05/13/corporate-social-software-an-opinion-on-clearspace-by-jive-software/#comments</comments>
		<pubDate>Tue, 13 May 2008 22:05:39 +0000</pubDate>
		<dc:creator>Malcolm Mac Donald</dc:creator>
		
		<category><![CDATA[Review]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[ClearSpace]]></category>

		<category><![CDATA[Collaboration]]></category>

		<category><![CDATA[Community]]></category>

		<category><![CDATA[Corporate]]></category>

		<category><![CDATA[Jive Software]]></category>

		<category><![CDATA[Social Software]]></category>

		<guid isPermaLink="false">http://www.sobercounsel.com/?p=68</guid>
		<description><![CDATA[This is the first Corporate-community-based collaboration software that I have tried, and I am truly impressed.  ]]></description>
			<content:encoded><![CDATA[<p>A lot has been written about how one might make use of WEB 2.0 and social software in a corporate.  It seems that some large consulting firms and IT companies have been trying this out for a while.</p>
<p>IBM have had their &#8220;Sametime&#8221; product for a while, and also Lotus &#8220;Connections&#8221; which is a social-networking and collaboration suite.</p>
<p>There are a few others aimed specifically at corporates, where one can purchase the software and host it internally and I intend to try a few of these (Including Lotus Connections) over the next few weeks.</p>
<p><a title="ClearSpace" href="http://www.jivesoftware.com/products/clearspace" target="_blank">ClearSpace</a> is not very well known in South Africa and in fact I had never heard of <a title="Jive Software" href="http://www.jivesoftware.com/company" target="_blank">Jive Software</a> until I found their site a few weeks ago. &nbsp;They are based in Portland, Oregon, and boast over 2000 customers and a coverage of 15% of the Fortune 500 Companies.</p>
<p>The ClearSpace 2.0 and ClearSpace Community Products are written in Java and require Java 6.</p>
<p>A while back I mentioned some of the potential I saw in <a title="Facebook" href="http://www.facebook.com" target="_blank">Facebook</a> for the Corporate. &nbsp;I wasn&#8217;t saying open Facebook to corporates to use, nor that an exact replica of Facebook would be ideal in a large corporate. &nbsp;What I was saying was that some of the social concepts that work for Facebook, would be very powerful when applied to corporate problems.</p>
<p>For example, I work on a number of projects at any given time, I have several documents in draft and pending review, I consult on various topics and sit on a number of governance and IT committees. &nbsp;Keeping track of activities and actions across all of those can be an onerous administrative task and requires discipline on my part. &nbsp;As a &#8220;creative&#8221; thinker, administration and discipline are not my strong points. &nbsp;If projects and forums and communities-of-practice had things like facebook groups where all their documents and discussions and actions were tracked, I could simply login to MY personal page and instantly see the latest activities across all of the areas I am involved with. &nbsp;That would be freedom. &nbsp;I would also no longer have any excuse to say &#8220;I didn&#8217;t know&#8221; about some decision or event or outstanding action. &nbsp;</p>
<p>Enter ClearSpace. &nbsp;This is exactly what I described above. &nbsp;The concept around which ClearSpace revovles is the &#8220;community&#8221;, not a document or post. &nbsp;For example a document sharing site revolves around &#8220;documents&#8221;. &nbsp;A Wiki revolves around the &#8220;pages&#8221; or &#8220;entries&#8221;. &nbsp;A Blog revolves around the &#8220;posts&#8221;. &nbsp;ClearSpace revolves around the community. Communities may exist because of Strategies, Projects, Topics of interest, anything that warrants creating a new area of focus. &nbsp;One can even create hierarchies of communities and the Parent Levels can aggregate the updates and feeds of their children. &nbsp;Within these communities individuals can post Blog entries, write documents, poll other users for opinions, ask questions, create discussion forums and many more. &nbsp; Almost all of these allow others to respond or comment. &nbsp;The major contributions can all be scored.</p>
<p>In addition to community blogs, individuals may also have blogs. &nbsp;individuals are attributed with the scores for their contributions. &nbsp;Individuals become &#8220;experts&#8221; on the topics they contribute on most, and are considered better experts when the ratings of their contributions are higher. &nbsp;</p>
<p>Everything in the system is based on a widget concept, so if you need a new content-type for a particular community, write the widget for it, and snap it into the framework.</p>
<p>This is the first Corporate-community-based collaboration software that I have tried, and I am truly impressed. &nbsp;</p>
<p>If you need to get people in your organisation to work together and you need a software solution to enable that, then ClearSpace is definitely one to consider.</p>
<p><strong>Ease of Use:&nbsp;9/10</strong><br />
Super easy, and a really great looking interface.&nbsp;</p>
<p><strong>Installation / Setup: 9/10</strong><br />
I used the embedded database to test with, so little setup was required.</p>
<p><strong>Admin Pages:7/10</strong><br />
Lots of menus and submenus, and I couldn&#8217;t always find the setting I wanted without browsing through a number of the admin pages.</p>
<p><strong>Engagement: 9/10</strong><br />
This pulled me in. &nbsp;I loved using it, not least of all because of how good it looks and how intuitive the user interface is.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sobercounsel.com/2008/05/13/corporate-social-software-an-opinion-on-clearspace-by-jive-software/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sobercounsel.com/2008/05/13/corporate-social-software-an-opinion-on-clearspace-by-jive-software/</feedburner:origLink></item>
		<item>
		<title>How Odd</title>
		<link>http://feedproxy.google.com/~r/sobercounsel/~3/YVskObQFIcc/</link>
		<comments>http://www.sobercounsel.com/2008/01/03/how-odd/#comments</comments>
		<pubDate>Thu, 03 Jan 2008 16:10:44 +0000</pubDate>
		<dc:creator>Malcolm Mac Donald</dc:creator>
		
		<category><![CDATA[Management]]></category>

		<category><![CDATA[customer service]]></category>

		<guid isPermaLink="false">http://www.sobercounsel.com/?p=65</guid>
		<description><![CDATA[Allow me a small rant if you would.
I tried to upgrade my data contract with my cellular service provider today. Ughhhzzz. I use a month-to-month service because I want to be able to switch providers should there be a price restructuring in South Africa. The bandwidth market is grossly overpriced here and we have seen [...]]]></description>
			<content:encoded><![CDATA[<p>Allow me a small rant if you would.<br />
I tried to upgrade my data contract with my cellular service provider today. Ughhhzzz. I use a month-to-month service because I want to be able to switch providers should there be a price restructuring in South Africa. The bandwidth market is grossly overpriced here and we have seen several downward price adjustments in the last few years as a result of international competition.</p>
<p>Now all the service providers have month-to-month voice offerings, but vodacom does not have a monthly data product and Virgin does not have 3G, so for data I am with MTN. This month, I needed more than my 2gig bundle and wanted to add another 2gig. Guess what? It cannot be done. How insane is that? Here is a good customer who has exceeded his usage of your product and wants to buy more and you say sorry we cannot sell you any more unless you are prepared to pay 5 times more for the additional quantity. Wow! You would think selling a larger quantity to an existing customer would be something a company would like to do. Not so MTN. Clearly their pricing structure encorages people to buy LESS of their product. This must be some innovation in marketing that we did not cover at business school.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sobercounsel.com/2008/01/03/how-odd/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sobercounsel.com/2008/01/03/how-odd/</feedburner:origLink></item>
		<item>
		<title>MAC OS X Leopard Install</title>
		<link>http://feedproxy.google.com/~r/sobercounsel/~3/JRRAf1euuts/</link>
		<comments>http://www.sobercounsel.com/2007/10/26/mac-os-x-leopard-install/#comments</comments>
		<pubDate>Fri, 26 Oct 2007 17:12:02 +0000</pubDate>
		<dc:creator>Malcolm Mac Donald</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<category><![CDATA[Review]]></category>

		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.sobercounsel.com/?p=46</guid>
		<description><![CDATA[Wow!  Just got my copy of Leopard.  Unfortunately no family pack&#8217;s available, so I&#8217;ll install on one Mac, sell this copy to a friend with only one Mac (shame) once the family pack arrives and proceed appropriately.The new packaging is quite cool.
So here&#8217;s the install process: Note in slide 3 that the install [...]]]></description>
			<content:encoded><![CDATA[<p>Wow!  Just got my copy of Leopard.  Unfortunately no family pack&#8217;s available, so I&#8217;ll install on one Mac, sell this copy to a friend with only one Mac (shame) once the family pack arrives and proceed appropriately.The new packaging is quite cool.<a title="opened 2" href="http://www.sobercounsel.com/wp-content/uploads/2007/10/pa260042.jpg"><img src="http://www.sobercounsel.com/wp-content/uploads/2007/10/pa260042.thumbnail.jpg" alt="opened 2" /></a><a href="http://www.sobercounsel.com/wp-content/uploads/2007/10/pa260044.jpg"><img src="http://www.sobercounsel.com/wp-content/uploads/2007/10/pa260044.thumbnail.jpg" alt="all the bits" /></a></p>
<p>So here&#8217;s the install process:<img src="http://www.sobercounsel.com/wp-content/uploads/2007/10/pa260024.thumbnail.jpg" alt="pa260024.jpg" /><img src="http://www.sobercounsel.com/wp-content/uploads/2007/10/pa260025.thumbnail.jpg" alt="pa260025.jpg" /><img src="http://www.sobercounsel.com/wp-content/uploads/2007/10/pa260026.thumbnail.jpg" alt="pa260026.jpg" /><img src="http://www.sobercounsel.com/wp-content/uploads/2007/10/pa260027.thumbnail.jpg" alt="pa260027.jpg" /><img src="http://www.sobercounsel.com/wp-content/uploads/2007/10/pa260028.thumbnail.jpg" alt="pa260028.jpg" /><img src="http://www.sobercounsel.com/wp-content/uploads/2007/10/pa260029.thumbnail.jpg" alt="pa260029.jpg" /><img src="http://www.sobercounsel.com/wp-content/uploads/2007/10/pa260030.thumbnail.jpg" alt="pa260030.jpg" /> Note in slide 3 that the install did not detect the native resolution of my monitor (Samsung 32&#8243; LCD panel)  and I had to clear the message with the monitor&#8217;s remote control.Otherwise absolutely seemless install so far.</p>
<p>Now the actual file copy part:<br />
<a href="http://www.sobercounsel.com/wp-content/uploads/2007/10/pa260001.jpg"><img src="http://www.sobercounsel.com/wp-content/uploads/2007/10/pa260001.thumbnail.jpg" alt="pa260001.jpg" /></a><br />
<img src="http://www.sobercounsel.com/wp-content/uploads/2007/10/pa260002.thumbnail.jpg" alt="pa260002.jpg" /><br />
<img src="http://www.sobercounsel.com/wp-content/uploads/2007/10/pa260003.thumbnail.jpg" alt="pa260003.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sobercounsel.com/2007/10/26/mac-os-x-leopard-install/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sobercounsel.com/2007/10/26/mac-os-x-leopard-install/</feedburner:origLink></item>
		<item>
		<title>Something about Minutes</title>
		<link>http://feedproxy.google.com/~r/sobercounsel/~3/PLVhLXbaSac/</link>
		<comments>http://www.sobercounsel.com/2007/09/05/something-about-minutes/#comments</comments>
		<pubDate>Wed, 05 Sep 2007 10:12:32 +0000</pubDate>
		<dc:creator>Malcolm Mac Donald</dc:creator>
		
		<category><![CDATA[Management]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[Trends]]></category>

		<category><![CDATA[Blog Technology]]></category>

		<category><![CDATA[Blogging]]></category>

		<category><![CDATA[Governance]]></category>

		<category><![CDATA[Meeting Minutes]]></category>

		<category><![CDATA[RSS]]></category>

		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://www.sobercounsel.com/?p=44</guid>
		<description><![CDATA[Minutes of meetings have been around for a long time.  Before email, they were circulated on paper to the attendees of the meeting.  Nowdays they are circulated in a similar way, but the technology has changed - they are sent by email.
This has dealt with the following issues:

Paper consumption has been reduced
They can [...]]]></description>
			<content:encoded><![CDATA[<p>Minutes of meetings have been around for a long time.  Before email, they were circulated on paper to the attendees of the meeting.  Nowdays they are circulated in a similar way, but the technology has changed - they are sent by email.</p>
<p>This has dealt with the following issues:</p>
<ul>
<li>Paper consumption has been reduced</li>
<li>They can be easily forwarded to additional people</li>
</ul>
<p>It has left the following problems though:</p>
<ul>
<li>minutes clog up email inboxes</li>
<li>They remain difficult to find after a while</li>
<li>they can only be seen and searched by the recipients of the minutes</li>
</ul>
<p><strong>Enter Web 2.0</strong></p>
<p>If we use an intranet/extranet based blogging solution as a method of publishing minutes, then we can solve several more problems:</p>
<ul>
<li>Any person with access can search the minutes for mention of specific topics</li>
<li>Tags categories can be applied and searched.</li>
<li>Email box clutter reduced</li>
<li>there is always a place I can go to refer to old minutes</li>
<li>If I use an RSS-Reader I can carry historical, searchable minutes with me.</li>
<li>It is easy to comment on minutes and distribute changes.</li>
<li>Many blog solutions provide a subscribe-by-email module for those users who cannot adapt.</li>
</ul>
<p>There are however certain issues:</p>
<ul>
<li>Security requirements of certain minutes will mean they have to be handled differently</li>
<li>Version control of changes to Blog  content is not very mature, or even desirable.</li>
<li>Users will need to learn to use RSS-Readers.</li>
</ul>
<p>For the most part, this will be a great solution to make it much easier to share and distribute minutes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sobercounsel.com/2007/09/05/something-about-minutes/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sobercounsel.com/2007/09/05/something-about-minutes/</feedburner:origLink></item>
		<item>
		<title>The formula for Systems Monitoring</title>
		<link>http://feedproxy.google.com/~r/sobercounsel/~3/YTmST_F902I/</link>
		<comments>http://www.sobercounsel.com/2007/07/14/the-formula-for-systems-monitoring/#comments</comments>
		<pubDate>Sat, 14 Jul 2007 14:57:44 +0000</pubDate>
		<dc:creator>Malcolm Mac Donald</dc:creator>
		
		<category><![CDATA[ITSM]]></category>

		<category><![CDATA[Management]]></category>

		<category><![CDATA[ESM]]></category>

		<category><![CDATA[Monitoring]]></category>

		<category><![CDATA[Systems Management]]></category>

		<guid isPermaLink="false">http://www.sobercounsel.com/?p=42</guid>
		<description><![CDATA[In Formula 1 racing, monitoring and management are designed in from the beginning.  All of the teams know they cannot be competitive without it and they are certain that they would not be competitive if they ignored the information provided by their monitoring systems.
In business we tend to leave the monitoring of systems as [...]]]></description>
			<content:encoded><![CDATA[<p>In Formula 1 racing, monitoring and management are designed in from the beginning.  All of the teams know they cannot be competitive without it and they are certain that they would not be competitive if they ignored the information provided by their monitoring systems.</p>
<p>In business we tend to leave the monitoring of systems as an afterthought, as a bolt-on at the end of a project, that we will do if we have some spare time.  Very few business systems are designed with monitoring in mind, from the very beginning.</p>
<p>The operations benefit and business MIS benefit of having excellent monitoring only becomes apparent, once you have experienced it.</p>
<ul>
<li>The value of having all your business systems reporting client activities into your CRM system is only evident when you have an opportunity to impress an important client on your call-centre.</li>
<li>The value of realtime transaction load monitoring is only evident when Christmastime loads start to hit your online transaction systems and you can see where your systems are starting to struggle.</li>
<li>The value of detailed audit-logging is only evident when fraud has been committed using your online systems and you can report all the pertinent details to the police in minutes.</li>
</ul>
<p>But it is costly to implement monitoring, because all of your code has to be modified and metrics thought through and added and the entire system tested and retested.  A monitoring system can be added anytime, but the instrumentation that feeds the monitor has to be designed into your system.  And it is significantly more costly to add instrumentation to a system after it is built than to have designed it in from the beginning.</p>
<p>Imagine again in Formula 1, if the team needed to add throttle position sensors to the car <strong>after</strong> it had been completely constructed.  There probably wouldn&#8217;t be space to attach the sensors and no conduit for the wires, or sufficient processing power to record all the events or adequate bandwidth to transmit all the messages back to the pit.  It will be a lot more costly to add all the necessary requirements after the car is built, than to have designed them in from the beginning.  Just take one example - not enough space for the sensor.  What do we do now?</p>
<ul>
<li>Change the design of the throttle assembly to make room?</li>
<li>Buy the smallest sensor available and shave something to make room for it?</li>
<li>redistribute the surrounding components so that there is room for the sensor?</li>
<li>make the compartment larger and retest the aerodynamics in case they have to change as a result?</li>
</ul>
<p>Wow!  It would have been much cheaper to have designed it in from the beginning.</p>
<p>Ask yourself at the requirements stage of your next system:</p>
<ul>
<li>What do I need to measure to ensure that I have the right MIS once this thing is up and running?</li>
<li>What do I need to manage in realtime when this system is running at its peak utilization.</li>
<li>What information might I need to investigate failures or misuse of the system?</li>
</ul>
<p>Don&#8217;t build it without a conscious knowledge of what it will cost to do now, versus what it will cost to add later.</p>
<p>Here is a copy of the Presentation used at the SPIN forum on 23rd August 2007:</p>
<p><a title="F1 MITTUMAL Presentation" href="http://www.sobercounsel.com/wp-content/uploads/2007/08/innovation-mittumal-pres.ppt">F1 MITTUMAL Presentation</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sobercounsel.com/2007/07/14/the-formula-for-systems-monitoring/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sobercounsel.com/2007/07/14/the-formula-for-systems-monitoring/</feedburner:origLink></item>
		<item>
		<title>Dear IT, Projects are your Children</title>
		<link>http://feedproxy.google.com/~r/sobercounsel/~3/W4RXPXhUvXk/</link>
		<comments>http://www.sobercounsel.com/2007/05/29/dear-it-projects-are-your-children/#comments</comments>
		<pubDate>Tue, 29 May 2007 13:24:24 +0000</pubDate>
		<dc:creator>Malcolm Mac Donald</dc:creator>
		
		<category><![CDATA[Challenge]]></category>

		<category><![CDATA[Management]]></category>

		<category><![CDATA[Philosophy]]></category>

		<category><![CDATA[IT Relationship]]></category>

		<category><![CDATA[Lifecycle Management]]></category>

		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.sobercounsel.com/?p=38</guid>
		<description><![CDATA[We love our Children and we want them to grow up right, with good manners and appropriate attitudes towards the difficulties life will throw at them.
When they are young we make rules that they don&#8217;t necessarily understand but have to obey.  It is best if they obey because they &#8220;want to&#8221; or because they [...]]]></description>
			<content:encoded><![CDATA[<p>We love our Children and we want them to grow up right, with good manners and appropriate attitudes towards the difficulties life will throw at them.</p>
<p>When they are young we make rules that they don&#8217;t necessarily understand but have to obey.  It is best if they obey because they &#8220;want to&#8221; or because they love us.  They could also obey because of the consequences of diobedience, but this is less optimal.</p>
<p>As they grow up we hope that they will realise that these behaviours  are important and will be best for them in the end.</p>
<p>Projects are the same.  Testing is important.  Good design is important.  The long term view is important.  We can enforce adherence to these principles through consequences, but the very best reason for adherence is because the projects understand that it is best for them in the long-run.</p>
<p>So here&#8217;s the motive check:</p>
<p><strong>Do you love your Parents?</strong></p>
<ul>
<li>Projects, Are you behaving in the best interests of IT?</li>
<li>Are you looking out for the good of IT?</li>
<li>Do you wish good things and success for IT?</li>
<li>Projects, do you love IT?</li>
</ul>
<p><strong>Do you love your children?</strong></p>
<ul>
<li>IT, are you encouraging projects to behave right?</li>
<li>Are your motives for doing this out of concern for the long-term success and good of that project?</li>
<li>Remember these projects will always be your children, you can&#8217;t disown them</li>
<li>IT, do you love your Projects?</li>
</ul>
<p>Some children grow up being delinquent, but for the most part end up being good citizens who love their parents.</p>
<p>The motive is important.  It is evident to children and they grow up to become different sorts of people, depending on whether they are loved or not.</p>
<p><em>Projects, are you the sort of children who end up being good citizens who look after their parents in their old age?</em></p>
<p><em>IT, are you the sort of parents who genuinely care for the long-term good of your children?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sobercounsel.com/2007/05/29/dear-it-projects-are-your-children/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sobercounsel.com/2007/05/29/dear-it-projects-are-your-children/</feedburner:origLink></item>
		<item>
		<title>Software Factories: Part 3 - Smart Clients</title>
		<link>http://feedproxy.google.com/~r/sobercounsel/~3/S34onxXkDWg/</link>
		<comments>http://www.sobercounsel.com/2007/03/07/software-factories-part-3-smart-clients/#comments</comments>
		<pubDate>Wed, 07 Mar 2007 07:27:07 +0000</pubDate>
		<dc:creator>Malcolm Mac Donald</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[Trends]]></category>

		<category><![CDATA[Smart Client]]></category>

		<category><![CDATA[Software Factory]]></category>

		<guid isPermaLink="false">http://www.sobercounsel.com/?p=35</guid>
		<description><![CDATA[A custom smart client can go a long way to addressing your Software factory needs and is in my opinion one of the most effective ways of reducing ongoing development effort.
A Smart-client can address many non-functional or repeating-requirements that will not have to be developed ever again.
Smart-Client Administration
An administration Interface for the smart client is [...]]]></description>
			<content:encoded><![CDATA[<p>A custom smart client can go a long way to addressing your Software factory needs and is in my opinion one of the most effective ways of reducing ongoing development effort.</p>
<p>A Smart-client can address many non-functional or repeating-requirements that will not have to be developed ever again.</p>
<p><strong>Smart-Client Administration</strong><br />
An administration Interface for the smart client is essential to take admin away from the developers and hand it over to the support desk.  For instance adding a new user or promoting a piece of functionality from Testing to Production can be done via an administrative interface.  Within this client we embed a lot of functionality that would previously have been done by developers.  I include Authorisation, creation of Data access aliases (See section on Data Access Agent), upload of new functionality into the Smart-client database, promotions between Development, Testing, Production etc, notifications to authorised users, work-flow definition and edits, creation of aliases to access functionality (menu-item naming) and any other administration whether done by developers or support-staff.  I  also recommend that the admin tools be built as functionality that snaps into the smart client itself - it just makes it easier.</p>
<p><strong>Authentication / Authorisation</strong><br />
If your organisation uses a directory service of some sort, then integrate the smart client into the directory for authentication.  If you have a generic authorisation services, then use that to authorise the client functionality as well.  if not, link the IDs of your directory user into an authorisation table accessed by the Smart client Administration interface to link users to the functionality they require.</p>
<p><strong>Work-flow</strong><br />
If your organisation uses work-flow, then definitely link generic work-flow functionality into the smart client so that it too is dealt with once.</p>
<p><strong>Data Access Agent</strong><br />
If your smart client allows plugged-in code to access data directly,  then you are missing a trick here.  This idea has very powerful side-effects.</p>
<p>Define a method by which plugged-in code asks a function provided within the smart client for some data.  The smart client should then source the appropriate data and return it to the calling plug-in.  Some side-effects here are that the developers need not know any of your production database user-names or passwords, and you can within the smart-client infrastructure redirect data requests to other destinations (for example to your disaster-recovery site, or a testing database)</p>
<p>In the implementation I have built previously, we created a lookup-table for data-sources that indicated an &#8220;allowed calling-plug-in&#8221;,  &#8220;operational-mode&#8221; a &#8220;Data-source alias&#8221; and the details of each data source.  This allowed us to automate a switch to &#8220;Disaster-Recovery&#8221; mode through using a predefined &#8220;operational-mode&#8221; called &#8220;DR&#8221;.  The Smart-client had a process for checking against a centralised web-service for which mode it should be operating in for a particular application.  The flexibility here was staggering.  This also means that the change management team can promote an program from Testing to Production without any help from a technical team whatsoever.</p>
<p><strong>On-line/Offline modes</strong><br />
A web-based client or portal has the disadvantage that offline modes are not possible or at least very difficult to implement.  A smart-client can do this fairly easily and with the &#8220;data-access agent&#8221; functionality above it is even easier to achieve.</p>
<p><strong>Code Generators</strong><br />
I have found that most user interfaces that we needed to build were in fact forms that interacted with data-tables.  We used a multi-tier architecture where the front end was smart-client (containing a data-access layer), a business layer consisting of  stored procedures which performed a lot of the business activities and which interacted directly with the data-tables.  So we created a form-builder that created both the stored procedures and .NET forms automatically.  We would point the tool  at a set of data-tables and lookup tables do some configuration and click &#8220;GO&#8221;.  What we got out was a stored-procedure that conformed with all the rules we had predefined and a .NET project with all the necessary forms and the interactions with the Data Access Layer and Stored Procedures.  If there were no fancy custom UI interactions nececessary we could simply compile the project, and upload the DLL into our smart-client database for testing.</p>
<p>So no developer-time required for:</p>
<ul>
<li>authorisation,</li>
<li>basic form-based UIs,</li>
<li>access to data,</li>
<li>Disaster recovery implementations,</li>
<li>promotions between  Dev, QA, Prod etc,</li>
<li>Creation of menus</li>
<li>Creation of custom workflows</li>
</ul>
<p>among others.  This represents a significant saving in the development stage of any project.</p>
<p>Technorati Tags: <a class="performancingtags" rel="tag" href="http://technorati.com/tag/Software%20Factory">Software Factory</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/Development">Development</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/Custom%20Code">Custom Code</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/Code%20Generation">Code Generation</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sobercounsel.com/2007/03/07/software-factories-part-3-smart-clients/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sobercounsel.com/2007/03/07/software-factories-part-3-smart-clients/</feedburner:origLink></item>
		<item>
		<title>Software Factories: Part 2 - Types of Factory</title>
		<link>http://feedproxy.google.com/~r/sobercounsel/~3/_b1CQdpIkIo/</link>
		<comments>http://www.sobercounsel.com/2007/01/16/software-factories-part-2-types-of-factory/#comments</comments>
		<pubDate>Tue, 16 Jan 2007 14:52:43 +0000</pubDate>
		<dc:creator>Malcolm Mac Donald</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[Trends]]></category>

		<guid isPermaLink="false">http://www.sobercounsel.com/?p=31</guid>
		<description><![CDATA[There are a number of ways to implement the Software Factory Principle (Remember the principle says that any method to enable mass-production of software (especially standardized non-functional requirements) at a lower cost and in a shorter time constitutes a software factory of sorts.
Here are a few of the more common approaches:
1. Service orientation
Common Services (standard [...]]]></description>
			<content:encoded><![CDATA[<p>There are a number of ways to implement the Software Factory Principle (Remember the principle says that any method to enable mass-production of software (especially standardized non-functional requirements) at a lower cost and in a shorter time constitutes a software factory of sorts.</p>
<p>Here are a few of the more common approaches:</p>
<p><strong>1. Service orientation<br />
</strong>Common Services (standard non-functional requirements) are implemented as SOA services.  These need to be understood and published so that developers are aware of which common services they can use and exactly how to use them.  SOA provides standard ways of doing this.  The effect is that code should only be written for explicit functional requirements as the critical-mass of standardized non-functional requirements can be built up as needed.</p>
<p><u>Strengths</u></p>
<ul>
<li>Very loosely coupled</li>
<li>Changes to a common module are immediately available to consumers</li>
<li>Source-code for common services need not be seen by external developers, only the contracts for using these services needs to be known.</li>
<li>Allows parallel development efforts, provided development of common services is well managed.</li>
</ul>
<p><u>Weaknesses</u></p>
<ul>
<li>Governance of deployed common services is complex to manage</li>
</ul>
<p><strong>2. Smart Clients<br />
</strong>The non-functional requirements are coded into a smart-client that exposes a library of functions to the functional modules which simply snap-in to the smart client framework.<strong><br />
</strong><u><br />
Strengths</u></p>
<ul>
<li>Code for the non-functional requirements need never be seen by external developers, only the calls need to be known.</li>
<li>Code executes in a distributed environment with greater flexibility to provide performance requirements.</li>
<li>Allows for extremely parallel development efforts, while maintaining a common framework.</li>
<li>Will scale very well.</li>
</ul>
<p><u>Weaknesses</u></p>
<ul>
<li>Need to deploy the smart-client to all users when changes are made to common modules.</li>
<li>Fairly tightly coupled, although functional requirements could be deployed as SOA services.</li>
</ul>
<p><strong>3. Common Code Libraries only</strong><br />
This method simply relies on the developer to re-use code from a common code library.<br />
<u><br />
Strengths</u></p>
<ul>
<li>Ensures common approach to standard problems</li>
</ul>
<p><u>Weaknesses<br />
</u></p>
<ul>
<li>Relies on the discipline of the developer to use the standard modules and not code their own version</li>
<li>A Change to a standard module would require that all applications using that module would need to be recompiled and tested.</li>
<li>Very tightly coupled.</li>
</ul>
<p><strong>4. Monolithic Applications</strong><br />
SAP for example is a single Uber-application that has many modules and performs many tasks.  All of the non-functional requirements are standardised and cannot be changed.  If one were to be changed, it would automatically be changed for all the other functional modules.  All of the non-functional requirements are already coded into the SAP application and adding functionality involves coding the functional requirements only.<br />
<u><br />
Strengths</u></p>
<ul>
<li>Similar to the Smart Client approach</li>
</ul>
<p><u>Weaknesses</u></p>
<ul>
<li>Businesses can seldom function on a single piece of software</li>
<li>This software will become extremely complex</li>
<li>Very tightly coupled</li>
</ul>
<p><strong><br />
Summary<br />
</strong>There are numerous ways of deploying the Software-Factory Concept to speed up delivery of functional requirements, each with its own strengths and weaknesses.</p>
<p>I recommend either of the first two approaches (Service-orientation or smart-client) or a combination of the two.  These provide most of the benefits of a software factory and less of the drawbacks.</p>
<p>Note that they have a <em>management overhead</em>.  If they are not managed properly you will gain little benefit or in extreme cases if very poorly managed you may end-up worse-off than you were when you had discrete unmanaged code for each application.</p>
<p>Technorati Tags: <a href="http://technorati.com/tag/Software%20Factory" class="performancingtags" rel="tag">Software Factory</a>, <a href="http://technorati.com/tag/Development" class="performancingtags" rel="tag">Development</a>, <a href="http://technorati.com/tag/Custom%20Code" class="performancingtags" rel="tag">Custom Code</a>, <a href="http://technorati.com/tag/Code%20Generation" class="performancingtags" rel="tag">Code Generation</a>,</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sobercounsel.com/2007/01/16/software-factories-part-2-types-of-factory/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sobercounsel.com/2007/01/16/software-factories-part-2-types-of-factory/</feedburner:origLink></item>
		<item>
		<title>Avoiding Clutter in Systems Management</title>
		<link>http://feedproxy.google.com/~r/sobercounsel/~3/FPOXei5nrWo/</link>
		<comments>http://www.sobercounsel.com/2007/01/12/avoiding-clutter-in-systems-management/#comments</comments>
		<pubDate>Fri, 12 Jan 2007 06:53:58 +0000</pubDate>
		<dc:creator>Malcolm Mac Donald</dc:creator>
		
		<category><![CDATA[Challenge]]></category>

		<category><![CDATA[ITSM]]></category>

		<category><![CDATA[Management]]></category>

		<category><![CDATA[ESM]]></category>

		<category><![CDATA[Monitoring]]></category>

		<category><![CDATA[Systems Management]]></category>

		<guid isPermaLink="false">http://www.sobercounsel.com/?p=30</guid>
		<description><![CDATA[Software Factories: Part 2 will be coming along on Monday, but for now a change of topic onto Systems Management

Out-of-the Box Systems Management Tools
There are numerous systems Management tools out there and a lot of corporates own a lot of diverse instances of these.  Each one has its place in the market and plays [...]]]></description>
			<content:encoded><![CDATA[<p>Software Factories: Part 2 will be coming along on Monday, but for now a change of topic onto Systems Management<br />
<strong><br />
Out-of-the Box Systems Management Tools<br />
</strong>There are numerous systems Management tools out there and a lot of corporates own a lot of diverse instances of these.  Each one has its place in the market and plays to its particular strengths and has certain weaknesses.  For example one might come already configured with everything you need to manage server harware, but may not be customisable to manage routers at all.  Another tool may be completely generic and may be able to manage any device or system, but it comes preconfigured for almost nothing and you have to put the time and effort in to configure all the threshholds and metrics that you want to measure for each item in your environment.<br />
<strong><br />
Where is the Value?</strong><br />
The question is loaded of course and the answer is: &#8220;It depends&#8221;.  If I am a Mail administrator and I want a system management console to tell me how my mail-system is doing then I would see little value in buying a completely generic tool and customising it to tell me how my mail system is doing.  I would have to do extensive research and determine what the metrics are that I should typically be concerned about and what there respective threshholds should be in my particular setup.  Over time I could tweak these until they are just right for me.  Yuck.  What a waste of time.  I could just buy a specialised monitoring tool that tells me exactly what I need to know about mail-systems with all the threshholds already set.  WRONG.</p>
<p><strong>KNOW YOUR ENVIRONMENT</strong><br />
If you bought a specialised mail-monitoring system you would still have to customise all the threshholds and metrics for your specific environment because your servers may be scaled differently, your mailbox structures may be configured differently etc.  If you make the mistake of leaving all that up to the manufacturer of the monitoring tool, then the chances are you will be ignoring most of the info the system produces and eventually say &#8220;This thing is always wrong&#8221; and untimately it will fall into disuse.  Ok that&#8217;s a worst case, but my point is you need to KNOW YOUR ENVIRONMENT. There is definite value in researching what metrics are relevant for YOU and what the appropriate threshholds are in YOUR environment.  So am I saying there is no place for specialised tools.  Not at all.  As long as you recognise the responsibility stays with YOU to manage YOUR environment, and cannot be delegated to a tool.</p>
<p><strong>Where is the Value?: Part 2</strong><br />
If I were a departmental manager or executive, my requirements of a management system would be completely different.  I would want a very general overview of the state of affairs in the organisation.  In fact I would want period summary reports and would probably never look at a realtime console.  So the requirement is completely different.  If the underlying monitoring systems contributed their information into a centralised warehouse, I could draw a report off that and get what I needed.</p>
<p><strong>Caution: Information Overload in progress!</strong><br />
The question is WHAT INFO DO I NEED?  That is the RIGHT question (see iRobot - the movie) to start with.  Too much information can be as useless as no information, except that now you have spent money on tools (and support staff for those tools) to produce that information that you never look at.  Exactly the right balance of information is critical, especially in large environments.</p>
<p>I used to look after all the servers for a medium-sized corporate and after about six months of harassing the systems-management guys I had exactly the reports that I wanted.  I sent a monthly report to the senior IT managers exhibiting the outages and incidents that occurred with a comment from myself on each.  I also had a weekly report summarising the top 10 major potential and real issues across all servers.  Each week I tried to deal with the issues on the top-most-unhealthy server.  I also had a daily report on the configuration and health of each server, which I archived and kept for 3 months, which I only looked at if I needed to research something later (reading that report daily would have been overload).</p>
<p><strong>It shouldn&#8217;t be easy<br />
</strong>My parting comment is that you need to get to grips with your environment and do the investigation and research into what it is that YOU need to manage in YOUR enviroment.  It is extremely unlikely that someone can do that for you.  You need to make the time to do it.  It will save you (I say that deliberately - it may save YOU) in the long run.</p>
<p>Technorati Tags: <a class="performancingtags" rel="tag" href="http://technorati.com/tag/Systems%20Management">Systems Management</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/Operations%20Management">Operations Management</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sobercounsel.com/2007/01/12/avoiding-clutter-in-systems-management/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sobercounsel.com/2007/01/12/avoiding-clutter-in-systems-management/</feedburner:origLink></item>
		<item>
		<title>Software Factories: Part 1</title>
		<link>http://feedproxy.google.com/~r/sobercounsel/~3/TEuInSsYYcA/</link>
		<comments>http://www.sobercounsel.com/2007/01/11/software-factories-part-1/#comments</comments>
		<pubDate>Thu, 11 Jan 2007 15:38:48 +0000</pubDate>
		<dc:creator>Malcolm Mac Donald</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[Trends]]></category>

		<guid isPermaLink="false">http://www.sobercounsel.com/?p=29</guid>
		<description><![CDATA[Introduction
I have been aware of the Concept of a Software Factory for around 3 years or so.  The Principle is very simple: If you are producing software, tool-up in order to produce good quality software that meets your requirements, at a very low marginal cost (cost of delivering one more business requirement) and in [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Introduction<br />
</strong>I have been aware of the Concept of a Software Factory for around 3 years or so.  The Principle is very simple: If you are producing software, tool-up in order to produce good quality software that meets your requirements, at a very low marginal cost (cost of delivering one more business requirement) and in a very short marginal time (time to deliver one more business requirement).</p>
<p><strong>Software is like a Car<br />
</strong>Some cars have air-bags and navigation systems, but can be produced in the same factory as cars without either.  Software Factories should be designed with the non-functional requirements in mind.  If we consider the example of a car, the only real functional requirement is that it should transport people from A to B using public or private roads.  Some of the definitions of what is considered a &#8220;car&#8221; constrain the designs (weight, number of axles etc).  Other than these the remainder of a car&#8217;s features are in software terms considered non-functional requirements:</p>
<ul>
<li>Is it safe?</li>
<li>What are its performance ratings?</li>
<li>Convertible or fixed roof?</li>
<li>Is it secure?</li>
<li>Luxurious or Basic?</li>
<li>Manual or Automatic?</li>
<li>Spare Tyre or run-flat tyres with no-spare?</li>
</ul>
<p>The Software equivalents should be fairly obvious:</p>
<ul>
<li>Redundant systems with fail-over capability</li>
<li>Hardware requirements vs algorithmic efficiency</li>
<li>User Interface for speed or ease of use</li>
<li>Secure User Authentication and Authorisation methods</li>
<li>Manual Installs or automatic updates</li>
<li>Fat client or Thin client or both</li>
<li>etc</li>
</ul>
<p><strong>Software is not like a Car<br />
</strong>The Difference between Cars and Software is that potentially every piece of software has a different functional requirement, while pretty-much every car has the same functional requirement.</p>
<p>So in a car factory we can tool-up to produce homogeneous units with a uniform purpose, but with modular non-functional requirements that can be selected as options.</p>
<p>In a Software scenario the non-functional requirements remain modular and &#8220;optional&#8221; while the functional requirements have to be handcrafted or individually tooled.</p>
<p>So immediately the benefit of automating the numerous non-functional requirements for both software and cars is evident.  There are several approaches  to achieving this which will be discussed in &#8220;Software Factories: Part 2&#8243;<br />
<strong><br />
Standardized non-functionals are a prerequisite</strong><br />
The optimisation of the software coding process to ensure that non-functional requirements are not handcrafted or individually tooled is not sufficient.  The greater organisation needs to accept the standardisation of these non-functional requirements before this becomes viable.</p>
<p>Once everyone accepts that tyres are made of rubber and filled with air, then the variables become size, durability, speed rating and aesthetics.  If we cannot get everyone to accept the basic design of a tyre, our variables become infinitely more complex and we end up re-inventing the wheel with every new car design! (I know you saw that one coming).</p>
<p>Software is very similar in this respect.  If the organisation can accept that the user interface for all web-based software looks the same and the user interface for all fat-client software looks the same, then I can derive benefit from tooling up to automate the creation of these.</p>
<p><strong>An Ideal Example</strong><br />
I was involved in designing a software factory where all the software our company needed to produce was either form-based or generated a report. A standardized method for defining stored-procedures allowed us to automate the creation of the forms on-the-fly in the front-end and also automate the forms for inputting the report-parameters.</p>
<p>So the only handcrafting was the database design and the stored-procedures that interacted with the database. Everything else was written once, compiled once and deployed to everyone once.  This fat-client included Authorisation and Authentication modules, data access and routing modules, presentation formatting, workflow calls, disaster recovery processes etc.</p>
<p>Now this was an ideal environment where we only had SQL databases and almost all software was internally developed.</p>
<p>BUT</p>
<p>We had the option of writing each discrete business requirement as a discrete and monolithic piece of custom code.  We chose NOT to do that.  We chose to design a software factory that allowed us to dramatically reduce the quantity of custom code written (which now only needed to support functional requirements) and we never again had to write any code to support non-functional requirements.</p>
<p>The time-to-market for each new business requirement was slashed, and we gained many other benefits as side-effects of this process.</p>
<p>So in each corporate environment where significant quantities  of custom development takes place there will be some combination of non-functional requirements which can be automated to a greater or lesser extent to get the very real benefits of a Software Factory.</p>
<p>OK.  Concept introduced!  Next time we&#8217;ll talk about the various options for designing a Software Factory.</p>
<p>Technorati Tags: <a class="performancingtags" rel="tag" href="http://technorati.com/tag/Software%20Factory">Software Factory</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/Development">Development</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/Custom%20Code">Custom Code</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/Code%20Generation">Code Generation</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sobercounsel.com/2007/01/11/software-factories-part-1/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sobercounsel.com/2007/01/11/software-factories-part-1/</feedburner:origLink></item>
		<item>
		<title>Don’t buy dead horses.</title>
		<link>http://feedproxy.google.com/~r/sobercounsel/~3/msC0htXXKME/</link>
		<comments>http://www.sobercounsel.com/2007/01/10/dont-buy-dead-horses/#comments</comments>
		<pubDate>Wed, 10 Jan 2007 22:08:55 +0000</pubDate>
		<dc:creator>Malcolm Mac Donald</dc:creator>
		
		<category><![CDATA[ITSM]]></category>

		<category><![CDATA[Management]]></category>

		<guid isPermaLink="false">http://sobercounsel.com/?p=22</guid>
		<description><![CDATA[My post &#8220;Dismount!&#8221; last Friday (goodness it&#8217;s already almost a week ago!) left an open question about how you may have found yourself riding a dead horse (in the figurative sense).
Now in the context of this blog and on the topic of IT, a dead horse would most likely refer to a system that is [...]]]></description>
			<content:encoded><![CDATA[<p>My post &#8220;<a href="http://sobercounsel.com/?p=21">Dismount</a>!&#8221; last Friday (goodness it&#8217;s already almost a week ago!) left an open question about how you may have found yourself riding a dead horse (in the figurative sense).</p>
<p>Now in the context of this blog and on the topic of IT, a dead horse would most likely refer to a system that is either not being used, or is being used but is extremely unpopular within the organisation.</p>
<p>Very often these systems are not necessarily bad systems, but rather something has occurred that has effectively &#8220;killed&#8221; that system within a particular organisation.<br />
So it may have died because:</p>
<ul>
<li>It is a bad system that has no business case and is not fit for purpose - (very unlikely)</li>
<li>There is no buy-in from the users when the purchase decision is made - (fairly likely)</li>
<li>There is no buy-in from the technical team who are required to support it - (extremely likely)</li>
<li>It is too complicated and the users don&#8217;t understand it - (unlikely)</li>
<li>It has not been properly implemented and is barely usable - (very likely)</li>
<li>Key Stakeholders of this system change roles, and it is unpopular with, or unfamiliar to their successors - (quite likely)</li>
</ul>
<p>These likelihoods are not based on any research, but are simply my personal opinions based on my experiences within a number of organisations.<br />
Let&#8217;s unpack these and see how easily they can happen.  If any of the following list of things occurs during a product evaluation or solution design process then we may end up with one of the situations above:</p>
<ul>
<ul>
<li>A Vendor approaches senior managers directly and convinces them that the organisation needs this product, which then leads to &#8230;</li>
<li>A manager bypasses the governance process to implement a particular product</li>
<li>The Business Analysis is poor</li>
<li>The Technical team implement the newest pet-technology, ignoring the business requirements</li>
<li>The governance process for making purchase decisions is not aligned to business objectives or is in some other way broken</li>
<li>When a key support person or Business Champion changes role and the succession plan does not exist or is poorly executed</li>
</ul>
</ul>
<p>Do any of these sound familiar?  It is almost guaranteed that at some point, one or more of these will occur within any organisation, and this list is by no means complete.</p>
<p>The inconvenient truth is that it is seldom the product that is at fault.  There are usually two basic processes that have failed in these situations:</p>
<ul>
<li>The IT Governance process around product decisions</li>
<li>Succession planning</li>
</ul>
<p>A sound IT Governance process will ensure that business requirements are met and that solutions align with business objectives and desired behaviours.<br />
Good Succession planning will ensure that the healthy parts of the status-quo are not compromised during a change of &#8220;rider&#8221;</p>
<p>The bad news is that &#8220;when you discover youâ€™re riding a dead horse, the best strategy is [still] to dismount&#8221;</p>
<p>The good news is that if you are careful about these two processes (IT Governance and Succession Planning) it is possible to keep a healthy stable of IT solutions.</p>
<p>The basic message is:</p>
<p><strong>Don&#8217;t let healthy horses die </strong><br />
- Do pay attention to Succession Planning,  and<br />
<strong>Don&#8217;t buy dead horses</strong><br />
- Make sure Governance Mechanisms align with business needs and IT circumstances and then don&#8217;t bypass them</p>
<p>Technorati Tags: <a class="performancingtags" rel="tag" href="http://technorati.com/tag/IT%20Governance">IT Governance</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/IT%20Management">IT Management</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/Succession%20Planning">Succession Planning</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sobercounsel.com/2007/01/10/dont-buy-dead-horses/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sobercounsel.com/2007/01/10/dont-buy-dead-horses/</feedburner:origLink></item>
		<item>
		<title>Dismount!</title>
		<link>http://feedproxy.google.com/~r/sobercounsel/~3/BdZeubLp4x0/</link>
		<comments>http://www.sobercounsel.com/2007/01/05/dismount/#comments</comments>
		<pubDate>Fri, 05 Jan 2007 09:52:59 +0000</pubDate>
		<dc:creator>Malcolm Mac Donald</dc:creator>
		
		<category><![CDATA[Challenge]]></category>

		<category><![CDATA[Management]]></category>

		<guid isPermaLink="false">http://sobercounsel.com/?p=21</guid>
		<description><![CDATA[I was reminded yesterday of an old American-Indian saying that says when you discover you&#8217;re riding a dead horse, the best strategy is to dismount, but a colleague pointed out that there were other options available.
So I quickly Googled &#8220;How to ride a dead horse&#8221; and found a few sites quoting alternate strategies, which are [...]]]></description>
			<content:encoded><![CDATA[<p>I was reminded yesterday of an old American-Indian saying that says when you discover you&#8217;re riding a dead horse, the best strategy is to dismount, but a colleague pointed out that there were other options available.</p>
<p>So I quickly Googled &#8220;<a href="http://www.google.co.za/search?q=how+to+ride+a+dead+horse&#038;ie=utf-8&#038;oe=utf-8&#038;rls=org.mozilla:en-US:official&#038;client=firefox-a">How to ride a dead horse</a>&#8221; and found a few sites quoting alternate strategies, which are worth a read.</p>
<p>They are all fairly similar and very funny&#8230; and unfortunately too true.</p>
<p>I began to wonder how those horses died.  The proverb says &#8220;When you discover you are riding a dead horse&#8230;&#8221; , but there are several possible ways you got into that situation:</p>
<ul>
<li>Maybe the horse was dead when you got it</li>
<li>Maybe you rode the horse too hard</li>
<li>Maybe you forgot to feed and water the horse</li>
<li>Maybe the horse got sick and you didn&#8217;t get it to a vet who could help</li>
<li>Maybe someone shot the horse, because it had a broken leg (which you should have noticed if you are riding it)</li>
<li>Maybe some enemy shot the horse to further his own causes</li>
<li>Maybe the horse died of old age</li>
</ul>
<p>bears some discussion&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sobercounsel.com/2007/01/05/dismount/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sobercounsel.com/2007/01/05/dismount/</feedburner:origLink></item>
	</channel>
</rss>
