<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Kurt's Blog</title>
	<atom:link href="http://kurthaeusler.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://kurthaeusler.wordpress.com</link>
	<description></description>
	<lastBuildDate>Wed, 28 Oct 2009 06:10:11 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='kurthaeusler.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/4afb3cde80ed0524b0db11da02775b9c?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Kurt's Blog</title>
		<link>http://kurthaeusler.wordpress.com</link>
	</image>
			<item>
		<title>.NET Open Space 2009</title>
		<link>http://kurthaeusler.wordpress.com/2009/10/28/net-open-space-2009/</link>
		<comments>http://kurthaeusler.wordpress.com/2009/10/28/net-open-space-2009/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 05:54:00 +0000</pubDate>
		<dc:creator>Kurt Häusler</dc:creator>
				<category><![CDATA[.NET Open Space]]></category>
		<category><![CDATA[#netos2009]]></category>

		<guid isPermaLink="false">http://kurthaeusler.wordpress.com/?p=86</guid>
		<description><![CDATA[The weekend before last, I went to the second .NET Open Space in Leipzig. Since the last one I have actually attended two other open spaces, a Software Architecture one in Düsseldorf, and another .NET Open Space in Ulm, which were great, but I never got around to blogging about them.


Me at the Session Planning [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kurthaeusler.wordpress.com&blog=3857387&post=86&subd=kurthaeusler&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">The weekend before last, I went to the second .NET Open Space in Leipzig. Since the last one I have actually attended two other open spaces, a <a href="http://archnet.mixxt.de/">Software Architecture</a> one in Düsseldorf, and another <a href="http://ulm.netopenspace.de/2009/MainPage.ashx">.NET Open Space</a> in Ulm, which were great, but I never got around to blogging about them.</p>
<div class="image" style="text-align:justify;">
<div>
<p style="text-align:center;font-size:small;">Me at the Session Planning on Day One</p>
</div>
<p style="text-align:center;"><img src="http://farm4.static.flickr.com/3516/4039806154_3ca3c4ca05.jpg" alt="Me at the Session Planning on Day One" /></p>
<div>
<p style="text-align:center;font-size:xx-small;"><a rel="cc:attributionURL" href="http://www.flickr.com/photos/netopenspace/">http://www.flickr.com/photos/netopenspace/</a> / <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/2.0/">CC BY-NC-SA 2.0</a></p>
</div>
</div>
<p style="text-align:justify;">On the first day the sessions I attended were:</p>
<ul style="text-align:justify;">
<li>Requirements management</li>
<li>DDD</li>
<li>Making software development more attractive</li>
<li>Scrum</li>
<li>CQS and event sourcing</li>
</ul>
<p style="text-align:justify;">On day two I attended:</p>
<ul style="text-align:justify;">
<li>Technology independent architecture</li>
<li>A coding dojo (as audience member rather than hands-on participant)</li>
<li>REST</li>
<li>Developer training</li>
</ul>
<p style="text-align:justify;">The making software development more attractive one was interesting. I still maintain we should be raising the bar rather than lowering it, and encouraging fewer of the right people rather than simply more people. Quality over quantity right? This was an issue in the late 90s when computer science departments started dropping Scheme for Java, concentrating less on computer science theory and more on churning out applets and web pages for the &#8220;WWW boom&#8221;. When the bubble burst, a lot of hipsters who couldn&#8217;t code had to find new careers. Read CACM and you will see that universities still want those days back, when COSC 101 was one of the bigger must-do classes at uni, but I think industry seems a lot more concerned with the quality of developers than the quantity, and university computer science departments, as in other subjects should be concentrating on the theoretical foundations of computer science,  software engineering principles, and further exploration of ideas that are still considered academic and have not yet reached mainstream industry acceptance. The university should not try and replicate the workplace and churn out workers. They should not be vocational schools. You only have a few years at uni, but you have a whole career in the workplace to pick up more practical experience on larger, longer projects with real customers etc. In short, don&#8217;t worry about making it more attractive by broadening its appeal (i.e. lowering the bar). If you do want to make it more attractive, make it more professional. The right people will always consider software development a career, but until software development becomes a first class chartered engineering discipline, or something with equivalent professionalism, then the brightest minds will probably be more attracted towards more &#8220;nobler&#8221; vocations such as (real) engineering, accountancy, law or medicine.</p>
<p style="text-align:justify;">The making software development more attractive track was large enough that it should have been a fishbowl I feel. The same voices dominated that particular discussion. The only way anyone got a chance to talk was by interrupting someone else, and everyone who spoke felt compelled to talk really quickly so they could get their point across before they were interrupted.</p>
<p style="text-align:justify;">CQS and Event Sourcing was a topic suggested by me. (Yes I should have specified CQRS) I had hoped that someone had practical experience implementing these patterns in .NET and was hoping to hear what tools they used, what issues they had etc. Nobody had such practical experience with it, but a small group of us had a nice discussion about it anyway.</p>
<p style="text-align:justify;">The coding dojo was interesting. It was based on <a href="http://codingdojo.org/cgi-bin/wiki.pl?KataPotter">Kata Potter</a>. I was initially too scared to participate, assuming that much smarter people than me would bang out a solution in 5 minutes. But after watching it for a bit, I almost felt like jumping up and taking over and at least getting them started. They were too busy thinking about the tricky cases, and what sort of data structures they needed for the internal algorithm, and didn&#8217;t really get anywhere in the hour I watched them. Each person started writing out a test, which was good, but not really clearly worded to specify what behaviour is expected. As a result it was not always clear how many things the test was supposed to be testing. When it came to implementing the functionality to make the test pass, they kept on going back and forward changing how the data should be put in to the system, and getting side tracked in discussion about details. I am pretty sure I would have done a better job, mostly by naming my tests better, so it is clear what is being tested, and implementing just the minimum functionality to make the test pass without worrying too much about whether the data structures are ideal for the tricky cases. I would probably start off with a Book and an Order class, and if it turns out to be the wrong approach I would just change it later once I have a deeper understanding of things. But I can&#8217;t really make any such claims until I try it for myself, which I intend to do, sometime. I might even try it with Haskell or F#.</p>
<p style="text-align:justify;">REST was interesting. It was mostly focused on how it can be done with WCF and ASP.NET MVC, rather than REST principles themselves.</p>
<p style="text-align:justify;">The discussion about developer training was interesting too, although I was pretty tired by that stage. I assumed it was mostly about how a developer can improve their lives and career, as they specifically mentioned during planning about discussing options or possible future prospects for older developers. It seemed to focus mainly on how companies can improve their businesses by sending their developers off to training, which to me is a totally different thing to developers setting their own goals and shaping their own careers by choosing their own training options. I would have preferred more discussion on the latter.</p>
<p style="text-align:justify;">In the end however, I think I am starting to lose interest or motivation in community participation. Probably because most of the &#8220;community&#8221; I have been associating with is fairly .NET focused, and discussing fairly new tools and techniques, whereas at work things seem to moving more towards the old, legacy, C++ maintenance work. It is hard to contribute to a discussion on, say DDD (which is in no way .NET specific at all) when you only have theoretical understanding of it, and no current practical experience with it in the workplace. Unfortunately there was no track on maintenance of old legacy C++ software, but even if there was I feel I would have more questions than answers. For a similar reason I am less motivated to attend (.NET) user group meetings, it feels a little disheartening to see all these cool new toys and know there is no place for them at work, and it feels like a poor use of my time to start learning about things I am unlikely to get a chance to apply practically to the delivery of customer value. Perhaps if there were something with a less specific focus, such as a Software Craftsmanship user group, I might find that a little more inspiring and motivating, and be able to apply it directly to my job in software maintenance.</p>
<p style="text-align:justify;">Anyway, thanks a lot to the organisers of the .NET Open Space 2009!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kurthaeusler.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kurthaeusler.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kurthaeusler.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kurthaeusler.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kurthaeusler.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kurthaeusler.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kurthaeusler.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kurthaeusler.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kurthaeusler.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kurthaeusler.wordpress.com/86/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kurthaeusler.wordpress.com&blog=3857387&post=86&subd=kurthaeusler&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://kurthaeusler.wordpress.com/2009/10/28/net-open-space-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efed374137be143ef568d2a224ad9736?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kurt</media:title>
		</media:content>

		<media:content url="http://farm4.static.flickr.com/3516/4039806154_3ca3c4ca05.jpg" medium="image">
			<media:title type="html">Me at the Session Planning on Day One</media:title>
		</media:content>
	</item>
		<item>
		<title>Becoming a Software Maintainer</title>
		<link>http://kurthaeusler.wordpress.com/2009/09/10/becoming-a-software-maintainer/</link>
		<comments>http://kurthaeusler.wordpress.com/2009/09/10/becoming-a-software-maintainer/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 04:56:58 +0000</pubDate>
		<dc:creator>Kurt Häusler</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://kurthaeusler.wordpress.com/?p=79</guid>
		<description><![CDATA[I have been at my current employer for six months now, and it&#8217;s clear that it&#8217;s not a software development job at all. It&#8217;s a software maintenance job. I have noticed a lot of differences. There seems to be a lot less opportunities for creativity, or innovative ideas, as everything has already been decided. It [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kurthaeusler.wordpress.com&blog=3857387&post=79&subd=kurthaeusler&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">I have been at my current employer for six months now, and it&#8217;s clear that it&#8217;s not a software development job at all. It&#8217;s a software maintenance job. I have noticed a lot of differences. There seems to be a lot less opportunities for creativity, or innovative ideas, as everything has already been decided. It reminds me a lot of the assignments we would set for the first year computer science students at uni. We provided the skeleton of the program, a bit more than method stubs, and allowed the students to fill in the gaps. In fact, in my job, even the gaps are filled in, and I just make a few changes here and there. Another difference is in the flow of delivering value. I am used to hammering out the tests, hammering out the code to make them pass, running all tests and checking everything in, and it all feels like delivering value. I hardly ever used the debugger, only in situations where something really weird was going on. Now, I basically start off in the debugger, spend a few days stepping through code, writing down notes, keeping a note of what methods and classes really do (as opposed to what they are called, which is more related to what they might have done some years ago), and trying to link things back to domain concepts if possible (although that&#8217;s not often so useful, another difference between development and maintenance seems to be that technical aspects of programming e.g. classes, xml, bytes, etc become the actual domain concepts rather than orders, customers, products etc). A lot of time is spent waiting for some expert, usually one of the other maintainers that developed the software, to explain something, and at the end of the week the change is perhaps less than 20 lines. I felt like something was wrong, as if such a small part of my time was spent truly delivering value. I was comparing apples to oranges again. Something that would have taken half a day in a development context, seems to take roughly 10 times as long in a maintenance context. But this is nothing new. Everyone knows that maintenance is more expensive than development, that is why software is often developed as projects, with fixed time-spans for development and maintenance before it is retired. But sometimes the business reality is that is in fact cheaper to continually develop something than start again from scratch. I have also heard it said that replacing a legacy system can also be expensive. So there is clearly a business case for extended maintenance of mature software products.</p>
<p style="text-align:justify;">I wasn&#8217;t too interested at first, I wanted to be a craftsman, a creator of new software, a developer. I wanted to play a part in the high level architecture, and be involved in the decision making from a project&#8217;s very beginnings. However, software maintenance does have something to offer. It seems that there is huge money in it for a start. Customers see it as a lower risk, quicker turnaround alternative to developing a new solution. The fact that it is so expensive suggests to me that there are still some unsolved problems. Considering myself as a developer, yet engaging day-to-day in maintenance felt frustrating, so I am accepting reality, and am now considering myself a software maintainer.</p>
<p style="text-align:justify;">However I am still a <a href="http://en.wikipedia.org/wiki/NNPP">NNPP</a> after six months, and that is unsatisfying. I take up more of the original developer&#8217;s time getting him to explain something than if he were to simply perform the maintenance himself. It is a classic case of Brook&#8217;s &#8220;Mythical Man Month&#8221;. An <a href="http://www.bcs.org/server.php?show=ConWebDoc.2770">article</a> in the BCS mentions &#8220;Whatever the maintenance required, it must be fully understood by the maintainer, including the impact of the maintenance in terms of cost and effort to implement.&#8221; Everything I read says it makes more sense to have the original developers perform the maintenance, and adding more developers simply makes it slower, and that if a company really feels that they have so much to do that they need new developers, then that new functionality, should be implemented by the new developers in a new project. However, the people who make decisions obviously have access to information that confirms that in this case, it does in fact make more financial sense to add new developers as maintainers, rather than start them on a new development effort.</p>
<p style="text-align:justify;">So we can therefore assume that the company has done its risk management, weighed the pros and cons of both approaches, and decided on one. As a developer that aspires to craftsmanship principles it raises a few questions relating to optimizing my personal satisfaction with the job and ideally, mitigating some of the company&#8217;s risks in using new developers as maintainers.</p>
<ul style="text-align:justify;">
<li>As a software craftsman in a software maintainer role, what can I offer the company, that the original developers cannot?</li>
<li>How can I be just as valuable and productive to the company as the original developers?</li>
<li>According to one interpretation of the Pareto principle, 20% of employees are responsible for 80% of the value. How can I ensure that I am in that 20%?</li>
</ul>
<p style="text-align:justify;">You see, it is not, and should not, be sufficient for me to be a slightly less competent, less effective and less valuable version of the people who wrote the original software. For me the answer would seem to be, find a way to complement, rather than compete with the original developers. It does not make sense to perform the same actions in the same way as the original developers. We have different strengths and weaknesses. Strengths of the original developers, which can be seen as weaknesses of the new maintainers include:</p>
<ul style="text-align:justify;">
<li>Extensive domain understanding.</li>
<li>Extensive understanding of the code base.</li>
<li>Moral authority.</li>
<li>Embedded in company culture.</li>
</ul>
<p style="text-align:justify;">Strengths of new maintainers, which could be seen as weaknesses of the original developers include:</p>
<ul style="text-align:justify;">
<li>More recent exposure to other domains.</li>
<li>More recent exposure to other coding styles and languages.</li>
<li>More recent exposure to different cultures and ideas in general.</li>
<li>Fresh start, no company history categorizing or constraining them.</li>
<li>Not so solidly embedded in the company culture, already liberated from their &#8220;comfort zone&#8221;.</li>
</ul>
<p style="text-align:justify;">I was looking for analogies, from historical craftsmanship, to see what general patterns I could notice, but nothing seemed to fit quite right. Usually the thing being designed or maintained exhibit much less complexity and variation than a million line software product, such as shoes, or fountain pen nibs. Often where the product really is complex, such as a car, we start to move away from craftsmanship, and we start looking at software mechanics. Even in this case, a car is still less varied than software, and the mechanic doesn&#8217;t have to play around with it for days to discover how it works, he just reads the manual, and looks up tables of symptoms and applies the solution suggested by the manufacturer. That is an idea that could be explored further in the context of software, but I think its usefulness is limited. I could definitely say that a little more documentation would make maintenance easier, but in this case it would cost more that it would bring to produce such documentation, and would suffer the classic disadvantage of always being more out of date than the software itself. It does lend itself to underscore the importance of design techniques such as Domain Driven Design, particularly the use of Ubiquitous Language, to enable source code to be a tool that aids in domain understanding, rather than requiring huge efforts to be understood for its own sake.</p>
<p style="text-align:justify;">One useful analogy I did think of was the boiling frog analogy. The original developers are like frogs placed in cool water that is slowly brought to boil, and the new maintainers are like frogs placed directly in boiling water. The former experiences change slowly over time, and finds it difficult to notice such change occurring, and accepts the current situation as normal, because it is what they are accustomed to. The latter frog notices things straight away, anything that seems not quite right, is immediately apparent.</p>
<p style="text-align:justify;">So I am lead to the following ideas about how and where new developers might get their chance to shine on a maintenance team, alongside the original developers:</p>
<ul style="text-align:justify;">
<li>Customer facing tasks and analysis. &#8220;I am still new to the travel industry, but in the automotive and health care industries we solve such problems by &#8230; have you ever thought of doing it that way?&#8221;</li>
<li>Change and risk management.</li>
<li>Retrospectives.</li>
<li>Architecture and software design. &#8220;Of course that is going to be difficult to solve in that iterative loop. In my last job we used a lot of LISP and recursion so I believe that if we used recursion here&#8230;&#8221;</li>
<li>Things independent of the domain, such as Quality Assurance (not QC/Testing but real QA), Technical Debt management, code reviews, optimization, porting, integration, deployment.</li>
<li>Representing the company at conferences, and in writing on blogs and in magazines and journals etc, on technical rather than domain related issues.</li>
</ul>
<p style="text-align:justify;">However, this is not a list that I would hand to the employer and demand that changes are made to suit me. If the employer felt that changes were necessary, he would make them himself. A software craftsman&#8217;s career is his own responsibility. He has to carve out his own role, and define the way he will deliver value, within the constraints he his given.</p>
<p style="text-align:justify;">In my case, working within an agile/iterative development process, where we get stories, divide them up into tasks, and tackle them one after the other, it should prove to be somewhat challenging to carve out a role that allows me to answer my three questions above, but a rewarding challenge, one that I, as part of my recent acceptance of my role as maintainer, am quite excited and willing to take on, not so much as an obstacle, but as an opportunity to embrace change on a personal level, and most importantly, to increase the value that I can deliver for my employer.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kurthaeusler.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kurthaeusler.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kurthaeusler.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kurthaeusler.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kurthaeusler.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kurthaeusler.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kurthaeusler.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kurthaeusler.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kurthaeusler.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kurthaeusler.wordpress.com/79/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kurthaeusler.wordpress.com&blog=3857387&post=79&subd=kurthaeusler&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://kurthaeusler.wordpress.com/2009/09/10/becoming-a-software-maintainer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efed374137be143ef568d2a224ad9736?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kurt</media:title>
		</media:content>
	</item>
		<item>
		<title>Review of &#8220;Principles of Software Engineering Management&#8221;</title>
		<link>http://kurthaeusler.wordpress.com/2009/09/02/review-of-principles-of-software-engineering-management/</link>
		<comments>http://kurthaeusler.wordpress.com/2009/09/02/review-of-principles-of-software-engineering-management/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 04:37:57 +0000</pubDate>
		<dc:creator>Kurt Häusler</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://kurthaeusler.wordpress.com/?p=72</guid>
		<description><![CDATA[
I recently finished reading Tom Gilb&#8217;s &#8216;Principles of Software Engineering Management&#8217;, a book, published in 1988, that I started reading a few months ago for a uni assignment. At the time I was not too impressed. A lot of what is written in the book seemed to take software development in opposite directions to what [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kurthaeusler.wordpress.com&blog=3857387&post=72&subd=kurthaeusler&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;"><img class="aligncenter size-full wp-image-77" title="bookcover" src="http://kurthaeusler.files.wordpress.com/2009/09/bookcover.png?w=315&#038;h=480" alt="bookcover" width="315" height="480" /></p>
<p style="text-align:justify;">I recently finished reading Tom Gilb&#8217;s &#8216;Principles of Software Engineering Management&#8217;, a book, published in 1988, that I started reading a few months ago for a uni assignment. At the time I was not too impressed. A lot of what is written in the book seemed to take software development in opposite directions to what I have come to appreciate as almost being best practices. Development teams today tend to be reducing the distance to the customer and being formed by tearing down the walls between analysts, designers, developers and testers, and working together to deliver functionality that satisfies customer requirements with minimal waste. The book however defines the following roles: Infotect, Softect, Software engineer, Specialist software engineer, Softcrafter, Moderator and Inspector. According to the book, I, as a &#8220;Softcrafter&#8221; presumably, would be &#8220;a software craftsperson who constructs software according to the design of others.&#8221;</p>
<p style="text-align:justify;">But hold on, isn&#8217;t that what the compiler does? I am however pleasantly surprised to see the term &#8220;craftsperson&#8221; used. I suppose I could qualify as a Software Engineer who: &#8220;translates required software system attributes into appropriate designs capable of meeting those requirements&#8221;. I assume those designs are documentation rather than source code, or what would the softcrafter do?</p>
<p style="text-align:justify;">Much of the book introduces Gilb&#8217;s Evolutionary Delivery Method, or Evo, which develops software increments or iterations just like todays agile and lean teams. In this respect Gilb was one of the first to present such an idea. (More information on the history of Iterative and Incremental Development can be read about <a href="http://www2.umassd.edu/SWPI/xp/articles/r6047.pdf">in this excellent PDF</a>.)</p>
<p style="text-align:justify;">Quality attribute specifications are another worthy aspect of the book. Most of the time requirements (regardless of methodology) are either/or type things. A feature is either present or not. Gilb advocates an additional set of requirement specifications that are expressed in quantifiable measures. They express how well a solution satisfies a requirement rather than simply whether it does or not, and can be tracked over time to see how future changes impact on previously completed solutions. I find this concept could be a powerful tool for setting constraints on both external and internal quality attributes like technical debt levels, that so often get neglected in the relentless pursuit at delivering customer value today (at the expense of delivering it in six months.) Another good article that explores this concept further is Ryan Shriver&#8217;s <a href="http://accu.org/index.php/journals/1534">Measureable Value with Agile</a></p>
<p style="text-align:justify;">Inspection is another interesting topic. The book borrows mostly from the work of Michael Fagan at IBM. I do find it to be rather heavily focused on inspecting for errors in documentation though; errors in the software itself are briefly mentioned as an afterthought. I think in the meantime we have come to realize that documentation is always going to be a vaguer, less correct, lagging version of the software itself, and by realizing this we can minimize waste by focusing on software as design, treating documentation as a temporary guide rather than spending a lot of effort keeping it definitive and up to date when it often never gets read, and by reducing the distance between the customer and the developers, and therefore the need for some much documentation in the first place.</p>
<p style="text-align:justify;">I am however inspired by the use of inspection as a tool for identifying and quantifying internal software quality attributes that can&#8217;t be measured easily (yet) with an automated tool such as antipatterns, code smells and technical debt, as well as a learning tool, to help get new maintainers up to speed on large code bases.</p>
<p style="text-align:justify;">Throughout the book, and in the entire last section, one can find all sorts of case studies, tips, and references to other literature.</p>
<p style="text-align:justify;">Overall, I find it worth reading. However don&#8217;t forget it was published in 1988, so parts of it may seem old fashioned, or contrary to what people now understand works well in software development, and have been further, and arguably better explored by others in the meantime, particularly in the agile and lean communities. However, theres a lot here, such as quality attribute specifications, that are still today under-discussed, and in those areas, Gilb&#8217;s book remains not only relevant but authoritative.</p>
<p style="text-align:justify;">I have started reading another of Gilb&#8217;s books, &#8220;<span id="btAsinTitle">Competitive Engineering: A Handbook For Systems Engineering, Requirements Engineering, and Software Engineering Using Planguage&#8221;. It describes itself more as a handbook, so I am still unsure if I will continue reading it cover to cover, or wait until I my employer implements planguage and I can use it as a reference.</span></p>
<p style="text-align:justify;"><span><br />
</span></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kurthaeusler.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kurthaeusler.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kurthaeusler.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kurthaeusler.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kurthaeusler.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kurthaeusler.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kurthaeusler.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kurthaeusler.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kurthaeusler.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kurthaeusler.wordpress.com/72/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kurthaeusler.wordpress.com&blog=3857387&post=72&subd=kurthaeusler&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://kurthaeusler.wordpress.com/2009/09/02/review-of-principles-of-software-engineering-management/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efed374137be143ef568d2a224ad9736?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kurt</media:title>
		</media:content>

		<media:content url="http://kurthaeusler.files.wordpress.com/2009/09/bookcover.png" medium="image">
			<media:title type="html">bookcover</media:title>
		</media:content>
	</item>
		<item>
		<title>A couple of my open source projects.</title>
		<link>http://kurthaeusler.wordpress.com/2009/08/25/a-couple-of-my-open-source-projects/</link>
		<comments>http://kurthaeusler.wordpress.com/2009/08/25/a-couple-of-my-open-source-projects/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 04:18:30 +0000</pubDate>
		<dc:creator>Kurt Häusler</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://kurthaeusler.wordpress.com/?p=70</guid>
		<description><![CDATA[I recently uploaded a couple of old, small, unimpressive open source projects to GitHub.
The first one, PolyDriver, I hacked together in 2003. It is a user space linux driver for PolyTrax powerline modems. I was pretty lucky to be able to convince the boss that Open Source was the way to go for the linux [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kurthaeusler.wordpress.com&blog=3857387&post=70&subd=kurthaeusler&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I recently uploaded a couple of old, small, unimpressive open source projects to GitHub.</p>
<p>The first one, <a href="http://github.com/kurthaeusler/PolyDriver/tree/master">PolyDriver</a>, I hacked together in 2003. It is a user space linux driver for PolyTrax powerline modems. I was pretty lucky to be able to convince the boss that Open Source was the way to go for the linux driver. It was a lot more straight-forward than the Windows 2000/XP one too. I don&#8217;t have a PolyModem lieing around to really test it, but maybe someone does, and the driver can be useful for them.</p>
<p>The other one, <a href="http://github.com/kurthaeusler/Kurts-NetSend/tree/master">Kurts NetSend</a>, (really needs a better name) is a replacement for the &#8220;net send&#8221; command that was removed in Vista. I wrote it because my employer at the time used that command to inform everyone of when morning tea was ready, and all the vista users were missing out. It was, and still is, also hosted on codeplex, and was a featured codeplex project on the MSDN Vista page for a while. I think it should work on Windows 7, but have not been able to test it out yet.</p>
<p>They both contain pretty ugly code, the NetSend one could probably be improved a bit, I would start by separating the gui and the backend, and perhaps doing a new WPF front end or something. Otherwise they are both pretty small and could be ideal starting points for someone who wants some practice with refactoring to clean code or something.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kurthaeusler.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kurthaeusler.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kurthaeusler.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kurthaeusler.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kurthaeusler.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kurthaeusler.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kurthaeusler.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kurthaeusler.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kurthaeusler.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kurthaeusler.wordpress.com/70/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kurthaeusler.wordpress.com&blog=3857387&post=70&subd=kurthaeusler&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://kurthaeusler.wordpress.com/2009/08/25/a-couple-of-my-open-source-projects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efed374137be143ef568d2a224ad9736?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kurt</media:title>
		</media:content>
	</item>
		<item>
		<title>Practice</title>
		<link>http://kurthaeusler.wordpress.com/2009/08/12/practice/</link>
		<comments>http://kurthaeusler.wordpress.com/2009/08/12/practice/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 05:42:21 +0000</pubDate>
		<dc:creator>Kurt Häusler</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://kurthaeusler.wordpress.com/?p=65</guid>
		<description><![CDATA[A lot of people on the Software Craftsmanship mailing list consider Practice to be not only an important part of Software Craftsmanship, but the main part. I have personally always had a bit of a love/hate relationship with practicing. When I was younger, that was my main way of learning how to program. I would [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kurthaeusler.wordpress.com&blog=3857387&post=65&subd=kurthaeusler&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>A lot of people on the Software Craftsmanship mailing list consider Practice to be not only an important part of Software Craftsmanship, but the main part. I have personally always had a bit of a love/hate relationship with practicing. When I was younger, that was my main way of learning how to <em>program</em>. I would sit there and go through tutorials, and dream up useless little example apps that I could use to explore a particular technology further. As time went on though, and I went through uni, and started full time work, all those technologies that I practiced became obsolete, but more importantly the practice didn&#8217;t really seem to teach me the fundamentals of what is really important in developing software: delivering value by understanding the business and communicating and collaborating with people. Sitting at home typing in source code with no value, and outside the constraints that guide the development of real software was fun, but only very superficially satisfying. A crude simile came to mind: it was like trying to learn about romance by masturbating. Sure the raw mechanics seem roughly similar, the technology is partially useful, but you are only really covering a small part of the issue. The entire human aspect is missing, the constraints are not there, all one really does is practices the easy bit: the typing in of source code. In fact, just as masturbation may in fact harm the ability to form real relationships, practicing may harm the ability to create real software (for example one may become so used to the freedoms of practicing alone on his own project, that he cannot deal with the real world constraints of business needs and working with others).</p>
<p>But I was just doing it wrong. Practicing is valuable, provided it emulates as close as possible the real world situation. You need to incorporate the planning aspect, the collaboration aspect, the delivering of value and business realities. Without those practice could do more harm than good.</p>
<p>One step I have taken to simulate planning for example, is the implementation at home, of a Kanban System to help balance the time I spend on practising with that on other household matters.</p>
<p><img class="aligncenter size-full wp-image-66" title="kanban" src="http://kurthaeusler.files.wordpress.com/2009/08/kanban.jpg?w=640&#038;h=480" alt="kanban" width="640" height="480" /></p>
<p>Each of us, my wife and I have a backburner as well as the Backlog that only shows the 4 most important items. Whoever has the yellow magnet in their backlog takes the next turn to Select an item from their backlog and move the corresponding post-it to the Selected column, provided there is a free slot. (The numbers in each section are the maximum number of items allowed in each section). At that moment the time is written on the post-it. When someone wants something to do, they choose an item from the Selected column, and move it to the In Progress column, writing once again the time on it.  When the item is complete, it will be moved to To Verify, if the item was originally posted by the other person, or directly to Done if you just finished one of your own tasks. Once an item is verified and done, the Lead Time (time from Selected to Done) and the Cycle Time (time from In Progress to Done) can be calculated and can be averaged and used later in optimization and statistics.</p>
<p>It seems to be working ok, although we have only just started using it.</p>
<p>As far as the collaboration aspects go, I have already completed one small task that was inspired by a mailing list message. Someone was looking for a specific example, of a simple calculator application, that could be used to help practice and demonstrate <a href="http://www.clean-code-developer.de/">Clean Code</a> concepts. The specific example was unfortunately proprietary, so I took the initiative of starting a <a href="http://github.com/kurthaeusler/Calculator-Example">GitHub project</a> to develop a calculator collaboratively, ideally helping myself and others to practice using Clean Code concepts.</p>
<p><a href="http://www.clean-code-developer.de/"><img class="aligncenter size-full wp-image-67" title="dotnetpro ccd stempel full size banner" src="http://kurthaeusler.files.wordpress.com/2009/08/dotnetpro-ccd-stempel-full-size-banner.gif?w=468&#038;h=60" alt="dotnetpro ccd stempel full size banner" width="468" height="60" /></a></p>
<p>I originally intended it to be a bit more collaborative, but ended up working on it alone. Still I think it will form a fairly good starting point for future endevours. Such as when learning new tools and libraries, I have at least a fairly simple project that I can play with.</p>
<p>It still doesn&#8217;t really deliver that much value though, so I have also joined another online project that may promise to be a fairly good simulation of a real world collaborative, agile project, but it is a bit slow getting underway (which is great really, that&#8217;s exactly the kind of issues that one doesn&#8217;t get to experience when working alone). Hopefully it will kick off soon and I can write something about it.</p>
<p>Apart from that, there has been some talk in the local use groups about starting weekend long coding dojo type things where we all meet up somewhere and just develop something together. So if that gets going I will be hopefully involved in that.</p>
<p>My current job mostly involves the maintenance of legacy C++ code, so I am really feeling the need for practice to develop the skills I get little chance to develop in my job. So with this new understanding of, and appreciation for practice I am pretty excited about the things I might be learning in the future.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kurthaeusler.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kurthaeusler.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kurthaeusler.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kurthaeusler.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kurthaeusler.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kurthaeusler.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kurthaeusler.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kurthaeusler.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kurthaeusler.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kurthaeusler.wordpress.com/65/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kurthaeusler.wordpress.com&blog=3857387&post=65&subd=kurthaeusler&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://kurthaeusler.wordpress.com/2009/08/12/practice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efed374137be143ef568d2a224ad9736?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kurt</media:title>
		</media:content>

		<media:content url="http://kurthaeusler.files.wordpress.com/2009/08/kanban.jpg" medium="image">
			<media:title type="html">kanban</media:title>
		</media:content>

		<media:content url="http://kurthaeusler.files.wordpress.com/2009/08/dotnetpro-ccd-stempel-full-size-banner.gif" medium="image">
			<media:title type="html">dotnetpro ccd stempel full size banner</media:title>
		</media:content>
	</item>
		<item>
		<title>Software Development Videos</title>
		<link>http://kurthaeusler.wordpress.com/2009/07/29/software-development-videos/</link>
		<comments>http://kurthaeusler.wordpress.com/2009/07/29/software-development-videos/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 04:50:33 +0000</pubDate>
		<dc:creator>Kurt Häusler</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[videos]]></category>

		<guid isPermaLink="false">http://kurthaeusler.wordpress.com/?p=62</guid>
		<description><![CDATA[I had a chance on the weekend to catch up on some software development related videos, and thought I would share here what I watched and what I thought of what I watched.
Language Oriented Programming in F# &#8211; Roger Castillo
Up until now I had watched and enjoyed several F# related videos and screen casts, and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kurthaeusler.wordpress.com&blog=3857387&post=62&subd=kurthaeusler&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I had a chance on the weekend to catch up on some software development related videos, and thought I would share here what I watched and what I thought of what I watched.</p>
<h2><a href="http://msdn.microsoft.com/en-us/oslo/dd727739.aspx">Language Oriented Programming in F# &#8211; Roger Castillo</a></h2>
<p>Up until now I had watched and enjoyed several F# related videos and screen casts, and played around with a few tutorials, and I checked this one out for some more deeper insight. It was interesting, but I think I would have gotten more out of it if I was actually working properly with F# rather than just playing around with it. I also don&#8217;t think I am such a fan of screen-casts unless I am really trying to learn something specific, and can go through it on my own machine while watching it.</p>
<h2 id="line1"><a href="http://programmingtour.blogspot.com/2009/06/road-thoughts-visible-metrics.html">On Being A Journeyman Software Craftsman: Road Thoughts &#8211; Visible Metrics</a></h2>
<p>Next on my list was this Corey Haines video, unfortunately I haven&#8217;t been able to watch it yet, as I was only available as a streaming flash video. If I try and play any flash video in full screen, the quality is terrible, the CPU maxes out, overheats, and eventually crashes. I have a Firefox extension that can download and convert flash video, but it didn&#8217;t seem to work on this site. I do want to check it out, so I will leave it on my list, and see if I can work out some other way of downloading it.</p>
<h2><a href="http://windowsclient.net/learn/videos_wpf.aspx"><span>WPF Videos</span></a></h2>
<p>I still need to learn WPF properly, so I thought watching a few screen-casts might help. I watched one of the basic ones, but like I said above, I really need to go through and do it on my own machine at the same time to really learn anything from it. Also I think when it comes to specific technologies, I would prefer to learn things &#8220;just-in-time&#8221;, when I have a context in which to think about what I am learning. I think I am more interested in videos when it comes to learning more of the technology-independent fundamentals.</p>
<h2><a href="http://www.viddler.com/explore/virtualaltnet/videos/">Virtual Alt.NET Videos</a></h2>
<p>I try to attend most of the European VANs, but the classic VAN also has a lot of good guests that I mean to catch up on later. Looking at the Viddler page was quite surprising. Once you include the Aussie VANs and the Brown Bag meetings, there are a lot of videos there! Most of the ones that had guest names in the title I had seen, so I just picked a couple of random ones to skim through. There are definitely some good nuggets of information there, but it is not easy to find.</p>
<h2 id="ctl00_ctl00_wholeContent_wholeContent_mainContent_pageHeader"><a href="http://tomasp.net/blog/fsharp-webcast-functional.aspx">F# Webcast Series</a></h2>
<p>I had seen part one of this series a while back, and made a note to watch the rest of it. I started to watch part two, but once again, for these technical how-to screen cast type things I think it really requires that we go through and do the exercise along with the screen cast to really learn anything.</p>
<p>But there are exceptions. Over a year ago, I remember watching the <a href="http://ayende.com/hibernating-rhinos.aspx">Hibernating Rhinos</a> and <a href="http://www.summerofnhibernate.com/">Summer of NHibernate</a> screen-cast series, and they were so good that I was able to learn a lot just by watching. I think the difference was that I was at the time actually working on a DDD .NET project at work, and was able to directly relate what I was seeing to how I could use it in that project.</p>
<p>I am sure if I was actually using F# or WPF at work I would be able to enjoy watching screen-casts on those topics without going through and doing it locally too.</p>
<p>Anyway, I have made a note to go back and look at these F# screen casts again while actually trying it out myself.</p>
<h2><a href="http://blog.hinshelwood.com/archive/2009/06/29/project-natal-available-soon.aspx">Project Natal</a></h2>
<p>Not sure how this ended up on my list. I am not a gamer, and can&#8217;t imagine getting an xbox any time soon. Still its interesting seeing what new technologies are coming out. I remember hearing about it first on the <a href="http://www.totallyradshow.com/">Totally Rad Show</a>, and thinking it was pretty much a gimmick.</p>
<h2><a title="Permanent Link to The Myth of the Genius Programmer" rel="bookmark" href="http://management.curiouscatblog.net/2009/06/29/the-myth-of-the-genius-programmer/">The Myth of the Genius Programmer</a></h2>
<p>Now this was great. This is the type of video I can actually sit there and enjoy. I think all developers should continually watch videos like these. It covered topics like working in a team, fear, dealing with mistakes etc. Definitely check this one out.</p>
<h2><a title="Permanent Link: Video on Artisanal Retro-Futurism crossed with Team-Scale Anarcho-Syndicalism" rel="bookmark" href="http://www.exampler.com/blog/2009/06/29/video-on-artisanal-retro-futurism-crossed-with-team-scale-anarcho-syndicalism/">Artisanal Retro-Futurism crossed with Team-Scale Anarcho-Syndicalism</a></h2>
<p>This video from Brian Marick was probably more entertaining than useful, but I enjoyed it immensely. On the surface it appears to be a plan for restoring the values in the agile world by using some crazy ideas from the past. Also worth checking out.</p>
<h2><a rel="bookmark" href="http://www.hanselman.com/blog/VideosFromTheNorwegianDevelopersConference.aspx">Videos from the Norwegian Developer&#8217;s Conference</a></h2>
<p>I remember hearing a lot about the NDC, and wishing I was there. Now the videos are available. I checked out the The HaaHa Show, but ended up skimming through it as asp.net is not really my thing. I did watch <a href="http://media01.smartcom.no/Microsite/start.aspx?eventid=4538">Robert C. Martin &#8211; Clean Practice: Agility and Craftsmanship</a> and enjoyed it a lot. He is really both an informative and entertaining speaker. I think I enjoyed his RailsConf <a href="http://railsconf.blip.tv/file/2089545/">&#8220;What Killed Smalltalk Could Kill Ruby, Too&#8221;</a> talk a bit more. This NDC one seemed a bit rushed and tried to cover a little bit of too many things.</p>
<p>I intend to go back and check out more of the NDC videos.</p>
<h2><a href="http://ginx.com/-z8sAf">Haskell and Erlang: growing up together</a></h2>
<p>This keynote from Simon Peyton-Jones was great. Unfortunately the quality is not that good, you can&#8217;t really see what is on the screen at all. Simon Peyton-Jones is both very clever and also a pretty funny guy. This video gives a bit of background to how both Haskell and Erlang came to be, a quick overview of how their type systems differ, and the bulk of the talk is about how concurrency works in each language.</p>
<p>I think Erlang might be my language to learn in 2010.</p>
<p>Oh and while we are on the topic of Microsoft Research staff and Haskell, check out some Brian Beckman videos. His video <a href="http://channel9.msdn.com/shows/Going+Deep/Brian-Beckman-Dont-fear-the-Monads/">Don&#8217;t fear the Monads</a> really helped clear up some of the confusion I had (still have) related to monads.</p>
<h2><a href="http://www.infoq.com/presentations/software-with-real-options">Software development with Real Options</a></h2>
<p>I have been hearing a lot about &#8220;Real Options&#8221; on some of the lean development lists lately, so I was curious to see if it was just another way of talking about the &#8220;last responsible moment&#8221;. Turns out it is, but Real Options takes it a bit further, and helps bring in some ideas from handling risk in finance, and adapt them for software development. This video is a good overview of how Real Options applies to software development.</p>
<h2 id="IDF_SystemTitleElement_1"><a href="http://windows.microsoft.com/en-US/windows7/products/videos">Windows 7 videos</a></h2>
<p>Somehow these advertisements for windows 7 ended up on my list. I watched one, thought it was stupid. I think it should be sufficient to just read a list of what&#8217;s new in 7 and try them out once I guess.</p>
<h2><a href="http://www.infoq.com/presentations/bob-frankston-glue-bindings">Bindings, Platforms, and Innovation</a></h2>
<p>I found this video to be disappointing. It was an incoherent ramble. Something about stories, and how we all don&#8217;t understand something because stories are dangerous, and how stupid we all are for not knowing the difference between the web and arpanet or something. I think he was going for a spontaneous, stream-of-conscious style, but it just came across as unplanned. He would start a sentence, and then restart it several times before actually finishing a sentence, and still not manage to actually say anything. I looked up Bob Frankston afterwards, and he sounded like someone I should be impressed by, but this video did not achieve that.</p>
<h2><a rel="bookmark" href="http://gojko.net/2009/07/05/ddd-in-a-distributed-world-video/">DDD in a distributed world video</a></h2>
<p>This one from Gojko Adzic was great. I cannot get enough information about DDD. This video really emphasized the importance of aggregates as a business concept, and provided some good technical hints related to handling aggregates in a distributed system.</p>
<h2><a href="http://research.microsoft.com/apps/tools/tuva/index.html">Project Tuva</a></h2>
<p>This is not actually anything to do with software development at all. It is a collection of Richard Feynman videos about physics. I watched the first one, and it was enjoyable to watch because of Feynman&#8217;s personality and the way he puts things across. A lot of people seem to concentrate more an the video player aspect than the content itself, calling it some profound new way to learn or something. Well, the video player does have a lot of extra interactivity features, which is cool, but hardly a new paradigm shift. For me it is more about the content than the player. If I am ever in the right mood I shall go back and watch some more of the videos.</p>
<p>And that is basically all I had time for last Sunday. I did not get through my entire list. I still intend to watch:</p>
<ul>
<li>Whatever is new and interesting on <a href="http://www.softdevtube.com/">Software Development Videos</a></li>
<li>Videos from the <a href="http://www.sep.com/lk2009">Miami 2009 Lean &amp; Kanban conference</a></li>
<li>Whatever is new and interesting on <a href="http://www.dimecasts.net/">Dimecasts</a></li>
<li>Some more <a href="http://blog.fohjin.com/blog/2009/7/1/NDC_videos_are_published">NDC videos</a></li>
<li><a id="viewpost_ascx_TitleUrl" title="Title of this entry." href="http://geekswithblogs.net/iupdateable/archive/2009/07/01/msdn-flash-podcast-show-005---gary-short-discusses-technical.aspx">Gary Short discusses technical debt</a></li>
</ul>
<p>Maybe next Sunday&#8230;</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kurthaeusler.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kurthaeusler.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kurthaeusler.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kurthaeusler.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kurthaeusler.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kurthaeusler.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kurthaeusler.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kurthaeusler.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kurthaeusler.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kurthaeusler.wordpress.com/62/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kurthaeusler.wordpress.com&blog=3857387&post=62&subd=kurthaeusler&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://kurthaeusler.wordpress.com/2009/07/29/software-development-videos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efed374137be143ef568d2a224ad9736?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kurt</media:title>
		</media:content>
	</item>
		<item>
		<title>Apples vs Oranges</title>
		<link>http://kurthaeusler.wordpress.com/2009/06/01/apples-vs-oranges/</link>
		<comments>http://kurthaeusler.wordpress.com/2009/06/01/apples-vs-oranges/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 16:40:51 +0000</pubDate>
		<dc:creator>Kurt Häusler</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://kurthaeusler.wordpress.com/?p=36</guid>
		<description><![CDATA[A lot of the time when reading about software development, I used to end up pretty confused. It just seemed as if the world of software development that I was reading about was a totally different world to what I was experiencing day-to-day at work as a software developer, and when trying to use ideas [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kurthaeusler.wordpress.com&blog=3857387&post=36&subd=kurthaeusler&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">A lot of the time when reading about software development, I used to end up pretty confused. It just seemed as if the world of software development that I was reading about was a totally different world to what I was experiencing day-to-day at work as a software developer, and when trying to use ideas that I read in my work, I was observing different results to what I should expect. Over time, I have come to understand why this is. It is because the jobs I end up in tend to differ in various ways to what gets typically written about.</p>
<div class="image">
<p style="text-align:center;"><img src="http://farm1.static.flickr.com/16/89379713_d7eec1a1f6.jpg?v=0" alt="Apples vs Oranges" /></p>
<div>
<p style="text-align:center;font-size:xx-small;">Image courtesy of &#8220;e g g&#8221; on Flickr</p>
</div>
</div>
<p style="text-align:justify;">In particular I have identified four &#8220;axes&#8221; along which my experience differs from the typical situation.</p>
<ul style="text-align:justify;">
<li><strong>Projects vs Products</strong></li>
<p>A lot of what I learned at uni, the books I read, people I talk to and websites etc, assume that software is developed mostly as projects. That is, they have their own organisational structure (project teams existing alongside functional departments), their own managers and budgets, clear notions of what counts as success and failure, and most importantly a semi-fixed timespan or some date in the future at which the project finishes, or at least enters some phase (often the expensive maintenance phase) at which software development stops.</p>
<p>Apart from a couple of exceptions, almost all of my software development jobs have involved ongoing products rather than projects, no separate teams apart from the software development department, no separate budget, no clear notions of success or failure and no end date. The software will usually be continually updated, and expected to be so permanently. In project terms, such work resembles a permanent maintenance phase.</p>
<li><strong>In House or Outsourced vs Mass Market</strong></li>
<p>In my course of study, we often compare two types of software development depending on customer involvement. The first is the classic in-house IT development, where the customer is someone, usually another department, within the same organisation, and the second is where a specialist software development or consultancy firm develops software for an external customer. I was never able to make much sense of this, until I realised that except for a couple of exceptions, the software I am typically involved in represents a third main type. Software that is sold on the open market, to potentially many customers rather than a single customer.</p>
<p>When discussing issues involving customer involvement like business and requirements analysis, market oriented software is typically very different to what gets discussed in most books on software development. One major difference is that instead of the customers telling the developers what they want, marketing attempts to convince customers what they need. Often rather than developing software to improve an existing business process, market oriented software attempts to provide whole new processes that often need to be sold as part of the package alongside the software itself.</p>
<li><strong>Domain Complexity vs Technical Complexity</strong></li>
<p>For a long time I was annoyed at myself for not &#8220;getting&#8221; domain driven design, or at least not appreciating the power of the ubiquitous language. Until I realised that the DDD books are coming from the classical enterprise IT angle. In such environments it really is possible to talk to the customer in their own language about all levels of the software, not just the problem but the solution as well, from the database to the gui, and to a high level of detail within the business logic itself. This has however not been possible with the types of software I have worked on, where the most we can do with the customer language, or even the customer knowledge, is form a thin wrapper over the true technical complexity.</p>
<p>For example if the customer, say the owner of a security company, wants a software program to match faces on a security camera video feed with a database of stored photographs, then there is not much point getting into too much detail with the customer on exactly how we can solve his problem with a neural network, we should rather talk to other developers who may not know the domain language required to specify the problem, but understand the technical complexity required to implement the solution.</p>
<li><strong>Cowboy Coding vs Traditionally Managed Development</strong></li>
<p>I would like to think that now-days lightweight and agile methods are making inroads into both &#8220;Ad Hoc&#8221; (a polite term for unmanaged, or at least non-professionally-managed) and traditionally managed (e.g. waterfall) development efforts, so this distinction is becoming less relevant, but over the last few years as I have tried to improve the way I (and in some cases others) develop software, I have found the advice available less realistic or relevant to the cowboy teams I tend to work in.</p>
<p>Especially earlier on in my career, by bosses were typically not trained to manage software development. They simply knew what they wanted, and requested it to be implemented. Any decision making beyond that, such as whether something should be done or not, how it should be done,  or how to improve quality, was simply driven by a mixture of blind hope, guesswork and wishful thinking. Real seat of the pants stuff, I guess it would have been exciting had it not been so frustrating and wasteful.</p>
<p>The difference is most apparent when talking about migrating to agile methods for managing software development. Pretty much everything written about migrating to agile, is talking about migrating from &#8220;waterfall&#8221; to agile. Trying to use advice that works for waterfall teams, while helping to introduce agile to teams that are not used to a disciplined approach to managing their software development efforts is very likely to fail. It should be obvious really. A team migrating from a traditional to an agile approach needs to scale a heavy process down to size. A team of cowboys needs to build up a &#8220;process&#8221; (or culture is probably a more appropriate word) where none existed. Following inappropriate advice is likely to have the opposite effect to that intended!</ul>
<p style="text-align:justify;">These four axes are not totally independent. I have noticed that projects, for a single customer, than have solutions that can be fairly deeply specified side by side with the customer and have professional management tend to form one &#8220;clump&#8221;, and the mass-market, cowboy coded, technically complex products that I have worked on form another. The former are basically your classical enterprise business projects, focused on using data to achieve a fairly specific objective, and the way it moves between the database, processing, and user, while the latter is pretty much everything else, including consumer software, device drivers, software sold as part of a hardware package, or to be used to enable a certain profession to work in new ways and solve a wide variety of objectives.</p>
<p style="text-align:justify;">The latter category seems like it should be a much larger, richer, more varied environment, so I wonder why so much that is written seems to assume the perspective of the classical enterprise IT project? I still don&#8217;t really know.</p>
<p style="text-align:justify;">Because so much of what is written comes from the perspective of single-customer-driven, managed, projects, yet so much of my experience comes from significantly different environments, I guess it is important to state where I come from so any differences in perspective can be explained. I also hope that future posts will help fill a void, and provide information for developers who work outside of the classical IT environment.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kurthaeusler.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kurthaeusler.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kurthaeusler.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kurthaeusler.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kurthaeusler.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kurthaeusler.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kurthaeusler.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kurthaeusler.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kurthaeusler.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kurthaeusler.wordpress.com/36/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kurthaeusler.wordpress.com&blog=3857387&post=36&subd=kurthaeusler&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://kurthaeusler.wordpress.com/2009/06/01/apples-vs-oranges/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efed374137be143ef568d2a224ad9736?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kurt</media:title>
		</media:content>

		<media:content url="http://farm1.static.flickr.com/16/89379713_d7eec1a1f6.jpg?v=0" medium="image">
			<media:title type="html">Apples vs Oranges</media:title>
		</media:content>
	</item>
		<item>
		<title>Quotes</title>
		<link>http://kurthaeusler.wordpress.com/2009/05/09/quotes/</link>
		<comments>http://kurthaeusler.wordpress.com/2009/05/09/quotes/#comments</comments>
		<pubDate>Sat, 09 May 2009 11:44:28 +0000</pubDate>
		<dc:creator>Kurt Häusler</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://kurthaeusler.wordpress.com/?p=33</guid>
		<description><![CDATA[Here are some quotes that I used to have on my wall in my old job. I don&#8217;t necessarily agree with all of them, some of them are interesting because they summarize points of view that were once widely held, but now serve to remind us how things change. However some of the oldest quotes [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kurthaeusler.wordpress.com&blog=3857387&post=33&subd=kurthaeusler&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Here are some quotes that I used to have on my wall in my old job. I don&#8217;t necessarily agree with all of them, some of them are interesting because they summarize points of view that were once widely held, but now serve to remind us how things change. However some of the oldest quotes are also the ones most valid today.</p>
<p>&#8220;Simplicity is prerequisite for reliability &#8220;<br />
- Edsger W. Dijkstra</p>
<p>&#8220;The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it can be an aesthetic experience much like composing poetry or music.&#8221;<br />
- Donald Knuth</p>
<p>&#8220;The perfect project plan is possible if one first documents a list of all the unknowns.&#8221;<br />
- Bill Langley</p>
<p>&#8220;Complexity kills. It sucks the life out of developers, it makes products difficult to plan, build and test, it introduces security challenges and it causes end-user and administrator frustration.&#8221;<br />
- Ray Ozzie</p>
<p>&#8220;Copy and paste is a design error&#8221;<br />
- David Parnas</p>
<p>&#8220;There are two ways to write error-free programs; only the third works.&#8221;<br />
- Alan J. Perlis</p>
<p>&#8220;Technology is dominated by two types of people: Those who understand what they do not manage. Those who manage what they do not understand.&#8221;<br />
- Putt&#8217;s Law</p>
<p>&#8220;Ugly programs are like ugly suspension bridges: they&#8217;re much more liable to collapse than pretty ones, because the way humans (especially engineer-humans) perceive beauty is intimately related to our ability to process and understand complexity. A language that makes it hard to write elegant code makes it hard to write good code.&#8221;<br />
- Eric S. Raymond</p>
<p>&#8220;You know you&#8217;ve achieved perfection in design, not when you have nothing more to add, but when you have nothing more to take away.&#8221;<br />
- Antoine de Saint-Exupery, Wind, Sand and Stars</p>
<p>&#8220;Without requirements or design, programming is the art of adding bugs to an empty text file.&#8221;<br />
- Louis Srygley</p>
<p>&#8220;Computer programming is tremendous fun. Like music, it is a skill that derives from an unknown blend of innate talent and constant practice. Like drawing, it can be shaped to a variety of ends – commercial, artistic, and pure entertainment. Programmers have a well-deserved reputation for working long hours but are rarely credited with being driven by creative fevers. Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination, but because their imagination reveals worlds that others cannot see.&#8221;<br />
- Larry O&#8217;Brien and Bruce Eckel in Thinking in C#</p>
<p>&#8220;It is not necessary to change. Survival is not mandatory.&#8221;<br />
- Edwards Deming</p>
<p>&#8220;Quality is not a project based variable, but a corporate asset.&#8221;<br />
- Ken Schwaber</p>
<p>&#8220;Adequacy is sufficient.&#8221;<br />
- Adam Osborne</p>
<p>&#8220;Brilliant process management is our strategy. We get brilliant results from average people managing brilliant processes. We observe that our competitors often get average (or worse) results from brilliant people managing broken processes.&#8221;<br />
- A senior Toyota executive</p>
<p>&#8220;He who will not apply new remedies must expect old evils.&#8221;<br />
- Francis Bacon</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kurthaeusler.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kurthaeusler.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kurthaeusler.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kurthaeusler.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kurthaeusler.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kurthaeusler.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kurthaeusler.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kurthaeusler.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kurthaeusler.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kurthaeusler.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kurthaeusler.wordpress.com&blog=3857387&post=33&subd=kurthaeusler&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://kurthaeusler.wordpress.com/2009/05/09/quotes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efed374137be143ef568d2a224ad9736?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kurt</media:title>
		</media:content>
	</item>
		<item>
		<title>Agile Quality</title>
		<link>http://kurthaeusler.wordpress.com/2009/04/13/agile-quality/</link>
		<comments>http://kurthaeusler.wordpress.com/2009/04/13/agile-quality/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 18:19:55 +0000</pubDate>
		<dc:creator>Kurt Häusler</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[agile-quality]]></category>
		<category><![CDATA[mailing list]]></category>
		<category><![CDATA[software quality]]></category>

		<guid isPermaLink="false">http://kurthaeusler.wordpress.com/?p=31</guid>
		<description><![CDATA[I just set up a new google group/mailing list called agile-quality.
Check it out here: http://groups.google.com/group/agile-quality
My initial welcome email says:
I intend it to be a place to discuss all aspects of software quality,
particularly as relevant to or involving agile principles, values or
practices.
This includes things like:

 What is quality?
 Quality Control
 Quality Assurance
 Relevance of quality to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kurthaeusler.wordpress.com&blog=3857387&post=31&subd=kurthaeusler&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I just set up a new google group/mailing list called agile-quality.</p>
<p>Check it out here: <a title="agile-quality" href="http://groups.google.com/group/agile-quality">http://groups.google.com/group/agile-quality</a></p>
<p>My initial welcome email says:</p>
<p>I intend it to be a place to discuss all aspects of software quality,<br />
particularly as relevant to or involving agile principles, values or<br />
practices.<br />
This includes things like:</p>
<ul>
<li> What is quality?</li>
<li> Quality Control</li>
<li> Quality Assurance</li>
<li> Relevance of quality to project managers/product owners/scrum masters etc</li>
<li> Quality Management</li>
<li> Testing (even though there is already a great agile-testing group)</li>
<li> ISO 9001 Certification</li>
<li> ISO 9126 Software quality model</li>
<li> Other standards and models for software quality</li>
<li> Technical debt and the management thereof</li>
<li> Metrics for software quality</li>
<li> Customer involvement in quality issues</li>
<li> Discussing other &#8220;movements&#8221; or groups with a focus on software quality</li>
<li> and agile</li>
<li> Craftsmanship as it relates to software quality</li>
<li> Software design; how it relates to software quality</li>
<li> The Law as relevant to software quality.</li>
<li> Discussing books, magazines, websites, blogs, quotes etc about software</li>
<li> quality</li>
<li> Which agile methods and practices specifically address quality and how?</li>
</ul>
<p>I expect it to cover technical aspects of interest mainly to developers,<br />
such as clean code design, as well as more managery type topics, such as<br />
QA, certification and legal aspects, and everything in between. Ideally<br />
this could be one mailing list where the two groups can mix, and form<br />
consensus etc.<br />
About me: I am just a software developer (and project management<br />
student) interested in software quality and agile. I am not an author or<br />
consultant (yet/at the moment). I don&#8217;t really have much of an agenda to<br />
push except to discuss and learn more about software quality in agile<br />
environments. I do have opinions and they will pop up in later emails.</p>
<p>Currently the list is unmoderated, and I will only change that if<br />
spammers attack. Personal disagreements, teasing, slightly off topic<br />
messages and banter will probably not be moderated away (at least for<br />
now), I think such things help build community. The moderation policy<br />
will be pretty loose but I reserve the right to make changes if it seems<br />
necessary.<br />
Thanks for checking out the mailing list, and enjoy!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kurthaeusler.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kurthaeusler.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kurthaeusler.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kurthaeusler.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kurthaeusler.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kurthaeusler.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kurthaeusler.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kurthaeusler.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kurthaeusler.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kurthaeusler.wordpress.com/31/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kurthaeusler.wordpress.com&blog=3857387&post=31&subd=kurthaeusler&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://kurthaeusler.wordpress.com/2009/04/13/agile-quality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efed374137be143ef568d2a224ad9736?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kurt</media:title>
		</media:content>
	</item>
		<item>
		<title>Circling the drain?</title>
		<link>http://kurthaeusler.wordpress.com/2008/11/16/circling-the-drain/</link>
		<comments>http://kurthaeusler.wordpress.com/2008/11/16/circling-the-drain/#comments</comments>
		<pubDate>Sun, 16 Nov 2008 20:29:51 +0000</pubDate>
		<dc:creator>Kurt Häusler</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[agile adoption]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://kurthaeusler.wordpress.com/?p=18</guid>
		<description><![CDATA[I was just reading the XP mailing list and followed a link to a debate in the Agile blogosphere that seems to be a sort of XP vs Scrum type thing. Basically the popularity of Scrum means that people are adopting Scrum and considering themselves Agile without engaging in the appropriate development practices that XP [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kurthaeusler.wordpress.com&blog=3857387&post=18&subd=kurthaeusler&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I was just reading the <a href="http://tech.groups.yahoo.com/group/extremeprogramming/">XP mailing list</a> and followed a link to a <a href="http://practicalagility.blogspot.com/2008/11/agile-circling-drain.html">debate</a> in the Agile blogosphere that seems to be a sort of XP vs Scrum type thing. Basically the popularity of Scrum means that people are adopting Scrum and considering themselves Agile without engaging in the appropriate development practices that XP provides. <a href="http://jamesshore.com/Blog/The-Decline-and-Fall-of-Agile.html">Some claim</a> the direction of Agile needs to change, to put more emphasis on development practices and less on Scrum, or its the end of Agile.</p>
<p>I don&#8217;t intend to join in this debate, as I think both sides are wrong, but I will take the opportunity to write how I see it.</p>
<p>The word &#8220;direction&#8221; is interesting. As if there is something in the distance called Agile thats pulling us towards it. I guess thats how most business processes work. Someone has an idea, and prescribes it in the form of a concrete model that is supposed to be emulated. In such cases this concrete model looks indeed like an endpoint, towards which one finds the direction to be followed.</p>
<p>Agile is, to me at least, a bit different. Its more of a decidedly non-concrete set of principles and values. They don&#8217;t define an end point at all, hence no fixed, single direction. They define a starting point, from which more concrete practices and process are pushed out, or emerged. Once a team or an individual develops those principles and values as part of their culture, they exhibit certain behaviors that are influenced by those principles and values. They may or may not end up looking more or less like XP or Scrum. Different interpretations of those Agile principles and values, as well as principles and values outside of Agile, as well as subjective circumstances will mean that whatever emerges, is likely to emerge in as many different directions as individuals and teams that start from those principles and values. XP and Scrum are just head-starts along pretty good directions. I would suggest that a team that adopts Agile practices and processes only for planning while neglecting the development aspects or vice versa has made the mistake of neglecting the principles and values and seeing (some particular sellable concrete package of) Agile practices as a destination to move towards rather than a set of principles and values to guide the emerging of behavior. Hey at least they are a step above those who think Agile and Scrum are TFS templates though!</p>
<p>So rather than watching Agile circle the drains of concrete Scrum (and XP) practices, let it pour out from the values tap of the <a href="http://agilemanifesto.org/">manifesto</a> and the <a href="http://agilemanifesto.org/principles.html">principles</a>.</p>
<p>Forget about selling Scrum practices (or XP practices) as &#8220;directions&#8221; for Agile. Sell the principles and values and let the practices emerge, in all sorts of directions!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kurthaeusler.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kurthaeusler.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kurthaeusler.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kurthaeusler.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kurthaeusler.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kurthaeusler.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kurthaeusler.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kurthaeusler.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kurthaeusler.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kurthaeusler.wordpress.com/18/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kurthaeusler.wordpress.com&blog=3857387&post=18&subd=kurthaeusler&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://kurthaeusler.wordpress.com/2008/11/16/circling-the-drain/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efed374137be143ef568d2a224ad9736?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kurt</media:title>
		</media:content>
	</item>
	</channel>
</rss>