<?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>Elegant Code &#187; Kaizen</title>
	<atom:link href="http://elegantcode.com/category/kaizen/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 20 Jul 2010 12:52:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>And this is what I SAW</title>
		<link>http://elegantcode.com/2010/01/24/and-this-is-what-i-saw/</link>
		<comments>http://elegantcode.com/2010/01/24/and-this-is-what-i-saw/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 20:21:09 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Kaizen]]></category>
		<category><![CDATA[Open Spaces]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/01/24/and-this-is-what-i-saw/</guid>
		<description><![CDATA[ So what do you think you get when you have about 2 dozen very smart and interesting techies together at a remote location where the only thing you can do is ski between 11:30 and 15:30? 
That’s right, you get a _lot_ of geek talk!
SAW

I was invited to join this years Software Architecture Workshop [...]]]></description>
			<content:encoded><![CDATA[<p> So what do you think you get when you have about 2 dozen very smart and interesting techies together at a remote location where the only thing you can do is ski between 11:30 and 15:30? </p>
<p>That’s right, you get a _lot_ of geek talk!</p>
<h2>SAW</h2>
<p><a href="http://elegantcode.com/wp-content/uploads/2010/01/Picture9.png" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="Picture 9" border="0" alt="Picture 9" align="right" src="http://elegantcode.com/wp-content/uploads/2010/01/Picture9_thumb.png" width="140" height="201" /></a></p>
<p>I was invited to join this years Software Architecture Workshop which was held in remote Oppdal, Norway. This is a group of people that spend 3 days a year discussing al kinds of software related innovations and problems. SAW was originally introduced in Europe by Jimmy Nillson. The three days are formatted like an <a href="http://en.wikipedia.org/wiki/Open_Space_Technology" target="_blank">open space</a> event, and I can tell you; that is a lot of information to swallow. This year was my first time, but I am going to do my very best to attend the other coming SAW gatherings.</p>
<p>Another cool part of SAW is that each year it is organized by different members of the group which means that next year it will be at a different remote location. Being remote is a key to this event, it ensures no interruptions.</p>
<h2>Open Spaces</h2>
<p>Like other open spaces at the beginning of the day everybody can put their meeting topics on a post-it, and place it on an open slot. Any topics that would not fit the schedule would be placed on a parking lot to be picked for a next round.</p>
<p>We ran three parallel tracks so there where enough good topics to choose from at any time. Before the day starts there is a marketplace; this is basically the opportunity to sell your topic to the other attendees. After that there is the change to negotiate with the people having the sessions if you want them to move it to another slot, incase you want to join two talks that run parallel. And of course at the end of the day the great discussions continued during dinner and in the bar till very late at night.</p>
<h2>Sessions</h2>
<p>The sessions I joined where about:</p>
<ul>
<li>Lean and Kanban</li>
<li>Testing and Mocking</li>
<li>Architecture (different topics, among CQRS that I hosted, REST, SOA and EDA)</li>
<li>Creating a great presentation</li>
<li>Systems Thinking</li>
</ul>
<ul>As you can see the range of topics is really wide and that is great, it enables you to go to a session where the topic is completely new to you and really open your mind. </ul>
<h2>Snowboarding</h2>
<p>Each day had a break from 12:00 till 16:00, during this break there were no sessions planned (which of course didn’t stop everybody from talking about software), but for me this meant a great opportunity to do some snowboarding. Something I had never done before and I have to say that it went better then I imagined. I was actually able to get down the mountain, be it only sliding from right to left and back again facing down the mountain. But hey I was getting down the mountain. It was very heavy on the legs but loads of fun. </p>
<h2>Finally</h2>
<p>I completely loved the whole experience and would recommend everybody to go to Open Spaces events, they are truly the most interesting events where you learn the most. I do think the break is a necessary thing as doing this for eight hours straight would be to tiring for sure.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/01/24/and-this-is-what-i-saw/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>You are responsible for your education</title>
		<link>http://elegantcode.com/2010/01/14/you-are-responsible-for-your-education/</link>
		<comments>http://elegantcode.com/2010/01/14/you-are-responsible-for-your-education/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 01:12:55 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Kaizen]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/01/14/you-are-responsible-for-your-education/</guid>
		<description><![CDATA[Many have said it before, and I’ll repeat it once more; as a developer you, yourself are the main responsible person for your own education. So not your employer, your mentors or anybody else. You are. This is one of the principles that is central to the software craftsmanship ideas.
So now we got that out [...]]]></description>
			<content:encoded><![CDATA[<p>Many have said it before, and I’ll repeat it once more; as a developer you, yourself are the main responsible person for your own education. So not your employer, your mentors or anybody else. You are. This is one of the principles that is central to the software craftsmanship ideas.</p>
<p>So now we got that out of the way lets look at a particular way that I find very effective.</p>
<h2>Software Conferences. </h2>
<p>Software conferences offer the unique opportunity to first of all listen to some great people in the software industry talk about the topics that they are passionate about. Secondly you can have great discussion with the speakers, get more details about the topics that interested you.</p>
<p>I think that this might be the best way of introducing new ideas, you won’t know all the ins and outs, but you will know enough to determine whether or not to continue investigating them.</p>
<h2>But </h2>
<p>Lets go back to that it is your responsibility to educate yourself; so you want to go to one of these great conferences like for example; QCon, NDC or Øredev. These conferences are very focused on software craftsmanship and learning, but when I look at the costs of these conferences then I realize that it is almost not possible to be responsible for going to these events yourself. It is easy to spend 1.500 to 2.000 Euro on a three day conference including travel and hotel. </p>
<p>So these big conferences are really targeting companies, and they don’t really consider that there are many developers that cannot go because their employer is not willing to pay for their education. </p>
<p>Now I completely realize that having these conferences costs a lot of money, and also that if they would give some sort of discount for developers that pay their own ticket it would be misused by more then a few companies. </p>
<p>But honestly paying the 1.005 GBP for the QCon London event does hurt my wallet, I hope it is worth it <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Please note that this post has been tagged as a rant, but I hope it was an ok rant.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/01/14/you-are-responsible-for-your-education/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>TekPub annual subscription giveaway</title>
		<link>http://elegantcode.com/2009/12/11/tekpub-annual-subscription-giveaway/</link>
		<comments>http://elegantcode.com/2009/12/11/tekpub-annual-subscription-giveaway/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 02:40:26 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Kaizen]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2009/12/11/tekpub-annual-subscription-giveaway/</guid>
		<description><![CDATA[I bought an annual subscription of TekPub and because of a special offering I got a additional annual subscription for free. Now instead of selling it I want to give it away. I already knew that doing something via Twitter didn’t work, so I decided to give you a little bit more time and use [...]]]></description>
			<content:encoded><![CDATA[<p>I bought an annual subscription of <a href="http://www.tekpub.com/" target="_blank">TekPub</a> and because of a <a href="http://blog.tekpub.com/2009/12/11/buy-one-give-one-on-yearly-subscriptions/" target="_blank">special offering</a> I got a additional annual subscription for free. Now instead of selling it I want to give it away. I already knew that doing something via <a href="http://twitter.com/robconery/status/6262967654" target="_blank">Twitter didn’t work</a>, so I decided to give you a little bit more time and use my blog instead.</p>
<p>I would just like to get the correct answers on the following questions in the comments section and then the first person to get them all correct will win the subscription.</p>
<ol>
<li>I use the name “Fohjin” for my <a href="http://github.com/MarkNijhof/Fohjin" target="_blank">github project</a>, what does this name mean? </li>
<li>What is the current name for the book that I am writing<a href="http://elegantcode.com/2009/12/01/is-software-craftsmanship-to-gender-specific/" target="_blank">?</a> </li>
<li>What is the single digit that the free giveaway coupon code starts and ends with? </li>
<li>What is the name of the _big_ Norwegian event for developers? </li>
<li>How much do you value product knowledge f.ex. ASP.NET MVC? When do you learn this? </li>
</ol>
<ol>Question 5 obviously cannot really be wrong, but I would appreciate an elaboration.</ol>
<ol>For a consolidation prize I got Google to get me 20 Google Wave invites to giveaway! Woot!</ol>
<p>So why did I get a subscription for TekPub and not Pluralsight, well mostly because a.t.m. TekPub has a few topics that really interests me, Git &amp; NHibernate, and one that is on its way that is very cool as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2009/12/11/tekpub-annual-subscription-giveaway/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Pluralsight On-Demand</title>
		<link>http://elegantcode.com/2009/12/06/pluralsight-on-demand/</link>
		<comments>http://elegantcode.com/2009/12/06/pluralsight-on-demand/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 19:34:20 +0000</pubDate>
		<dc:creator>Mark Nijhof</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Kaizen]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2009/12/06/pluralsight-on-demand/</guid>
		<description><![CDATA[A little while back David Star asked on Twitter if somebody knew an OSS project that he could use for a Pluralsight tutorial and I suggested my CQRS example. As it turned out he liked it and offered a trail subscription of the Pluralsight On-Demand library in return. And now I am writing about it, [...]]]></description>
			<content:encoded><![CDATA[<p>A little while back <a href="http://elegantcode.com/about/david-starr/" target="_blank">David Star</a> asked on Twitter if somebody knew an OSS project that he could use for a <a href="http://www.pluralsight.com/main/default.aspx" target="_blank">Pluralsight</a> tutorial and I suggested my CQRS example. As it turned out he liked it and offered a trail subscription of the Pluralsight On-Demand library in return. And now I am writing about it, so I guess that makes everybody happy.</p>
<p>Disclaimer: <em>I am not earning anything by writing this post and have no affiliation with Pluralsight what so ever. While it is true that David can decide to drop my blog from Elegant Code whenever he seems fit, this fact did not influence this post in any way <img src='http://elegantcode.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </em></p>
<p>After only having watched a few tutorials and one part of the Agile course I can already say that the quality and clarity is very high. The <a href="http://www.pluralsight.com/main/about/instructors.aspx" target="_blank">instructors</a> do a really good job in explaining the different topics in great detail and at the right pace.</p>
<h2>Content</h2>
<p>The content that Pluralsight On-Demand offers is very orientated towards the Microsoft product offerings, they include (but are not limited by); ASP.NET, ASP.NET MVC, WCF, WPF, .NET, SharePoint, BizTalk and Visual Studio. The offerings are divided into three different categories; <a href="http://www.pluralsight.com/main/olt/howtovideos.aspx" target="_blank">How-To Videos</a>, <a href="http://www.pluralsight.com/main/olt/tutorials.aspx" target="_blank">Tutorials</a> and <a href="http://www.pluralsight.com/main/olt/courses.aspx" target="_blank">Training Courses</a>. The time you spend on one subject in the different categories ranges from 5 minutes to 22 hours. </p>
<p>Of course I first went in and watched the recording David made while using my code (just to see what kind of bad things he had to say about it). I have to say I was pleased with the time spend watching it, given that I now know how to start using some techniques in Visual Studio 2010 that makes discovering and reviewing code and its structure a lot easier. And I learned this in only 20 minutes.</p>
<p>Currently I am watching the Agile course that again is presented by David, and again the structure and clarity is very good. An other good thing is that this course is split up into many smaller parts that you can skip to of replay, so there is no need to write down some time-code information in order to hear something again, or when you take a break.</p>
<p>After this I think I’ll take a look at some more indebt LINQ stuff.</p>
<h2>OSS and Design practices </h2>
<p>The content that I am missing a bit are describing / tutoring the various open source products and different coding patterns and practices. But I guess a.t.m. <a href="http://tekpub.com/" target="_blank">TekPub</a> and <a href="http://dimecasts.net/" target="_blank">DimeCasts</a> are good supplements to fill these gaps.</p>
<h2>Finally</h2>
<p>I would highly recommend looking at this when you have to learn a new or brush-up on a Microsoft technology. In the meantime I still have quit some time left on my trail, so I am going to enjoy some more tutorials, and my next post would hopefully be technical again <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2009/12/06/pluralsight-on-demand/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Introducing Guild 3 Software</title>
		<link>http://elegantcode.com/2009/10/20/introducing-guild-3-software/</link>
		<comments>http://elegantcode.com/2009/10/20/introducing-guild-3-software/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 15:22:59 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Kaizen]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2009/10/20/introducing-guild-3-software/</guid>
		<description><![CDATA[Three of the Elegant Coders, myself among them, have an announcement to make. Jason Grundy, Jarod Ferguson, and I have all left good, stable jobs to do something we’ve all wanted to do for a long time... 
We’re starting a software company!
Specifically, we have partnered together to open the doors on Guild 3 Software. Readers [...]]]></description>
			<content:encoded><![CDATA[<p>Three of the Elegant Coders, myself among them, have an announcement to make. <a href="http://elegantcode.com/about/jason-grundy/" target="_blank">Jason Grundy</a>, <a href="http://elegantcode.com/about/jarod-ferguson/" target="_blank">Jarod Ferguson</a>, <a href="http://elegantcode.com/about/david-starr/" target="_blank">and I</a> have all left good, stable jobs to do something we’ve all wanted to do for a long time.<a href="http://guild3.com/"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="guild3_logo_green_white_B" border="0" alt="guild3_logo_green_white_B" align="right" src="http://elegantcode.com/wp-content/uploads/2009/10/guild3_logo_green_white_B.png" width="240" height="109" /></a>.. </p>
<p>We’re starting a software company!</p>
<p>Specifically, we have partnered together to open the doors on <a href="http://guild3.com/">Guild 3 Software</a>. Readers of Elegant Code are probably familiar with our writing and interests, so hopefully you can guess what we’re about.</p>
<p>Jarod, Jason, and I are strong believers in the ideals set forth in the <a href="http://agilemanifesto.org/" target="_blank">Manifesto for Agile Software Development</a> and in the <a href="http://manifesto.softwarecraftsmanship.org/" target="_blank">Manifesto for Software Craftsmanship</a>. Our shared appreciation for the craft of software development has always drawn us into a huddle at user group meetings and other places where developers gather. We are excited to bring this passion to our customers and our products. Accordingly Guild 3 is founded on four core values:</p>
<blockquote><p>Integrity, Craftsmanship, Agility, and Community. </p>
</blockquote>
<p>You can read more about these, <a href="http://guild3.com/founding-values">our founding values, here</a>.</p>
<h3>But, What Are You Doing?</h3>
<p>Several things.</p>
<p>We are working on some exciting, super-secret product opportunities. Maybe they’ll be more on that another time.</p>
<p>In addition, Guild 3 is a professional services organization committed to bringing the ideals of software craftsmanship to our work. We are already working with a few clients and delivering software, of course!</p>
<p>Further, we are participating in community events, conferences, and other opportunities to learn from our peers. </p>
<h3>Regarding Elegant Code</h3>
<p>To be very clear, ElegantCode.com is not a business. It is a blogging community of professional software developers who simply enjoy each other’s contributions. We will all stay actively involved in ElegantCode.com and will retain our blogging sites here.</p>
<p>Wouldn’t have it any other way.</p>
<p>On a personal note, this doesn’t change my status as a Pluralsight instructor. That’s still a large part of my life. Hopefully I’ll get a chance to visit your company some day.</p>
<h3>Shameless Appeal for Work</h3>
<p>Surely you saw this coming!</p>
<p>If you have any software development projects you think might be a good fit for an intensely focused group of software craftsmen, give us a ring. </p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2009/10/20/introducing-guild-3-software/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How Do I Learn</title>
		<link>http://elegantcode.com/2009/03/07/how-do-i-learn/</link>
		<comments>http://elegantcode.com/2009/03/07/how-do-i-learn/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 23:03:46 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Butters]]></category>
		<category><![CDATA[Kaizen]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2009/03/07/how-do-i-learn/</guid>
		<description><![CDATA[You may have noticed that I didn&#8217;t get around to write that many blog posts over the last two months. While some of you may regret this, others would argue that the universe has been a much better place since then  . Anyway, I haven&#8217;t been picking my nose these last couple of months. [...]]]></description>
			<content:encoded><![CDATA[<p>You may have noticed that I didn&#8217;t get around to write that many blog posts over the last two months. While some of you may regret this, others would argue that the universe has been a much better place since then <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Anyway, I haven&#8217;t been picking my nose these last couple of months. I&#8217;ve been working on a small sample application (which is still very much work-in-progress) to straighten out some of my thoughts about application design and architectures. While working on this &#8220;home project&#8221;, I also get a chance to dive into some cool stuff like <a href="http://fluentnhibernate.org/" target="_blank">Fluent NHibernate</a>, <a href="http://structuremap.sourceforge.net/Default.htm" target="_blank">StructureMap</a>, <a href="http://www.martinfowler.com/dslwip/" target="_blank">DSL&#8217;s</a>, etc. While I&#8217;ve been having fun, I completely neglected to write blog posts. That&#8217;s something that I definitely want to improve over the next couple of months.</p>
<p>Anyway, back to the point that I&#8217;m trying to make here. The only way I can learn is by actually doing development work, whether its as big as a two year project or as small as a <a href="http://codekata.pragprog.com/2007/01/code_kata_backg.html" target="_blank">Code Kata</a>. In order to become a software craftsman someday, I need to practice. Lots and lots of practice.</p>
<p>I also learn a lot from reading books, articles, blog posts, watching screencasts or video recordings from conferences and last but not least by reading code from respectful open-source projects. But in the end, they only sharpen my theoretical skills. In order to really challenge my thoughts, I need to be practicing.</p>
<p>Practice is what makes people craftsmen in other fields as well like surgeons, plumbers, repairmen, etc.. But for some reason, developers think that they can sit back, write code from nine to five and muddle on. While there is a time and place for everything in our lives, this particular attitude makes that the state of our profession can be much compared to the dark ages. We need to become better at what we do and who we are.</p>
<p>Somehow related, I completely agree with <a href="http://blog.objectmentor.com/articles/2009/02/27/whiners-that-fail" target="_blank">this blog post</a> from Uncle Bob where he talks about being responsible for your own career.</p>
<blockquote><p><em>YOU, and NO    ONE ELSE, is responsible for your career. Your employer is not responsible for it. You should not depend on your employer to advance your career. You should not depend on your employer to buy you books, it’s great if they do, but it’s not really their responsibility. If they won’t buy them, YOU buy them! It’s not your employers responsibility to teach you a new language. It’s great if they send you to a training course, but if they don’t YOU teach the language to your self!</em></p></blockquote>
<p>Every book I&#8217;ve ever read about software development is a book that I bought myself from my own money. All the magazines I&#8217;m subscribed to, I pay from my own pocket. I&#8217;m responsible for my own learning, and I&#8217;m willing to invest whatever it takes to accomplish that. Whenever I want to learn something new, I&#8217;m not waiting for my employer to give me an opportunity. I make my own opportunities!</p>
<p>I realize I&#8217;m a bit late for the previous Butter&#8217;s Monthly Bone. I can only hope that Butters won&#8217;t eat me alive <img src='http://elegantcode.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2009/03/07/how-do-i-learn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Primer on ALM in the Microsoft Stack</title>
		<link>http://elegantcode.com/2008/10/16/a-primer-on-alm-in-the-microsoft-stack/</link>
		<comments>http://elegantcode.com/2008/10/16/a-primer-on-alm-in-the-microsoft-stack/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 05:58:42 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Kaizen]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Unit Testing]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2008/10/16/a-primer-on-alm-in-the-microsoft-stack/</guid>
		<description><![CDATA[By now I you&#8217;ve likely heard the term ALM. For the uninitiated, here is the latest from Wikipedia.
Application lifecycle management (ALM) regards the process of delivering software as a continuously repeating cycle of inter-related steps: definition, design, development, testing, deployment and management. Each of these steps needs to be carefully monitored and controlled.

Does this sound [...]]]></description>
			<content:encoded><![CDATA[<p>By now I you&#8217;ve likely heard the term ALM. For the uninitiated, here is the latest <a href="http://en.wikipedia.org/wiki/Application_Lifecycle_Management" target="_blank">from Wikipedia</a>.</p>
<blockquote><p><b>Application lifecycle management (ALM)</b> regards the process of delivering <a href="http://en.wikipedia.org/wiki/Software">software</a> as a continuously repeating cycle of inter-related steps: definition, design, development, testing, deployment and management. Each of these steps needs to be carefully monitored and controlled.</p>
</blockquote>
<p>Does this sound familiar? It should. This is YAW2QH2DS (Yet Another Way to Quantify How to Deliver Software). This smacks of other big acronyms you may be familiar with like CMMI or *UP.</p>
<p> <font size="5"></font>
<p><font size="5"></font>I don&#8217;t mean to trivialize this with curmudgeonly developer attitude. The idea of measuring our organization&#8217;s maturity level in the software delivery craft matters. It matters because successful small companies typically get bigger, and the challenge to every one of these organizations is how to stay successful as they struggle with issues of scaling up. It matters because it isn&#8217;t good enough to compile and run software. It needs to work well, solve a good problem, and actually be delivered into the hands of users. </p>
<p>Measuring our organization&#8217;s mastery of delivering great software is also important for organizations needing to get back to a good solid quality baseline. When things get big quickly without a control mechanism (companies, code bases, my belly, etc.) they trend toward entropy. ALM maturity can help provide that control mechanism.</p>
<p>Don&#8217;t take that the wrong way. It am not saying, &quot;Let&#8217;s use a manager&#8217;s tool to measure and manipulate those pesky developers.&quot; </p>
<p>Quite the opposite, what I am really saying is closer to, &quot;Imagine never having to explain to management that unit tests are a good thing and worth the effort.&quot; </p>
<p>If we have a common reference for measuring our collective skills, we can agree collectively that we can improve in certain areas.</p>
<p>What if (brace yourself) the framework itself (the one your CIO bought off on) required that unit tests, measured code coverage, automated builds, and automated testing were present in your delivery cycle on order to be level 2? Now we&#8217;re cooking with a little more gas, eh?</p>
<h2>Microsoft and ALM</h2>
<p>So, guess what? Microsoft makes tools for software developers. Big news, but there are lots of tools that others in your organization use to complete the delivery cycle: System Center, MS Project, Project Server, Portfolio Server, etc. These are the tools used by people in your company up and down stream of developers in the delivery lifecycle. Go ahead and resent them, but wouldn&#8217;t it be nice if these things were used <em><strong>well</strong></em> and worked more cohesively with <em>your</em> tools?</p>
<p>There isn&#8217;t a terribly cohesive story when flowing things between these tools (phases of the ALM cycle) but they are getting there. The real value here should be:</p>
<ul>
<li>Tools that are frictionless to their primary users. </li>
<li>Tools optimized for the specialist using them. Whether this is developers, project managers, program managers, IT helpdesk, system administrators, developers, or testers. </li>
<li>Tools that seamlessly integrate, allowing passing the products of these tools between each other. </li>
</ul>
<p>Obviously, Microsoft has a strong story for these tools as individual solutions. In the last few years, Microsoft tools have actually started to integrate more easily and this is why. Integrating them up and down stream to complete the ALM story will be a significant effort going forward. The Visual Studio Team System story is a particularly strong start for Microsoft in pursuing an integrated ALM line. The effort is underway to integrate the ALM story across all disciplines.</p>
<h2>It&#8217;s Not Just a Tool Story</h2>
<p>&quot;Great,&quot; you&#8217;re thinking. So this is a part of world domination through tooling? Not exactly. The fact is that the tools themselves are being built these days to embrace many different processes or methodologies (read TFS Process Templates here). Project Management tooling is certainly due for an overhaul, but System Center has some shiny newness that is heading in the right direction. </p>
<p>As long as the base tools themselves continue supporting extensibility hooks, the community should be able to plug and play as desired. The key will be in getting full integration supported in the community tools. As an example, we really should put in the hooks for nUnit to integrate with Team Build for integrated reporting.</p>
<p>The bottom line here is the tools are getting more extensible along the stack as well. This means that we should be able to support any wonderful, decrepit, promising, or ill-advised silver-bullet process or technique that comes along. &quot;Now don&#8217;t that make you sweat chickens&quot;, my dad would say.</p>
<h2>The ALM Maturity Model</h2>
<p>So what about the model itself? Exactly what is this all about?</p>
<p>The basic ALM model endorsed by Microsoft includes the following Practice Areas. </p>
<ul>
<li>User Experience (UX) </li>
<li>Requirements Management </li>
<li>Quality &amp; Test </li>
<li>Code Quality </li>
<li>Architecture &amp; Design </li>
<li>Project Management </li>
<li>Software Configuration Management </li>
<li>Deployment &amp; Operations </li>
<li>Data Management </li>
</ul>
<p>What I like about these areas is that it doesn&#8217;t really matter whether you are a waterfall-driven Inicorp Employee or dyed-in-the-wool Agilista, these Practice Areas can typically be agreed upon as important. We can also all agree that being mature (read: competent) in these areas is important.</p>
<p>How mature are you? Microsoft provides an <a href="https://www.microsoft.com/assess/#" target="_blank">online survey for evaluating the ALM maturity in your organization</a> where you can see a measured range of maturity for each Practice Area and specific competencies within each area. </p>
<p>Think about the questions you would ask to gauge competency in these Practice Areas. I was surprised to learn that the online survey asked many of the same questions I would have asked. Nice.</p>
<h2>So?</h2>
<p>So, what&#8217;s the big deal and why is this different? I find a couple of things interesting.</p>
<ul>
<li>Several tool vendors are embracing similar ALM models, not just MSFT.</li>
<li>CMMI is so 8 years ago.</li>
<li>It&#8217;s not about tools. It is about tools that support the business we need to do.</li>
<li>There&#8217;s a boatload of money coming behind this. Your executives will hear about this. This ALM TLA will come up in a meeting.</li>
<li>This framework actually embraces, rather than eschews, Agile Software Development practices. Seriously. </li>
<li>It gives your department lead something to brag about when you write unit test (don&#8217;t undervalue this one).</li>
</ul>
<p>This has a chance. This has a chance to actually improve the craft and to improve the bottom line at the same time, and that&#8217;s a powerful combination.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2008/10/16/a-primer-on-alm-in-the-microsoft-stack/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Changing Source Control as a Kaizen Event</title>
		<link>http://elegantcode.com/2008/09/27/changing-source-control-as-a-kaizen-event/</link>
		<comments>http://elegantcode.com/2008/09/27/changing-source-control-as-a-kaizen-event/#comments</comments>
		<pubDate>Sat, 27 Sep 2008 06:23:36 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Kaizen]]></category>
		<category><![CDATA[Source Control]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2008/09/27/changing-source-control-as-a-kaizen-event/</guid>
		<description><![CDATA[I often have opportunities to work with organizations in transition to Team Foundation Server for their source control solution. Most large organizations (and many smaller ones) look for a migration route for their source code that allows them to retain history and their current merge/branching model. In heavily regulated environments, this is often a fundamental [...]]]></description>
			<content:encoded><![CDATA[<p>I often have opportunities to work with organizations in transition to Team Foundation Server for their source control solution. Most large organizations (and many smaller ones) look for a migration route for their source code that allows them to retain history and their current merge/branching model. In heavily regulated environments, this is often a fundamental requirement, in fact. Accordingly, there are many packaged conversion tools out there to serve this need. There are Team System SCC conversion utilities for IBM’s Clear Case, VSS, SVN, StarTeam, CVS, Perforce, and others. The mere existence of these tools lets me know that migrating source code in the same structure it previously existed is considered “good” by many.<img style="margin: 5px" height="240" src="http://blogs.itworldcanada.com/shane/files/2008/01/kaizen2.gif" width="136" align="right" /></p>
<p>My default recommendation is to do a clean, fresh, manual import rather than to migrate source code with existing structure. I have several reasons for this including:</p>
<ul>
<li>Code migration is more complicated and it will take longer (cost more). </li>
<li>Tools have flaws. Everything may not turn out the way you think it will when you have been branching and labeling in that old system for 6 years. </li>
<li>The majority of code file comparisons occur at the tail end of source control. Very rarely is a comparison made on a code file in SCC older than 60 days. </li>
<li>The reason you want to retain history is to blame <a href="http://www.dontbetheguy.com/home.html" target="_blank">that guy</a>. </li>
<li>Your branching model was probably over complicated anyway. </li>
<li>History for auditing purposes can be found in the old system, kept online and read-only for a year or two if necessary. </li>
</ul>
<p>But the number one reason I don’t want to bring the source code over in the same model is because this is a golden opportunity to improve.</p>
<p>It amazes me that the structure of a SCC system reflects the nature of the organization that created it. I have learned, however, that it does. Are management decisions hectic? Are releases going out buggy? Look for lots of deep branching structures. Are developers working in separate branches on the same release? Look for lots of cherry pick merges.</p>
<p>It is a fundamentally healthy exercise to pull a large pile of source code out of the old system and bring it into the new one one project at a time, ensuring that each one is self contained. In other words, break the dependencies between projects and all of those weird references to resources outside the boundary of the solution.</p>
<p>It comes down to this, why are you making this tooling change in the first place? Odds are that the tool change is being done because the team wants things to get better. Whether you are moving to Team System, SVN, or something else, you are moving to a new system to make an improvement. Given the desire to improve, take advantage of the opportunity to actually make things better rather than to persist old dysfunctions into a shiny new tool.</p>
<p>As a manager of development teams myself, I found great value in migrating source control every 2 years or so, just to cause such a spring cleaning event.</p>
<p>And the number one thing you can do to make this a true <a href="http://en.wikipedia.org/wiki/Kaizen" target="_blank">Kaizen</a> event? Ensure that each and every project (that is, every *.*proj file) gets build built via a CI build before adding another project to the system.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2008/09/27/changing-source-control-as-a-kaizen-event/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
