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

<channel>
	<title>cazh1 &#187; Application Development</title>
	<atom:link href="http://www.cazh1.com/category/science/application-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cazh1.com</link>
	<description>Inspiration, Art, Science, Execution</description>
	<lastBuildDate>Sun, 29 Jan 2012 19:08:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Sorting with Sound</title>
		<link>http://www.cazh1.com/sorting-with-sound/</link>
		<comments>http://www.cazh1.com/sorting-with-sound/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 00:31:48 +0000</pubDate>
		<dc:creator>Jim MacLennan</dc:creator>
				<category><![CDATA[Application Development]]></category>
		<category><![CDATA[algorithms]]></category>
		<category><![CDATA[Art]]></category>
		<category><![CDATA[coder]]></category>
		<category><![CDATA[communicating complexity]]></category>
		<category><![CDATA[elegant]]></category>
		<category><![CDATA[interesting stuff]]></category>
		<category><![CDATA[multi-media information sharing]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Science]]></category>
		<category><![CDATA[sort]]></category>
		<category><![CDATA[sound]]></category>
		<category><![CDATA[stack]]></category>
		<category><![CDATA[subtlety]]></category>
		<category><![CDATA[technical communication]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[visualization]]></category>
		<category><![CDATA[YouTube]]></category>

		<guid isPermaLink="false">http://www.cazh1.com/?p=826</guid>
		<description><![CDATA[via Geek.com &#8211; yes, I subscribe to stuff like this in my RSS reader &#8230; I thought this was interesting on two levels &#8230; The Engineering student within appreciates the differences in sorting techniques (although I think I could speed up that bubble sort &#8230;) I also think these videos provide a simple illustration of [...]]]></description>
			<content:encoded><![CDATA[<p><em>via <a href="http://www.geek.com/articles/geek-cetera/sorting-algorithms-quite-boring-until-you-add-sound-effects-20100819/">Geek.com</a> &#8211; yes, I subscribe to stuff like this in my <a title="Google Reader" href="http://www.google.com/reader/">RSS reader</a> &#8230;</em></p>
<p>I thought this was interesting on two levels &#8230;</p>
<ul>
<li>The Engineering student within appreciates the differences in sorting techniques (although I think I could speed up that bubble sort &#8230;)</li>
<li>I also think these videos provide a simple illustration of the power of multi-media information sharing; the audio helps the animated &#8220;description&#8221; of the sorting techniques</li>
</ul>
<p>I freely admit to be a bubble-sort bigot, as I never truly understood the heapsort algorithm. But think how this combination visualization / audio tool helps illustrate the concept; I&#8217;d love to see an interactive tool that lets me step through the sort and see the loops and the &#8220;stack&#8221; of values.</p>
<p>Another important power of effective visualizations &#8211; they get your audience thinking in new and different ways as well!</p>
<hr />
<p><small>Questions? Comments? Suggestions? Send mail to <b>webmaster <i>at</i> cazh1 <i>dot</i> com</b> <br>
© Jim MacLennan for <a href="http://www.cazh1.com">cazh1</a>, 2010. |
<a href="http://www.cazh1.com/sorting-with-sound/">Permalink</a> |
<a href="http://www.cazh1.com/sorting-with-sound/#comments">No comment</a> |
<br/>
Post tags: <a href="http://www.cazh1.com/tag/algorithms/" rel="tag">algorithms</a>, <a href="http://www.cazh1.com/tag/art/" rel="tag">Art</a>, <a href="http://www.cazh1.com/tag/coder/" rel="tag">coder</a>, <a href="http://www.cazh1.com/tag/communicating-complexity/" rel="tag">communicating complexity</a>, <a href="http://www.cazh1.com/tag/elegant/" rel="tag">elegant</a>, <a href="http://www.cazh1.com/tag/interesting-stuff/" rel="tag">interesting stuff</a>, <a href="http://www.cazh1.com/tag/multi-media-information-sharing/" rel="tag">multi-media information sharing</a>, <a href="http://www.cazh1.com/tag/programming/" rel="tag">programming</a>, <a href="http://www.cazh1.com/tag/science/" rel="tag">Science</a>, <a href="http://www.cazh1.com/tag/sort/" rel="tag">sort</a>, <a href="http://www.cazh1.com/tag/sound/" rel="tag">sound</a>, <a href="http://www.cazh1.com/tag/stack/" rel="tag">stack</a>, <a href="http://www.cazh1.com/tag/subtlety/" rel="tag">subtlety</a>, <a href="http://www.cazh1.com/tag/technical-communication/" rel="tag">technical communication</a>, <a href="http://www.cazh1.com/tag/video/" rel="tag">video</a>, <a href="http://www.cazh1.com/tag/visualization/" rel="tag">visualization</a>, <a href="http://www.cazh1.com/tag/youtube/" rel="tag">YouTube</a><br/>
</p>
<hr />
<p>
All articles, blog entries, and other content on this site are licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons License</a>   
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" style="border-width:0;" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png"/></a>
</small>
]]></content:encoded>
			<wfw:commentRss>http://www.cazh1.com/sorting-with-sound/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Hierarchy of Information Requirements</title>
		<link>http://www.cazh1.com/a-hierarchy-of-information-requirements/</link>
		<comments>http://www.cazh1.com/a-hierarchy-of-information-requirements/#comments</comments>
		<pubDate>Mon, 10 May 2010 02:24:29 +0000</pubDate>
		<dc:creator>Jim MacLennan</dc:creator>
				<category><![CDATA[Application Development]]></category>
		<category><![CDATA[Art]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Knowledge Management]]></category>
		<category><![CDATA[Requirements]]></category>

		<guid isPermaLink="false">http://www.cazh1.com/?p=469</guid>
		<description><![CDATA[It's a common problem statement - 'I don't have enough information to  (run my business unit, manage this process, identify opportunities,  etc.)'. The solution designer, when faced with a question like this, starts with a little detective work; the problem is too broadly stated.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://www.cazh1.com/images/pd/587px-Ouroboros_1.jpg" alt="" width="294" height="300" /><br />
It&#8217;s a common problem statement &#8211; &#8216;I don&#8217;t have enough information to (run my business unit, manage this process, identify opportunities, etc.)&#8217;. The solution designer, when faced with a question like this, starts with a little detective work; the problem is too broadly stated.</p>
<p style="padding-left: 30px;"><span style="font-family: Courier New,Courier,mono;">&lt;aside&gt;</span> This part of the project is itself an example of the problem &#8211; &#8220;I  don&#8217;t have enough information to define the problem of &#8220;I don&#8217;t have  enough information to &#8230;&#8217; &#8220;<span style="font-family: Courier New,Courier,mono;">&lt;aside&gt;</span></p>
<p>And, after a little detective work, we will probably find one or more  of the following is correct:</p>
<ul>
<li>The information [to run my business] does not exist (KM, BB)</li>
<li>The information exists, but I do not know that it exists
<ul>
<li>I am unaware that it exists (KM)</li>
<li>I suspect it exists, but I do not know how to find it (KM)</li>
<li>I suspect it exists, but I cannot find it (KM, BB)</li>
</ul>
</li>
<li>The information exists, and I know that it exists, but I cannot  access it
<ul>
<li>I am prevented from access due to security requirements (BB)</li>
<li>I have no data access tool (BB)</li>
<li>I have a data access tool, but I do not know where the data source  is and how to connect to it (KM)</li>
</ul>
</li>
<li>The information exists, and I know that it exists, and I can access  it, but I don’t understand what I am looking at
<ul>
<li>I do not know how to use the data access tool (KM)</li>
<li>I know how to use the data access tool, but I do not understand the  domain / terms / concepts (KM, BB)</li>
<li>I know how to use the data access tool, I understand the domain, but  I do not understand the data structures (KM)</li>
<li>I know how to use the data access tool, I understand the domain, but  the metadata is confusing (KM, BB)</li>
</ul>
</li>
<li>The information exists, and I know that it exists, but I don’t want  to access it – I want my team to access it, and feed me the results
<ul>
<li>My team complains about issues above (?!?)</li>
<li>My team only answers my questions – they don’t do any proactive  analysis (KM)</li>
</ul>
</li>
</ul>
<p>A wide range of root causes, and as you read down the list, it&#8217;s easy  to imagine the range of solutions that could be brought to bear. I have  broadly classified solutions for these problems in the list:</p>
<ul>
<li>KM &#8211; <em>Knowledge Management</em>: Some level of <em>documentation</em>, <em>training</em>,  <em>knowledge capture</em>, and/or <em>knowledge sharing</em> will be involved</li>
<li>BB &#8211; <em>Build or Buy</em>: Includes any technical work, like <em>building</em> a custom solutions, <em>buying</em> and implementing packaged software, and/or <em> configuring</em> the software / information store.</li>
</ul>
<p>I find it interesting that KM is required in almost all  (10 of 13) of the solution cases above, and a &#8220;technology solution&#8221; (aka  I need to Build or Buy something) is required less than half of the  time (7 of 13). And how about that little People Management issue that sneaks in near the end &#8230;</p>
<hr />
<p><small>Questions? Comments? Suggestions? Send mail to <b>webmaster <i>at</i> cazh1 <i>dot</i> com</b> <br>
© Jim MacLennan for <a href="http://www.cazh1.com">cazh1</a>, 2010. |
<a href="http://www.cazh1.com/a-hierarchy-of-information-requirements/">Permalink</a> |
<a href="http://www.cazh1.com/a-hierarchy-of-information-requirements/#comments">One comment</a> |
<br/>
Post tags: <br/>
</p>
<hr />
<p>
All articles, blog entries, and other content on this site are licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons License</a>   
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" style="border-width:0;" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png"/></a>
</small>
]]></content:encoded>
			<wfw:commentRss>http://www.cazh1.com/a-hierarchy-of-information-requirements/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Best Practices for Requirements Gathering Sessions</title>
		<link>http://www.cazh1.com/best-practices-for-requirements-gathering-sessions/</link>
		<comments>http://www.cazh1.com/best-practices-for-requirements-gathering-sessions/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 01:05:00 +0000</pubDate>
		<dc:creator>Jim MacLennan</dc:creator>
				<category><![CDATA[Application Development]]></category>
		<category><![CDATA[Art]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Hands-On]]></category>

		<guid isPermaLink="false">http://qc.cazh1.com/?p=282</guid>
		<description><![CDATA[It&#8217;s been a while since I&#8217;ve led an interactive requirements session for an interactive application &#8211; but it&#8217;s kind of like riding a bike. After a few minutes, the old habits come back, and the iterative ideas and cascading creativity starts to flow. What has changed, however, is the application platform, the office environment, and [...]]]></description>
			<content:encoded><![CDATA[<div xmlns='http://www.w3.org/1999/xhtml'>It&#8217;s been a while since I&#8217;ve led an interactive requirements session for an interactive application &#8211; but it&#8217;s kind of like riding a bike. After a few minutes, the old habits come back, and the iterative ideas and cascading creativity starts to flow. What has changed, however, is the application platform, the office environment, and the various knowledge capture tools at our disposal. <br/><br/>So, in the spirit of knowledge retention and sharing, here&#8217;s a brain dump of ideas that make for a better requirements gathering session &#8230;<br/>
<ul>
<li>Think of it as an interactive presentation &#8211; so all of the classic prep rules apply. Arrive early, get set up and have everything running before people arrive</li>
<li>Make sure you can bring the original application (if it&#8217;s a rework) up on the screen: check in advance that you can attach to the network </li>
<li>The best sessions are interactive, with application mock-up tools. Have a copy of Visio, PowerPoint or something similar ready to go &#8211; so you can paint screens and interactively work things while they watch</li>
<li>Use a room with a big screen TV or projector, so your audience can &#8220;see over your shoulder&#8221; as you work. However, if possible, you should face your audience &#8211; have them look behind you at the screen / projection, while you look at the display on your laptop. </li>
<ul>
<li>This allows you to have a conversation with the folks opining on needs and wants, and lets you see their facial expressions as you dummy stuff up. </li>
<li>This also allows your audience to see what you are typing. They are proofreading your work &#8211; not for typos, but to make sure their understanding of the words / ideas you are talking about are being captured correctly.</li>
</ul>
<li>Make sure you know where the local printer is, and can print to it. Waiting for a series of changes to be &#8220;painted&#8221; on the screen may take too long; it might be easier just to take a print screen and mark it up</li>
<ul>
<li>When sketching on paper, have a couple of different color pens on hand, and color-code your scribbles; red = follow up / things to fix, blue = talking points, etc. When capturing ideas on the hard copy, your fixes &amp; follow-ups are easily distinguishable. A highlighter might be good idea, too.</li>
</ul>
<li>re: typing / data capture: Consider using a simple text editor, Notepad or something similar. Key is not to worry to much about formatting the text or correcting typos. As long a you can decipher your hacking, that should be ok</li>
<ul>
<li>However, a spell checking word processor might be preferable to Notepad &#8211; your typos will get automatically fixed up</li>
</ul>
<li>Always number your requirements / items to attack. Then you have a finite, trackable list of stuff that is either go or no go</li>
<ul>
<li>Consider creating an auto-numbered spreadsheet for a Requirements list &#8211; you can bring it up on the screen as well. Create additional columns for notes, resource assignments, effort estimates &#8211; stuff like that</li>
</ul>
<li>Bring a digital voice recorder to the session. Let the folks know that they are being &#8220;taped&#8221; &#8211; but it&#8217;s only so you can go back and replay the discussion while cleaning up your notes. This will also allow you to stop typing and continue the in depth conversation &#8211; which is where all the value is</li>
<li>Set clear expectations of what you want to accomplish in the meeting &#8211; and set a time limit; iterative work is easily digested when taken in small bites<br/></li>
</ul>
<p>There is a lot of power in truly collaborative requirements sessions &#8211; the ultimate users of your system will readily accept the results when they are truly part of the design process and experience.<br/>
<p><i>Previously &#8230;</i></p>
<ul>
<li><a target='_blank' href='http://www.cazh1.com/blogger/thoughts/2006/08/three-best-tlas-of-all-time-hegemony.shtml'>Three Best TLAs of all time, the hegemony of Excel, and the Intuitive Front End</a> (August 12, 2006)</li>
<li><a target='_blank' href='http://www.cazh1.com/blogger/thoughts/2006/10/iron-triangle-quality-is-feature-that.shtml'>The Iron Triangle &#8211; Quality is a Feature that We Choose to Omit from Projects</a> (October 28, 2006)</li>
<li><a target='_blank' href='http://www.cazh1.com/blogger/thoughts/2007/01/another-caveat-for-erstwhile-agile.shtml'>Another caveat for the erstwhile agile developer</a> (January 15, 2007)</li>
<li><a target='_blank' href='http://www.cazh1.com/blogger/thoughts/2008/01/innovation-that-matters-substance-over.shtml'>Innovation That Matters &#8211; Substance Over Style</a> (January 12, 2008)</li>
<li><a target='_blank' href='http://www.cazh1.com/blogger/thoughts/2008/02/do-you-want-it-good-or-fast.shtml'>Do you want it good or fast? Prioritizing Time-to-Value over Requirements</a> (February 10, 2008)</li>
<li><a target='_blank' href='http://www.cazh1.com/blogger/thoughts/2008/08/facilitating-innovation-establishing.shtml'>Facilitating Innovation: Establishing an Environment of Possibilities</a> (August 22, 2008)</li>
<li><a target='_blank' href='http://www.cazh1.com/blogger/thoughts/2008/09/agile-methods-in-waterfall-world.shtml'>Agile Methods in a Waterfall World: Speaking In Code</a> (September 29, 2008)</li>
</ul>
<p><br/>
<p style='text-align: right; font-size: 10px;'>Technorati Tags: <a rel='tag' href='http://www.technorati.com/tag/best%20practice'>best practice</a>, <a rel='tag' href='http://www.technorati.com/tag/design'>design</a>, <a rel='tag' href='http://www.technorati.com/tag/development'>development</a>, <a rel='tag' href='http://www.technorati.com/tag/innovation'>innovation</a></p>
<p style='display: none;'>Invisible Technorati Tags: <a rel='tag' href='http://www.technorati.com/tag/cazh1'>cazh1</a>, <a rel='tag' href='http://www.technorati.com/tag/James%20P.%20MacLennan'>James P. MacLennan</a>, <a rel='tag' href='http://www.technorati.com/tag/jpmacl'>jpmacl</a>, <a rel='tag' href='http://www.technorati.com/tag/MacLennan'>MacLennan</a></p>
</div>
<hr />
<p><small>Questions? Comments? Suggestions? Send mail to <b>webmaster <i>at</i> cazh1 <i>dot</i> com</b> <br>
© Jim MacLennan for <a href="http://www.cazh1.com">cazh1</a>, 2008. |
<a href="http://www.cazh1.com/best-practices-for-requirements-gathering-sessions/">Permalink</a> |
<a href="http://www.cazh1.com/best-practices-for-requirements-gathering-sessions/#comments">No comment</a> |
<br/>
Post tags: <br/>
</p>
<hr />
<p>
All articles, blog entries, and other content on this site are licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons License</a>   
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" style="border-width:0;" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png"/></a>
</small>
]]></content:encoded>
			<wfw:commentRss>http://www.cazh1.com/best-practices-for-requirements-gathering-sessions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Methods in a Waterfall World: Speaking In Code</title>
		<link>http://www.cazh1.com/agile-methods-in-a-waterfall-world-speaking-in-code/</link>
		<comments>http://www.cazh1.com/agile-methods-in-a-waterfall-world-speaking-in-code/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 03:50:00 +0000</pubDate>
		<dc:creator>Jim MacLennan</dc:creator>
				<category><![CDATA[Application Development]]></category>
		<category><![CDATA[Art]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Hands-On]]></category>
		<category><![CDATA[Tech Management]]></category>

		<guid isPermaLink="false">http://qc.cazh1.com/?p=273</guid>
		<description><![CDATA[Starting up a new project, and I&#8217;m definitely having fun with it. At first glance, it looks like a fairly small, departmental application, but it is actually part of a web of disconnected processes and local databases (ie. &#8220;a mess&#8221;) that support some fairly important master data. Also, the folks I&#8217;m working with are much [...]]]></description>
			<content:encoded><![CDATA[<div xmlns='http://www.w3.org/1999/xhtml'>
<p>Starting up a new project, and I&#8217;m definitely having fun with it. At first glance, it looks like a fairly small, departmental application, but it is actually part of a web of disconnected processes and local databases (ie. &#8220;a mess&#8221;) that support some fairly important master data. Also, the folks I&#8217;m working with are much more comfortable in a &#8220;waterfall world&#8221;, with formal requirements followed by code, test, and deploy.</p>
<p>Lots of opportunity for process coaching and new methods &#8211; I&#8217;ve started notepads on data models, process maps, glossaries, even &#8220;best practice&#8221; lists for app dev processes like Requirements Gathering.</p>
<p>One session in particular was quite interesting. I am working with a developer on a Notes database, but I do not know the language (LotusScript, or whatever). Oh, I&#8217;ve seen it, and can figure out what&#8217;s going on, but don&#8217;t ask me to code anything! Anyway, the developer was educating me about &#8220;workflow&#8221;, and the Notes app&#8217;s propensity for spitting out email notification when Significant Things happened. When we clone the production database, we&#8217;ll have to trap all of those emails, lest our testing process spams the department with meaningless links.</p>
<p>The developer started talking about a &#8220;global search&#8221; and a lot of hand coding, but I had a different idea. Not knowing the language, I just pulled up a screen and started typing VBA-like pseudo code &#8230;</p>
<p><i>Is this how it currently works?</i><br/><span style='font-family: Courier New;'>
<ul>Sub btnSendInfo_Click()<br/><br/>   Send Mail to samir@initech.com<br/><br/>End Sub</ul>
<p></span> <i>Yes</i><br/><br/><i>And you were going to fix it like this, right?</i><br/><span style='font-family: Courier New;'>
<ul>Sub btnSendInfo_Click()<br/><br/>&#8216;   Send Mail to samir@initech.com   &#8217; comment out this line<br/><br/>   Send Mail to michael@initech.com<br/><br/>End Sub</ul>
<p></span> <i>Why, yes</i><br/><br/><i>What if we did something like this?</i><br/>
<ul><span style='font-family: Courier New;'>Global Const iDebugMode = 0<br/><br/>Function SendMailAddress( sAddress as String ) as String<br/><br/>   if iDebugMode = 1 then<br/><br/>      SendMailAddress = sAddress<br/><br/>   Else<br/><br/>      SendMailAddress = michael@initech.com<br/><br/>   End If<br/><br/>End Function<br/><br/>Sub btnSendInfo_Click()<br/><br/>&#8216;   Send Mail to samir@initech.com   &#8216; comment out this line<br/><br/>   Send Mail to SendMailAddress( &#8220;samir@initech.com&#8221;)<br/><br/>End Sub<br/><br/></span></ul>
<p>The neat thing was that I couldn&#8217;t even finish typing some of these sections when the developer started assenting with verbalizations that indicated understanding (ie. &#8220;grunting acks&#8221;). He had seen some .Net stuff, I was mangling some of the syntax, but the basic pattern was easy to see. It was about 5 minutes of silence, save for the clicking of the keys &#8211; we were Speaking in Code, and it worked great!
<p/>
<p><i>Previously &#8230;</i></p>
<ul>
<li><a target='_blank' href='http://www.cazh1.com/blogger/thoughts/2004/10/beermat-app-development.shtml'>Beermat App Development</a> (October 18, 2004)</li>
<li><a target='_blank' href='http://www.cazh1.com/blogger/thoughts/2005/01/good-and-bad-about-being-hands-on-tech.shtml'>The good and the bad about being a hands-on tech manager</a> (January 25, 2005)</li>
<li><a target='_blank' href='http://www.cazh1.com/blogger/thoughts/2005/03/communicating-complex-technical.shtml'>Communicating Complex Technical Concepts</a> (March 21, 2005)</li>
<li><a target='_blank' href='http://www.cazh1.com/blogger/thoughts/2005/06/tech-shorthand-minor-interest.shtml'>Tech shorthand, a minor interest</a> (June 3, 2005)</li>
<li><a target='_blank' href='http://www.cazh1.com/blogger/thoughts/2006/01/army-rangers-model-for-it.shtml'>The &#8220;Army Rangers&#8221; model for IT Professionals</a> (January 2, 2006)</li>
<li><a target='_blank' href='http://www.cazh1.com/blogger/thoughts/2006/09/funny-how-techies-talk-to-each-other.shtml'>Funny, how techies talk to each other</a> (September 11, 2006)</li>
<li><a target='_blank' href='http://www.cazh1.com/blogger/thoughts/2007/05/joy-of-programming-challenge-of-km.shtml'>The Joy of Programming, the Challenge of KM</a> (May 5, 2007)</li>
</ul>
<p style='text-align: right; font-size: 10px;'>Technorati Tags: <a href='http://www.technorati.com/tag/best%20practice' rel='tag'>best practice</a>, <a href='http://www.technorati.com/tag/collaboration' rel='tag'>collaboration</a>, <a href='http://www.technorati.com/tag/development' rel='tag'>development</a>,<br/><a href='http://www.technorati.com/tag/hands%20on' rel='tag'>hands on</a>, <a href='http://www.technorati.com/tag/tech%20management' rel='tag'>tech management</a> </p>
<p style='display: none;'>Invisible Technorati Tags:<a href='http://www.technorati.com/tag/cazh1' rel='tag'>cazh1</a>, <a href='http://www.technorati.com/tag/James%20P.%20MacLennan' rel='tag'>James P. MacLennan</a>, <a href='http://www.technorati.com/tag/jpmacl' rel='tag'>jpmacl</a>,<a href='http://www.technorati.com/tag/MacLennan' rel='tag'>MacLennan</a>, </p>
</div>
<hr />
<p><small>Questions? Comments? Suggestions? Send mail to <b>webmaster <i>at</i> cazh1 <i>dot</i> com</b> <br>
© Jim MacLennan for <a href="http://www.cazh1.com">cazh1</a>, 2008. |
<a href="http://www.cazh1.com/agile-methods-in-a-waterfall-world-speaking-in-code/">Permalink</a> |
<a href="http://www.cazh1.com/agile-methods-in-a-waterfall-world-speaking-in-code/#comments">No comment</a> |
<br/>
Post tags: <br/>
</p>
<hr />
<p>
All articles, blog entries, and other content on this site are licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons License</a>   
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" style="border-width:0;" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png"/></a>
</small>
]]></content:encoded>
			<wfw:commentRss>http://www.cazh1.com/agile-methods-in-a-waterfall-world-speaking-in-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why are those Old Programmers so slow in picking up on the Intarweb?</title>
		<link>http://www.cazh1.com/why-are-those-old-programmers-so-slow-in-picking-up-on-the-intarweb/</link>
		<comments>http://www.cazh1.com/why-are-those-old-programmers-so-slow-in-picking-up-on-the-intarweb/#comments</comments>
		<pubDate>Sun, 06 Apr 2008 05:13:00 +0000</pubDate>
		<dc:creator>Jim MacLennan</dc:creator>
				<category><![CDATA[Application Development]]></category>
		<category><![CDATA[Crimson]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Gen-X]]></category>
		<category><![CDATA[hands on experience]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[millennials]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PowerBuilder]]></category>
		<category><![CDATA[SQLWindows]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[user interface]]></category>
		<category><![CDATA[visual]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://qc.cazh1.com/?p=241</guid>
		<description><![CDATA[A significant difference between us old-line IT coders and the new graduates is the variety of our platforms and tools. I&#8217;m not talking about the large number of languages and tools learned over the course of a career &#8211; we all have a healthy collection of certifications and acronyms peppering the bottoms of our resumes. [...]]]></description>
			<content:encoded><![CDATA[<p>A significant difference between us old-line IT coders and the new graduates is the variety of our platforms and tools. I&#8217;m not talking about the large number of languages and tools learned over the course of a career &#8211; we all have a healthy collection of certifications and acronyms <a href="http://www.cazh1.com/resume.shtml#skills">peppering</a> the bottoms of our resumes. I&#8217;m talking about the amazing array of stuff required to get development done on a single project, &#8220;right now&#8221;.</p>
<p>Over the past few weeks, I&#8217;ve been doing a little development at work. This is my idea of fun &#8211; in between the PowerPoints and project status meetings, I try to sneak in a little hack or two. Actually, I&#8217;m not doing the heavy lifting on this one; I&#8217;m working with one of the guys on my team, and we&#8217;re putting together some ASP code to generate RSS feeds from the SQL database we use to track our projects. He&#8217;s done most of the raw research and the base coding, I&#8217;m just prettying up the final package.</p>
<p>As a department, we&#8217;re moving towards Microsoft as a strategic platform, but we&#8217;re certainly not there yet &#8211; so this is definitely a <a href="http://www.cazh1.com/blogger/thoughts/2006/06/guidelines-for-success-with-your-skunk.shtml">skunkworks</a>-type project. For this &#8220;fun stuff&#8221;, we&#8217;re using technologies that will plug nicely into our general strategic direction, but at this point there are no standard toolsets or integrated development environments in broad use.</p>
<p>So, to get the job done this afternoon, I&#8217;ve been cycling through the following &#8230;</p>
<ul>
<li>In window #1, editing the .ASP file with <a href="http://www.crimsoneditor.com/">Crimson</a>; source files are sitting on the development server</li>
<li>In window #2, testing code using IE &#8230; no integrated debug environment for my ASP syntax, but I manage (just a little trickery &#8211; switches flip between RSS and HTML output)</li>
<li>This is just debugging the basic code &#8211; to validate the RSS XML, I <i><u>V</u>iew Sour<u>c</u>e</i> from IE (opening window #3) and cut and paste into the <a href="http://validator.w3.org/feed/#validate_by_input">W3C validator</a> (window #4)</li>
<li>For the SQL queries and database hacking, I&#8217;ve got window #5 for Enterprise Manager and #6 for Query Analyzer</li>
<li>After debugging, I push to the test server manually, using File Explorer in windows #7 and #8</li>
<li>Everything looks great, so I switch to window #9, which has another chunk of ASP that generates custom URLs for the RSS feed (we&#8217;ve added selectivity, aren&#8217;t we crafty?)</li>
<li>For the final test, I have <a href="http://www.rssbandit.org/">RSS Bandit</a> open in window #10. I create multiple new feed URLs (#9) and add to the Bandit config, to see what I get</li>
<li>If I made a syntax error in the RSS (missed something between #4 and here), I have to flip back to window #1 to clean it up</li>
<li>Oops, almost forgot &#8230; like any good coder, I&#8217;ve got <a href="http://www.acronymfinder.com/af-query.asp?acronym=rtfm">TFM</a>s open, but it&#8217;s not just one manual- window #11 is my multi-tabbed Firefox, Googling all sorts of sites to get references for RSS, ASP, and SQL</li>
</ul>
<p>Sounds crazy, I know. I could/should go out and get Visual Studio or something. But like I said, we&#8217;re not fully in production in this Microsoft development environment. We&#8217;re innovating, right?</p>
<p>I&#8217;ve done open source development on my own in the past, and it&#8217;s much the same thing &#8211; multiple different platforms, tools, and languages. For example, when working on my own site, I&#8217;m fixing configuration files and writing code in HTML, CSS, PHP, and mySQL. To get things working, I&#8217;m dealing with the configuration files for Apache, Eclipse, PHP, and mySQL. Edits in Eclipse and Crimson, pushing around source with FTP, fighting firewalls and routers, developing in Windows while production is in Unix.</p>
<p>This madhouse of multiple tools, languages, and platforms probably sounds quite normal &#8211; if you&#8217;ve been working heavy with open source and/or Web 2.0 for a few years. But imagine presenting this to legacy IT folks, working in their version controlled, standardized environments. The typical &#8220;road to the future&#8221; brings five new technologies, three new IDEs, and one or two basic system architectures that are all very different from tried and true.</p>
<p>Does this mean you can&#8217;t teach an old dog new tricks? Not at all &#8211; most are quite anxious to learn, and have done so continuously over the years. However, this is all starting to feel like the first time we switched from procedural languages (COBOL, RPG, Pascal, Fortran) to OO and event-driven stuff (Visual Basic, PowerBuilder, SQLWindows). We went from offense to defense, from being controlling and orchestrating to reacting and trapping. Not that it was bad or wrong &#8211; just different. </p>
<p>Does this mean the experienced coder is washed up, and has nothing to contribute? Ask the folks in Big Pharma, having dealt with the FDA and validated systems. Ask the folks working with Finance in public companies, having dealt with SarbOx. Healthcare and HIPAA. Retail and RFID. Not to mention having to debug a lot of other people&#8217;s code, and knowing when to step through or just refactor.</p>
<p>Running to the future, juggling multiple multilingual windows, and demonstrated facility with the newest tools is all good, but it&#8217;s just one of many attributes that determine who on your team is <a href="http://blog.tomevslin.com/2006/05/why_a_great_pro.html">worth 50 others</a>. Have a little patience &#8230;</p>
<hr />
<p><small>Questions? Comments? Suggestions? Send mail to <b>webmaster <i>at</i> cazh1 <i>dot</i> com</b> <br>
© Jim MacLennan for <a href="http://www.cazh1.com">cazh1</a>, 2008. |
<a href="http://www.cazh1.com/why-are-those-old-programmers-so-slow-in-picking-up-on-the-intarweb/">Permalink</a> |
<a href="http://www.cazh1.com/why-are-those-old-programmers-so-slow-in-picking-up-on-the-intarweb/#comments">No comment</a> |
<br/>
Post tags: <a href="http://www.cazh1.com/tag/crimson/" rel="tag">Crimson</a>, <a href="http://www.cazh1.com/tag/debug/" rel="tag">debug</a>, <a href="http://www.cazh1.com/tag/development/" rel="tag">Development</a>, <a href="http://www.cazh1.com/tag/gen-x/" rel="tag">Gen-X</a>, <a href="http://www.cazh1.com/tag/hands-on-experience/" rel="tag">hands on experience</a>, <a href="http://www.cazh1.com/tag/html/" rel="tag">HTML</a>, <a href="http://www.cazh1.com/tag/millennials/" rel="tag">millennials</a>, <a href="http://www.cazh1.com/tag/mysql/" rel="tag">MySQL</a>, <a href="http://www.cazh1.com/tag/php/" rel="tag">PHP</a>, <a href="http://www.cazh1.com/tag/powerbuilder/" rel="tag">PowerBuilder</a>, <a href="http://www.cazh1.com/tag/sqlwindows/" rel="tag">SQLWindows</a>, <a href="http://www.cazh1.com/tag/usability/" rel="tag">usability</a>, <a href="http://www.cazh1.com/tag/user-interface/" rel="tag">user interface</a>, <a href="http://www.cazh1.com/tag/visual/" rel="tag">visual</a>, <a href="http://www.cazh1.com/tag/xml/" rel="tag">XML</a><br/>
</p>
<hr />
<p>
All articles, blog entries, and other content on this site are licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons License</a>   
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" style="border-width:0;" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png"/></a>
</small>
]]></content:encoded>
			<wfw:commentRss>http://www.cazh1.com/why-are-those-old-programmers-so-slow-in-picking-up-on-the-intarweb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tactics for Controlling Project Scope</title>
		<link>http://www.cazh1.com/tactics-for-controlling-project-scope/</link>
		<comments>http://www.cazh1.com/tactics-for-controlling-project-scope/#comments</comments>
		<pubDate>Sat, 05 Jan 2008 06:36:00 +0000</pubDate>
		<dc:creator>Jim MacLennan</dc:creator>
				<category><![CDATA[Application Development]]></category>
		<category><![CDATA[Art]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[PMO]]></category>
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://qc.cazh1.com/?p=221</guid>
		<description><![CDATA[I wrote about ways to &#8220;cheat&#8221; at project prioritization [aka trying to figure out what to work on next, when there is more demand (projects) than supply (people to work on them)]. One significant tool you have at your disposal is controlling scope &#8211; can you do 20% of the work to get 80% of [...]]]></description>
			<content:encoded><![CDATA[<p>I <a href="http://www.cazh1.com/blogger/thoughts/2007/12/how-to-cheat-at-pmo-prioritization-game.shtml">wrote about</a> ways to &#8220;cheat&#8221; at project prioritization [aka trying to figure out what to work on next, when there is more demand (projects) than supply (people to work on them)]. One significant tool you have at your disposal is <em>controlling scope</em> &#8211; can you do 20% of the work to get 80% of the benefits? </p>
<p>Easier said than done, sometimes you need <em>tactics</em>, that help identify an opportune place to stop, a run-on project, or a design that is&#8221;simple enough&#8221;. </p>
<ul>
<li>
<strong>Apply the Law of Diminishing Returns &#8220;in reverse&#8221;</strong>, and front load the benefits. Let&#8217;s say we&#8217;re implementing a series of components (people, process, and technology) to analyze and improve promotion response. If I really understand the ROI, can I break it up into chunks? In this case, you might see a basic software package that defines master data, collects transactions, and provides basic metrics for promotion response. Let&#8217;s say this visibility allows you to realize 70-80% of the benefits,<br />
but we want to follow with &#8220;phase 2&#8243; where we add training, tuning, and optimization to get another 20 to 30% of your ROI. Well, time and resources are short &#8211; why not stop at phase 1, let the new processes soak in, and &#8220;optimize&#8221; later?</li>
<li>
<strong>Eliminate the 90-percent Done game</strong> &#8211; Projects that run-on forever sap the energy out of your teams, and destroy credibility with the business units whose projects are getting delayed. Via <a href="http://blog.jackvinson.com/archives/2007/08/14/perpetually_almost_finished_projects.html">Vinson</a>, here&#8217;s an <a href="http://tynerblain.com/blog/2007/08/06/perpetually-almost-finished-projects/">excellent post</a> from <a href="http://tynerblain.com/blog/">Blain</a> that reference&#8217;s Zeno&#8217;s Paradox<br />
(I&#8217;ll never get there if I keep traveling half of the remaining distance &#8230;). The primary tactic is to define discrete deliverables (tasks?) and only accept a binary status &#8211; it&#8217;s either done or it ain&#8217;t!</li>
<li>
<strong>Keep It Simple, Sir!</strong> Feature creep is the greatest enemy of the short-term project. Some features (like <a href="http://www.cazh1.com/blogger/thoughts/2006/10/iron-triangle-quality-is-feature-that.shtml">quality</a> / testing) are not what you&#8217;d want to negotiate out of the project. Thinking about <a href="http://www.cazh1.com/blogger/thoughts/2006/07/thoughts-on-why-tech-folks-hate.shtml">cutting short</a> on documentation? You naughty, normal person &#8230; However, take a look at <a href="http://headrush.typepad.com/creating_passionate_users/2005/06/featuritis_vs_t.html">this<br />
post</a> from <a href="http://headrush.typepad.com/creating_passionate_users/">Sierra</a>, with a great illustration of the idea that usability is optimized right before the user has to reach for the manual!</li>
</ul>
<p><span style="FONT-SIZE: 8pt">Click on the picture for a full-size image!</span><br />
<br />
<a href="http://headrush.typepad.com/photos/uncategorized/featuritis.jpg" target="_blank"><img src="http://headrush.typepad.com/photos/uncategorized/featuritis.jpg" width="25%" /> </a> </p>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<p>The folks at <a href="http://bigcontacts.com/">Big Contacts</a> liked the idea so much, they <a href="http://blog.bigcontacts.com/bigcontacts/2007/12/why-there-is-no.html">tout it as a feature</a> &#8230;</p>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<p><em>With Big Contacts there is no user manual. Because once you create a user manual, you are admitting your application is too difficult and that people need a book to use it.</em> </p>
</blockquote>
<p>Let&#8217;s steal that idea for our projects. No documentation required, because the deliverables (process, technology) are simple and common sense enough that people don&#8217;t need a manual, a training class, etc.</p>
<p>Ok, maybe it&#8217;s not &#8220;practical&#8221;, but it&#8217;s a Worthy Goal that could help keep scope down to a dull roar &#8230;</p>
</blockquote>
<p dir="ltr"><em>Previously &#8230;</em> </p>
<ul>
<li>
<a href="http://www.cazh1.com/blogger/thoughts/2005/05/challenges-when-demoing-training.shtml">Challenges when demoing / training / pitching complex systems</a> (May 23, 2005)</li>
<li>
<a href="http://www.cazh1.com/blogger/thoughts/2005/06/components-it-responsiveness-and.shtml">Components, IT Responsiveness, and the Rosemont Horizon</a> (June 22, 2005)</li>
<li>
<a href="http://www.cazh1.com/blogger/thoughts/2005/10/subdivide-huge-project-list-to.shtml">Subdivide a huge project list to simplify the prioritization process</a> (October 27, 2005)</li>
<li>
<a href="http://www.cazh1.com/blogger/thoughts/2006/01/misapplying-pareto-principle.shtml">Misapplying the Pareto principle</a> (January 7, 2006)</li>
<li>
<a href="http://www.cazh1.com/blogger/thoughts/2006/04/quality-requirements-for-technical.shtml">Quality requirements for technical documentation are lower than user documentation</a> (April 3, 2006)</li>
<li>
<a href="http://www.cazh1.com/blogger/thoughts/2006/07/thoughts-on-why-tech-folks-hate.shtml">Thoughts on Why Tech Folks Hate Documentation</a> (July 8, 2006)</li>
<li>
<a href="http://www.cazh1.com/blogger/thoughts/2006/10/iron-triangle-quality-is-feature-that.shtml">The Iron Triangle &#8211; Quality is a Feature that We Choose to Omit from Projects</a> (October 28, 2006)</li>
<li>
<a href="http://www.cazh1.com/blogger/thoughts/2007/01/another-caveat-for-erstwhile-agile.shtml">Another caveat for the erstwhile agile developer</a> (January 15, 2007)</li>
<li>
<a href="http://www.cazh1.com/blogger/thoughts/2007/02/continuing-education-pareto-principle.shtml">Continuing Education Pareto Principle (50/30/20)</a> (February 13, 2007)</li>
<li>
<a href="http://www.cazh1.com/blogger/thoughts/2007/10/defining-business-value-of-project-im.shtml">Defining the Business Value of a Project</a> (October 25, 2007)</li>
<li>
<a href="http://www.cazh1.com/blogger/thoughts/2007/12/pm-anti-patterns-that-increase-it.shtml">PM Anti-Patterns That Increase IT Project Cycle Time</a> (December 7, 2007)</li>
<li>
<a href="http://www.cazh1.com/blogger/thoughts/2007/12/pmo-prioritization-project-descriptions.shtml">PMO Prioritization &#8211; Project Descriptions should be Effective, Relevant &#8230; and Short!</a> (December 9, 2007)</li>
<li>
<a href="http://www.cazh1.com/blogger/thoughts/2007/12/how-to-cheat-at-pmo-prioritization-game.shtml">How to Cheat at the PMO Prioritization Game</a> (December 14, 2007)</li>
<li>
<a href="http://www.cazh1.com/blogger/thoughts/2007/12/how-to-win-at-pmo-prioritization-game.shtml">How to Win at the PMO Prioritization Game</a> (December 18, 2007)
</li>
</ul>
<p dir="ltr"><em></em> </p>
<p><!-- technorati tags start -->
<p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/business value" rel="tag">business value</a>, <a href="http://www.technorati.com/tag/documentation" rel="tag">documentation</a>, <a href="http://www.technorati.com/tag/PMO" rel="tag">PMO</a>, <a href="http://www.technorati.com/tag/Project Management" rel="tag">Project Management</a>, <a href="http://www.technorati.com/tag/tech management" rel="tag">tech management</a>, <a href="http://www.technorati.com/tag/training" rel="tag">training</a></p>
<p><!-- technorati tags end --></p>
<hr />
<p><small>Questions? Comments? Suggestions? Send mail to <b>webmaster <i>at</i> cazh1 <i>dot</i> com</b> <br>
© Jim MacLennan for <a href="http://www.cazh1.com">cazh1</a>, 2008. |
<a href="http://www.cazh1.com/tactics-for-controlling-project-scope/">Permalink</a> |
<a href="http://www.cazh1.com/tactics-for-controlling-project-scope/#comments">No comment</a> |
<br/>
Post tags: <br/>
</p>
<hr />
<p>
All articles, blog entries, and other content on this site are licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons License</a>   
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" style="border-width:0;" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png"/></a>
</small>
]]></content:encoded>
			<wfw:commentRss>http://www.cazh1.com/tactics-for-controlling-project-scope/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hidden Gold in Automating Recurring Processes</title>
		<link>http://www.cazh1.com/hidden-gold-in-automating-recurring-processes/</link>
		<comments>http://www.cazh1.com/hidden-gold-in-automating-recurring-processes/#comments</comments>
		<pubDate>Mon, 28 May 2007 16:48:00 +0000</pubDate>
		<dc:creator>Jim MacLennan</dc:creator>
				<category><![CDATA[Application Development]]></category>
		<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://qc.cazh1.com/?p=186</guid>
		<description><![CDATA[Here&#8217;s a typical IT scenario: each quarter, you need to check audit user access to a critical application. Your internal security standards require that you revoke access for those who haven&#8217;t been on the system for over 90 days. I&#8217;ve seen this before, and the process (at the time) had many challenges: It&#8217;s manual; we [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a typical IT scenario: each quarter, you need to check audit user access to a critical application. Your internal security standards require that you revoke access for those who haven&#8217;t been on the system for over 90 days. I&#8217;ve seen this before, and the process (at the time) had many challenges: </p>
<ul>
<li>
It&#8217;s manual; we did a quick-and-dirty set of steps years ago to cover the minimum requirements, that involves extracts from application logs, file transfers MS Access and MS Excel, and some emails</li>
<li>
It&#8217;s not drop-dead simple, because there is a list of exceptions &#8211; user IDs that were always kept active, even if they haven&#8217;t been used</li>
<li>
The overall process was never documented</li>
</ul>
<p>Coupled with the fact that this only happened once per quarter, and involved less than five total effort hours to take care of, the easy response was to just get the task done and move on. But I think this is penny wise and pound foolish; there are long-term quality <em>Problems</em> to be avoided, and short-term <em>Opportunities</em> for internal staff development that we were passing up! </p>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<p><em>Problem</em>: If we continued to just do the minimum, to satisfy the requirement, it was no surprise that over time, steps were omitted. The lack of documentation forced folks to repeat steps from memory, and pass along the process word-of-mouth as roles rotated and/or people turned over. </p>
<p><em>Opportunity</em>: Simplifying things required some automation; nothing too difficult, but definitely interesting and non-trivial; for example, we needed a custom table for the exceptions. For staff members looking to build technical skills, this was a perfect training opportunity; small risk, small time requirement &#8211; a perfect filler when you are burnt out on the big project and need a bit of an escape. </p>
</blockquote>
<p>Of course, the push-back was always the same: <em>I Have No Time For This</em>. Most can easily envision a total solution that is simple, uses familiar technology, gets rid of the multiple platforms and manual processes, and is sustainable. In this case, however, it would take about 16-32 effort hours to get done, and who has the time? </p>
<p>The solution was to attack the problem in baby steps; make the overall process a little better each time. For isses like this, you don&#8217;t need to solve all of your problems now, and it&#8217;s OK to leave the work unfinished until next time. However, the key is that you must commit to making a small improvement each time you &#8220;touch&#8221; the thing. </p>
<p>For example &#8211; back to the user access audit. For a first pass … </p>
<ul>
<li>
The current task owners walked through the process with me, and I took scratchy notes on paper and in a Notepad text file &#8211; stashed on my hard disk</li>
<li>
I got the Access database extract and Excel spreadsheet that counted the days. I iterated on the spreadsheet, automating the counts and the formulas for computing days since last log in.</li>
<li>
I returned the list of users who hadn&#8217;t signed in for 90 days, which were then manually matched against the list of exception user IDs.<br />
<br />
This work was a one-time add of about three effort hours &#8211; a small start, but a teeny platform on which to build.
</li>
</ul>
<p>A few months go by, and it&#8217;s time for pass two  &#8230; </p>
<ul>
<li>
I moved my scratchy notes into a shared document and iterated on the process, mostly just cleaning them up to be somewhat legible</li>
<li>
I still received the list of users and their last access date, but this time I got the list of exceptions. I iterated on the spreadsheet to take this into account</li>
<li>
I still sent the results back, but note that now (and never again) does the next person in the process need to edit out the exceptions</li>
</ul>
<p>This work was another one-time add of two or three hours; but we&#8217;d already simplified the overall process, and we saw the total effort (including process improvements) starting to decline. </p>
<p>Next iteration &#8230; </p>
<ul>
<li>
We teed up a programming project to build an exception table and automate the log extracts &#8211; nothing more than a couple hours of effort
</li>
<li>
I took a final cut at the process documentation in the shared area, then turned it over to the operational support team</li>
</ul>
<p>Note that each time you iterate on something like this, you need to feel comfortable with the idea that these works in process, these &#8220;interim deliverables&#8221;, are clearly unfinished, even raggedy. It shouldn&#8217;t matter, because each time you touch it, it gets a little bit better. Plus, the priority was originally low enough that a totally manual effort was OK, so what&#8217;s wrong with documentation that is incomplete? </p>
<p><em>Incremental improvements on the primary goal (automated user audits) with tasty side benefits along the way (mini side projects to keep stretching your tech chops) … win-win. </em> </p>
</p>
<p><!-- technorati tags start -->
<p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/productivity" rel="tag">productivity</a></p>
<p><!-- technorati tags end --></p>
<hr />
<p><small>Questions? Comments? Suggestions? Send mail to <b>webmaster <i>at</i> cazh1 <i>dot</i> com</b> <br>
© Jim MacLennan for <a href="http://www.cazh1.com">cazh1</a>, 2007. |
<a href="http://www.cazh1.com/hidden-gold-in-automating-recurring-processes/">Permalink</a> |
<a href="http://www.cazh1.com/hidden-gold-in-automating-recurring-processes/#comments">No comment</a> |
<br/>
Post tags: <br/>
</p>
<hr />
<p>
All articles, blog entries, and other content on this site are licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons License</a>   
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" style="border-width:0;" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png"/></a>
</small>
]]></content:encoded>
			<wfw:commentRss>http://www.cazh1.com/hidden-gold-in-automating-recurring-processes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Strategies for Malware in Consulting Engagements</title>
		<link>http://www.cazh1.com/strategies-for-malware-in-consulting-engagements/</link>
		<comments>http://www.cazh1.com/strategies-for-malware-in-consulting-engagements/#comments</comments>
		<pubDate>Sun, 28 May 2006 15:45:00 +0000</pubDate>
		<dc:creator>Jim MacLennan</dc:creator>
				<category><![CDATA[Application Development]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Vendor Management]]></category>

		<guid isPermaLink="false">http://qc.cazh1.com/?p=131</guid>
		<description><![CDATA[Last in a series on some practical legal mumbo jumbo (disclaimer: IANAL) for your Master Consulting Agreements (MCA). This one was particularly interesting to put in; it&#8217;s really interesting to see who catches it, but it was an amazing (in retrospect) observation that led us to include the language. The Trigger Event: A virus outbreak. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://www.cazh1.com/images/pd/200px-Biohazard_orange.svg.png" alt="" width="200" height="200" />Last <a href="http://www.cazh1.com/strategies-for-fee-structures-in-consulting-engagements/">in</a> <a href="http://www.cazh1.com/strategies-for-intellectual-property-in-consulting-engagements/">a</a> <a href="http://www.cazh1.com/strategies-for-risk-sharing-in-consulting-engagements/">series</a> on some practical legal mumbo jumbo (disclaimer: <a href="http://en.wikipedia.org/wiki/IANAL">IANAL</a>) for your Master Consulting Agreements (MCA). This one was particularly interesting to put in; it&#8217;s really interesting to see who catches it, but it was an amazing (in retrospect) observation that led us to include the language.</p>
<p>The Trigger Event: A virus outbreak. We had been hit before, and the executive group was not fond of losing their email for a day or two, so we implemented fairly tight lockdowns to get things under control &#8211; email scanning, virus signature updates pushed via SMS, aggressive patching for IE, and plenty of email warnings against opening mystery attachments. After many months with no outbreaks, we were surprised when we got hit fairly bad one summer. When we traced to the source of the outbreak, we found it was a consultant&#8217;s PC &#8211; woefully behind in OS and Virus patches and updates.</p>
<p>Our Director of Operations was rightfully peeved, as his group put in a lot of overtime to get things cleaned up. Especially aggravating / amazing was the fact that this consultant was working for a technology vendor, helping us on a major, high-profile technology implementation.</p>
<p>How can you trust a consultant&#8217;s tech skills when they can&#8217;t even perform the basics on their own PC?</p>
<p>Well, we lost the argument for a credit on their next invoice, but we did make a change to our standard MCA, adding the following sections:</p>
<p style="padding-left: 30px;"><em>[contractor] agrees that it has installed virus checking software on all computers owned by [contractor] that will be attached to [company]&#8216;s wide area network, and that the virus tables are being updated at intervals exceeding no greater than 7 days. [contractor] also agrees that the virus checking software is run continuously to monitor the state of these computers and is additionally used to check external media. [contractor] agrees that all external media brought onto [company] premises shall be scanned for viruses by a member of [company]&#8216;s IT staff designated by the [company], prior to installation of said media on any of [company]&#8216;s computer equipment.</em></p>
<p style="padding-left: 30px;"><em>[contractor] agrees that it has installed all appropriate Microsoft software updates (also known as Critical Updates and Service Packs) on all computers owned by [contractor] that will be attached to the [company]&#8216;s wide area  network and that run any version of Microsoft Windows. [contractor] agrees that all computers brought onto [company] premises shall be checked for Critical Updates and Service Packs by a member of [company]&#8216;s IT staff designated by the [company], prior to connection of said computer to [company]&#8216;s wide area network.</em></p>
<p style="padding-left: 30px;"><em>Should a virus, worm, or security breach be deemed by [company] to be introduced to the system by [contractor], [contractor] will at its expense and [company]’s sole choice either repair the damage to any and all affected machine(s) or reload the machine(s) with the most recent valid full backup and update it with the incremental backups provided said backups are available, current and valid.</em></p>
<p>This is always good for a comment from the contractor / consultant, but these are (I feel) fairly common sense additions, and very simple to enforce.</p>
<ol>
<li>The easiest way to avoid any problems is to not attach your Windows PC to my network. Insist on using my PCs, my licensed copies of development / productivity tools, etc. This approach actually solves other issues, like software licensing and internet access controls.</li>
<li>For an operations group with good, tight processes, it literally takes minutes to check for the latest pathes and virus signatures.</li>
<li> At the very least, this focuses attention on the consulting firm&#8217;s technical abilities. How should you feel when the expensive tech expertise does not have confidence in their own controls?</li>
</ol>
<hr />
<p><small>Questions? Comments? Suggestions? Send mail to <b>webmaster <i>at</i> cazh1 <i>dot</i> com</b> <br>
© Jim MacLennan for <a href="http://www.cazh1.com">cazh1</a>, 2006. |
<a href="http://www.cazh1.com/strategies-for-malware-in-consulting-engagements/">Permalink</a> |
<a href="http://www.cazh1.com/strategies-for-malware-in-consulting-engagements/#comments">No comment</a> |
<br/>
Post tags: <br/>
</p>
<hr />
<p>
All articles, blog entries, and other content on this site are licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons License</a>   
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" style="border-width:0;" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png"/></a>
</small>
]]></content:encoded>
			<wfw:commentRss>http://www.cazh1.com/strategies-for-malware-in-consulting-engagements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Strategies for Risk Sharing in Consulting Engagements</title>
		<link>http://www.cazh1.com/strategies-for-risk-sharing-in-consulting-engagements/</link>
		<comments>http://www.cazh1.com/strategies-for-risk-sharing-in-consulting-engagements/#comments</comments>
		<pubDate>Sat, 13 May 2006 05:14:00 +0000</pubDate>
		<dc:creator>Jim MacLennan</dc:creator>
				<category><![CDATA[Application Development]]></category>
		<category><![CDATA[Collaboration]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[IT Management]]></category>
		<category><![CDATA[Knowledge Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Vendor Management]]></category>

		<guid isPermaLink="false">http://qc.cazh1.com/?p=129</guid>
		<description><![CDATA[I am late is responding to a comment on this post, first in a series about Consulting Engagements. Earlier this week it was Intellectual Property, with another good comment &#8230; so, why all the harsh language about protecting IP that I probably can&#8217;t commercialize? Ah &#8211; welcome to the world of Risk Sharing. The issue [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://www.cazh1.com/images/pd/200px-Dice.svg.png" alt="" width="200" height="150" />I am late is responding to a comment on <a href="http://www.cazh1.com/blogger/thoughts/2006/03/strategies-for-fee-structures-in.shtml">this post</a>, first in a series about Consulting Engagements. Earlier this week it was <a href="http://www.cazh1.com/blogger/thoughts/2006/05/strategies-for-intellectual-property.shtml">Intellectual Property</a>, with another good comment &#8230; so, why all the harsh language about protecting IP that I probably can&#8217;t commercialize? Ah &#8211; welcome to the world of Risk Sharing.</p>
<p>The issue is that most businesses, especially <a href="http://en.wikipedia.org/wiki/Small_and_Medium-sized_Enterprise">SMB</a>s that are simply not used to paying $200 an hour for labor, typically have a tough time wrapping their minds around a relationship that has such large invoices with no guarantee of success. It is easy for the cynical to see how a consulting firm can milk an arrangement for tons of $$ without delivering the hoped-for business benefit.</p>
<p style="padding-left: 30px;">&lt;aside&gt; Please, no comments about the chronic lack of requirements and/or tight process. Yes, I am fully aware that many customers of professional service firms really don&#8217;t have a good idea about what they need or want, and don&#8217;t have a good understanding of the value proposition of a good   consultant / developer / integrator. This is about how to bridge that gap &#8230; &lt;/aside&gt;</p>
<p>First, get the <a href="http://www.cazh1.com/blogger/thoughts/2006/03/strategies-for-fee-structures-in.shtml">fee   structure</a> in place (&#8220;not to exceed&#8221;) that will put some controls in, but give the contractor the proper trigger to control <a href="http://www.alistapart.com/articles/scopecreep/">scope creep</a>.</p>
<p>Next &#8211; how might we put something of interest into the agreement, that gives me, the   customer, a little hedge against the risk of the unknown? This could and should work both ways &#8211; it gives the contractor a <a href="http://www.wipfli.com/Wipfli/Impact_Magazine/Business_Issues/Operational_Effectiveness/ValueProposition.htm">differentiating value proposition</a>, while focusing their attention on the project, to see it though to the end.</p>
<p>I&#8217;ve seen a couple of different approaches &#8230;</p>
<ol>
<li><strong>Penalty / Bonus for Hitting the Date</strong>: This method will penalizes the contractor for failure to meet the time table [within it’s control], and reward them if deliverables and the work plan are met. This particular example provides a 2-to-1 incentive ratio in favor of the customer; we hold back 10% of the fees due to the contractor, and pay back the 10% <em>plus</em> 5% incremental upon periodic approval by a Project Steering Committee, which judges if performance is proceeding satisfactorily and on time.</li>
<li><strong>Budget Risk Sharing</strong>: Given a project budget, the contractor agrees to a final review when work is complete. If the contractor comes in under budget, the customer agrees to pay 25% of the difference as a performance bonus. If, however, we blow the original budget, but the work needs to continue, the contractor agrees to discount their ongoing hourly fees by 25%. We can also agree to a max budget overrun beyond which no additional $$ are owed, but the work will continue until completion.</li>
<li><strong>Gain Sharing</strong>: The typical project has a cost/benefit model that defines how long the payback is; these models are typically built with the help of the contractor. One way to keep the benefits estimates realistic would be to reward the contractor with a % of any additional savings beyond, say, 20% of the business-case estimate. Of course, could also penalize the contractor should the benefits come in less than expected.</li>
<li><strong>IP Rights</strong>: Finally, realize the inherent value in the Intellectual Property created, and the fact that the contractor is typically (thank you <a href="http://www.juiceanalytics.com/weblog/?page_id=17">Gemignani</a>)      better suited to commercialize the stuff, by granting IP rights in exchange for lower hourly rates.</li>
</ol>
<p>Of course, all of these agreements will require lots of specific language and guidelines   and limits and, above all, excellent levels of open, honest communciation through the life of the project &#8211; but hey, all that will do is foster an even better environment for a successful project!</p>
<hr />
<p><small>Questions? Comments? Suggestions? Send mail to <b>webmaster <i>at</i> cazh1 <i>dot</i> com</b> <br>
© Jim MacLennan for <a href="http://www.cazh1.com">cazh1</a>, 2006. |
<a href="http://www.cazh1.com/strategies-for-risk-sharing-in-consulting-engagements/">Permalink</a> |
<a href="http://www.cazh1.com/strategies-for-risk-sharing-in-consulting-engagements/#comments">No comment</a> |
<br/>
Post tags: <br/>
</p>
<hr />
<p>
All articles, blog entries, and other content on this site are licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons License</a>   
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" style="border-width:0;" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png"/></a>
</small>
]]></content:encoded>
			<wfw:commentRss>http://www.cazh1.com/strategies-for-risk-sharing-in-consulting-engagements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Components, IT Responsiveness, and the Rosemont Horizon</title>
		<link>http://www.cazh1.com/components-it-responsiveness-and-the-rosemont-horizon/</link>
		<comments>http://www.cazh1.com/components-it-responsiveness-and-the-rosemont-horizon/#comments</comments>
		<pubDate>Thu, 23 Jun 2005 01:31:00 +0000</pubDate>
		<dc:creator>Jim MacLennan</dc:creator>
				<category><![CDATA[Application Development]]></category>
		<category><![CDATA[allstate arena]]></category>
		<category><![CDATA[analogies]]></category>
		<category><![CDATA[application support]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[business process]]></category>
		<category><![CDATA[Chicago]]></category>
		<category><![CDATA[components]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[flexibility]]></category>
		<category><![CDATA[functional design]]></category>
		<category><![CDATA[integration technology]]></category>
		<category><![CDATA[maintenance]]></category>
		<category><![CDATA[process documentation]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[rosemont horizon]]></category>
		<category><![CDATA[stagehands]]></category>

		<guid isPermaLink="false">http://qc.cazh1.com/?p=78</guid>
		<description><![CDATA[Technical people are often engineers at heart, and really want to see controlled processes in and around their computer systems. We see source code control, configuration management, and process documentation as ways to manage long term maintenance costs and deliver repeatable, reliable results from our systems. In the realm of ERP systems, this would seem [...]]]></description>
			<content:encoded><![CDATA[<p>Technical people are often engineers at heart, and really want to see controlled processes in and around their computer systems. We see source code control, configuration management, and process documentation as ways to manage long term maintenance costs and deliver repeatable, reliable results from our systems.</p>
<p>In the realm of ERP systems, this would seem to be a common and well-regarded mind set; however, the businesses supported by these systems often demand information transparency, process flexibility, and quick turnaround of change requests. After all, the customer is always right, right? So, how can we quickly make changes in a structured way? How can we deliver repeatable, reliable systems while maintaining flexibility?</p>
<p>I often hear of process and/or technology mavens erring on the side of too much control. IT seems to prefer this approach, and I hear it a lot when I talk with folks in and out of my company. Of course, the opposite extreme (no-questions-asked flexibility, without concern for long-term maintenance issues) is a slow-cooking recipe for disaster.</p>
<p>One of my favorite analogies on this topic is my Rosemont Horizon story. The Horizon is/was a medium-sized arena northwest of Chicago, now called the Allstate Arena (but it&#8217;ll always be the Horizon to me), and featuring your typical eclectic array of &#8220;stuff&#8221; every month &#8211; rock concerts, basketball games, tractor pulls, wrestling, circuses &#8230; good times &#8230;</p>
<p>Picture the stagehands at the Rosemont on one hypothetical summer weekend; the Rolling Stones are playing on Thursday and Friday, and need a regular stage with a long runway extending into the audience, as Mick Jagger likes to strut out, jump up and down, and let the crowd hear and see him up close. However, on Saturday and Sunday, there is a Garth Brooks concert, and Garth prefers the wide stage with a lot of space along the front for fans to get up close. This is key &#8211; a long runway on Friday, and a wide stage by the next night. Note also that Mick jumps up and down, and Garth smashes guitars &#8211; so the stage better be sturdy, solid, and reliable (mistakes [stage "downtime"?!] will cost $$$).</p>
<p>One might erect a custom-built wood structure with tons of two-by-fours and bracing; this will be exactly (to the nail!) what Mick requires, but the weight would be immense (immovable!) and the whole thing would have to be torn down and rebuilt in an afternoon for Garth &#8211; expensive and extremely difficult, requiring high skill sets for your stage crew. This is clearly not the preferred approach; generally, you&#8217;ll see lightweight, sectional staging that is built up from many basic shapes, quickly assembled into any configuration and taken down again, but rigid and strong when assembled.</p>
<p>Ok, so this is a better analogy for component-based architecture, I know, but bear with me; the real magic comes in the detailed instructions / processes involved. Each of the components are highly engineered, with interchangeable connections and standard &#8220;interfaces&#8221;. Also &#8211; and this is key &#8211; there are detailed installation instructions to make assembly quick as can be, and you typically wouldn&#8217;t have to maintain a staff with a specialized skill set to put this stuff up. The rigor and process design is implemented at the component level &#8211; individual sections cannot be redesigned, but you can mix and match and find the best solution for any particular rock concert / business process. The flexibility comes in when you are interacting with the band manager / business process owner, trying to figure out the best way to provide for their requirements while still maintaining control of the environment.</p>
<p>A well-structured, well-educated process should not mean bureaucracy and delay, it should mean execution speed coupled with rigorous process control and auditability.</p>
<hr />
<p><small>Questions? Comments? Suggestions? Send mail to <b>webmaster <i>at</i> cazh1 <i>dot</i> com</b> <br>
© Jim MacLennan for <a href="http://www.cazh1.com">cazh1</a>, 2005. |
<a href="http://www.cazh1.com/components-it-responsiveness-and-the-rosemont-horizon/">Permalink</a> |
<a href="http://www.cazh1.com/components-it-responsiveness-and-the-rosemont-horizon/#comments">One comment</a> |
<br/>
Post tags: <a href="http://www.cazh1.com/tag/allstate-arena/" rel="tag">allstate arena</a>, <a href="http://www.cazh1.com/tag/analogies/" rel="tag">analogies</a>, <a href="http://www.cazh1.com/tag/application-support/" rel="tag">application support</a>, <a href="http://www.cazh1.com/tag/architecture/" rel="tag">architecture</a>, <a href="http://www.cazh1.com/tag/business-process/" rel="tag">business process</a>, <a href="http://www.cazh1.com/tag/chicago/" rel="tag">Chicago</a>, <a href="http://www.cazh1.com/tag/components/" rel="tag">components</a>, <a href="http://www.cazh1.com/tag/documentation/" rel="tag">Documentation</a>, <a href="http://www.cazh1.com/tag/flexibility/" rel="tag">flexibility</a>, <a href="http://www.cazh1.com/tag/functional-design/" rel="tag">functional design</a>, <a href="http://www.cazh1.com/tag/integration-technology/" rel="tag">integration technology</a>, <a href="http://www.cazh1.com/tag/maintenance/" rel="tag">maintenance</a>, <a href="http://www.cazh1.com/tag/process-documentation/" rel="tag">process documentation</a>, <a href="http://www.cazh1.com/tag/requirements/" rel="tag">Requirements</a>, <a href="http://www.cazh1.com/tag/rosemont-horizon/" rel="tag">rosemont horizon</a>, <a href="http://www.cazh1.com/tag/stagehands/" rel="tag">stagehands</a><br/>
</p>
<hr />
<p>
All articles, blog entries, and other content on this site are licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons License</a>   
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" style="border-width:0;" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png"/></a>
</small>
]]></content:encoded>
			<wfw:commentRss>http://www.cazh1.com/components-it-responsiveness-and-the-rosemont-horizon/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

