<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://www.codemonkeyism.com/wp-atom.php">
	<title type="text">Code Monkeyism</title>
	<subtitle type="text">Programming is hard</subtitle>

	<updated>2009-06-29T18:29:28Z</updated>
	<generator uri="http://wordpress.org/" version="2.6.3">WordPress</generator>

	<link rel="alternate" type="text/html" href="http://www.codemonkeyism.com" />
	<id>http://www.codemonkeyism.com/feed/atom/</id>
	

			<link rel="self" href="http://feeds.feedburner.com/stephansblog" type="application/atom+xml" /><feedburner:emailServiceId>stephansblog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
		<author>
			<name>stephan</name>
					</author>
		<title type="html"><![CDATA[Why the Toyota Product Development System is a thing of the past]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stephansblog/~3/9KHpog1iXKo/" />
		<id>http://www.codemonkeyism.com/?p=773</id>
		<updated>2009-06-29T18:29:28Z</updated>
		<published>2009-06-29T11:02:01Z</published>
		<category scheme="http://www.codemonkeyism.com" term="Agile" /><category scheme="http://www.codemonkeyism.com" term="Scrum" /><category scheme="http://www.codemonkeyism.com" term="TPDS" /><category scheme="http://www.codemonkeyism.com" term="TPS" /><category scheme="http://www.codemonkeyism.com" term="Toyota" /><category scheme="http://www.codemonkeyism.com" term="kanban" /><category scheme="http://www.codemonkeyism.com" term="lean" />		<summary type="html"><![CDATA[This post tries to explain why website/app development is Production and should use the Toyota Production System (TPS) and why classic software application development is product development and can use the Toyota Product Development System (TPDS).
 photo credit: drewgstephens
Recently there has been a conundrum in parts of the agile and lean community: Obviously the Toyota [...]]]></summary>
		<content type="html" xml:base="http://www.codemonkeyism.com/archives/2009/06/29/why-the-toyota-product-development-system-is-a-thing-of-the-past/">&lt;p&gt;This post tries to explain why website/app development is Production and should use the &lt;a href="http://en.wikipedia.org/wiki/Toyota_Production_System"&gt;Toyota Production System&lt;/a&gt; (TPS) and why classic software application development is product development and can use the Toyota Product Development System (TPDS).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/22809317@N04/3468412357/" title="Overloading QA" target="_blank"&gt;&lt;img src="http://farm4.static.flickr.com/3599/3468412357_c106b188fa_m.jpg" alt="Overloading QA" border="0" class="decoimage" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;small&gt;&lt;a href="http://creativecommons.org/licenses/by-sa/2.0/" title="Attribution-ShareAlike License" target="_blank"&gt;&lt;img src="http://www.codemonkeyism.com/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /&gt;&lt;/a&gt; &lt;a href="http://www.photodropper.com/photos/" target="_blank"&gt;photo&lt;/a&gt; credit: &lt;a href="http://www.flickr.com/photos/22809317@N04/3468412357/" title="drewgstephens" target="_blank"&gt;drewgstephens&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Recently there has been a &lt;a href="http://en.wikipedia.org/wiki/Conundrum"&gt;conundrum&lt;/a&gt; in parts of the agile and lean community: &lt;b&gt;Obviously the Toyota Product Development System (TPDS) and software development &lt;a href="http://www.bestbrains.dk/Blog/CommentView,guid,98913a0d-8279-464f-82fd-9723e5df77b0.aspx"&gt;uses a waterfall&lt;/a&gt; (or similar spiral) process&lt;/b&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
What might surprise some, was that they were using a waterfall model (in Ishii-san&amp;#8217;s own words - in reality I think it was more like the spiral model). In spite of that, I had a feeling afterwards that I had just talked to perhaps the most skilled software development managers I have ever met! Does that sound like a paradox? I do not think so.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Toyota today looks so much like a religion that people are willing to suddenly proclaim &amp;#8220;waterfall&amp;#8221; is a &lt;a href="http://www.bestbrains.dk/Blog/2009/04/22/LeanStudyTour2009Day2FeelingPrivileged.aspx"&gt;good thing&lt;/a&gt; if it&amp;#8217;s done by Toyota:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
I once said to myself that I did not want to waste my time as a developer on non-agile projects. In the Toyota case, I would certainly make an exception &amp;#8220;Toyota is using waterfall!&amp;#8221;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Or even, from &lt;a href="http://www.xqa.com.ar/visualmanagement/2009/04/confirmed-toyota-does-waterfall/"&gt;Mary Poppendieck&lt;/a&gt;,&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
When you are dealing with embedded software in production hardware, a 3 month waterfall is really fast.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;And as Sean tries to explain in his &lt;a href="http://softwaredevelopmenttoday.blogspot.com/2009/04/does-toyota-really-use-waterfall-for.html#comments"&gt;comment&lt;/a&gt; on another post:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
If the projects that Toyota is working on span only a couple of weeks, then waterfall is probably going to work fine. They&amp;#8217;ll only develop requirements for a few weeks worth of work, and their in-process code inventory will still be pretty small.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;So why should we use TPS and lean in software development, when Toyota does Waterfall and TPDS? We&amp;#8217;re confused. But remain calm. There is no conundrum. If you have clear requirements, a limited project, a fixed feature set and a fixed deadline, use waterfall. This is what Toyota probably experiences. Most people in the agile community will tell you it&amp;#8217;s only best to use agile and go lean when you have unclear or changing requirements, changing feature priorities and work in a flow model instead of a project.&lt;/p&gt;
&lt;p&gt;After reading the &lt;a href="http://www.amazon.com/Toyota-Way-Jeffrey-Liker/dp/0071392319"&gt;Toyota Way book&lt;/a&gt;, and twittering about TPS, I got the following reply:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
&lt;a href="http://twitter.com/flowchainsensei"&gt;@flowchainsensei&lt;/a&gt;: &amp;#8220;Might like to take a look at TPDS too  (more direct relevance to software development) Kennedy, Ward, etc.&amp;#8221;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;So TPS/lean isn&amp;#8217;t for software development? After some more thinking, whether software development is more like Toyota Product Development (TPDS) or more like production (TPS), I had an insight. For your web app development there are 2 phases:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Phase 1:&lt;/b&gt; Version 1.0 done with product development (PD)&lt;br /&gt;
&lt;b&gt;Phase 2:&lt;/b&gt; After that companies shift to a production (P) model&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: You should keep the PD phase as short as possible.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Websites and web applications are different than your usual software application development.  Website/app development has many more direct stakeholders: Reporting, Controlling, Marketing, Sales, Product Development, Customer Support, Backend Services and more. Contrary to classic software apps, they all have &lt;b&gt;direct&lt;/b&gt; involvement into features. In webSite/app development, those stakeholders write their own (!) stories and directly contribute features. On the other hand in software app development, features are mainly developed by a product development department with indirect input from other deparments. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Therefore software app development is much more product development (PD) heavy, while website/app development is much more production (P) heavy.&lt;/b&gt; With more direct involvement, smaller stories and changing requirements, more and more development will move into production style in the future. &lt;/p&gt;
&lt;p&gt;The same will happen inside Toyota. &lt;b&gt;My prediction:&lt;/b&gt; Over time at Toyota TPDS and TPS will merge, when every car is build-to-order, with it&amp;#8217;s own design, with custom colors, each with a one-in-a-kind motor etc. &lt;/p&gt;
&lt;p&gt;This is what Scrum tries to accomplish, merging production and product development. An enviroment in which web companies are already. Each story to be developed is the same - consisting of web forms, services, database code, reporting etc., but at the same time every story is different. Think of stories as being all the same, e.g. web-service-db stories, &lt;b&gt;but highly customized and build-to-order&lt;/b&gt; for each customer (marketing, product development, sales). Then it becomes clear that development in web companies &lt;b&gt;is production&lt;/b&gt;, not product development.&lt;/p&gt;
&lt;p&gt;This merging is also the area where Scrum struggles: How to put design, architecture work, technical debt etc into development, and Scrum still hasn&amp;#8217;t settled for the one best practice.&lt;/p&gt;
&lt;p&gt;Hope this helps clear up the &amp;#8220;Conundrum&amp;#8221;, which isn&amp;#8217;t one.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/stephansblog/~4/9KHpog1iXKo" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.codemonkeyism.com/archives/2009/06/29/why-the-toyota-product-development-system-is-a-thing-of-the-past/#comments" thr:count="3" />
		<link rel="replies" type="application/atom+xml" href="http://www.codemonkeyism.com/archives/2009/06/29/why-the-toyota-product-development-system-is-a-thing-of-the-past/feed/atom/" thr:count="3" />
		<thr:total>3</thr:total>
	<feedburner:origLink>http://www.codemonkeyism.com/archives/2009/06/29/why-the-toyota-product-development-system-is-a-thing-of-the-past/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>stephan</name>
					</author>
		<title type="html"><![CDATA[New Version of my Simple Kanban Board Application]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stephansblog/~3/5vObMxMjvu8/" />
		<id>http://www.codemonkeyism.com/?p=757</id>
		<updated>2009-06-15T10:09:15Z</updated>
		<published>2009-06-15T10:09:15Z</published>
		<category scheme="http://www.codemonkeyism.com" term="Javascript" /><category scheme="http://www.codemonkeyism.com" term="Scrum" /><category scheme="http://www.codemonkeyism.com" term="kanban" /><category scheme="http://www.codemonkeyism.com" term="lean" />		<summary type="html"><![CDATA[Over the weekend I&#8217;ve worked on my Simple-Kanban application. Simple Kanban is a small Kanban board application in one Html file. New features are a data mode that displays the data in raw format for easier cut &#038; paste and drag &#038; drop support for moving stories around. 
 
There is a website now! I&#8217;ve [...]]]></summary>
		<content type="html" xml:base="http://www.codemonkeyism.com/archives/2009/06/15/new-version-of-my-simple-kanban-board-application/">&lt;p&gt;Over the weekend I&amp;#8217;ve worked on my Simple-Kanban application. &lt;a href="http://www.simple-kanban.com"&gt;Simple Kanban&lt;/a&gt; is a small Kanban board application in one Html file. New features are a data mode that displays the data in raw format for easier cut &amp;#038; paste and &lt;b&gt;drag &amp;#038; drop&lt;/b&gt; support for moving stories around. &lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.codemonkeyism.com/wp-content/uploads/2009/06/bild_blog.jpg" alt="Simple Kanban Screenshot" title="imple Kanban Screenshot" width="400" height="300" class="alignnone size-full wp-image-758" /&gt; &lt;/p&gt;
&lt;p&gt;&lt;b&gt;There is a website now!&lt;/b&gt; I&amp;#8217;ve added a small website at &lt;a href="http://www.simple-kanban.com/"&gt;http://www.simple-kanban.com&lt;/a&gt;, where you can find new versions. I&amp;#8217;ve also created a &lt;a href="http://github.com/StephanSchmidt/SimpleKanban/tree/master"&gt;GitHub&lt;/a&gt; repository for Simple Kanban, where I&amp;#8217;m planning to post the code (funny, the code is already open source as part of the Html file :-)&lt;/p&gt;
&lt;p&gt;Much fun with using Simple-Kanban in your company, &lt;b&gt;think lean!&lt;/b&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/stephansblog/~4/5vObMxMjvu8" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.codemonkeyism.com/archives/2009/06/15/new-version-of-my-simple-kanban-board-application/#comments" thr:count="13" />
		<link rel="replies" type="application/atom+xml" href="http://www.codemonkeyism.com/archives/2009/06/15/new-version-of-my-simple-kanban-board-application/feed/atom/" thr:count="13" />
		<thr:total>13</thr:total>
	<feedburner:origLink>http://www.codemonkeyism.com/archives/2009/06/15/new-version-of-my-simple-kanban-board-application/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>stephan</name>
					</author>
		<title type="html"><![CDATA[Micro Book Review: Agile Retrospectives, making good teams great]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stephansblog/~3/4dlpryfnOno/" />
		<id>http://www.codemonkeyism.com/?p=740</id>
		<updated>2009-06-11T08:30:43Z</updated>
		<published>2009-06-11T08:30:43Z</published>
		<category scheme="http://www.codemonkeyism.com" term="Agile" /><category scheme="http://www.codemonkeyism.com" term="Retrospectives" /><category scheme="http://www.codemonkeyism.com" term="Review" /><category scheme="http://www.codemonkeyism.com" term="Scrum" />		<summary type="html"><![CDATA[Title: Agile Retrospectives, making good teams great
Author: Esther Derby / Diana Larsen
Pages: 165
What the book is about
The book is about leading retrospectives. Retrospectives came into fashion with agile software development, especially Scrum has retrospectives every sprint. The beginning of the book motivates retrospectives, explains them, shows how to lead them and establishes the concept of [...]]]></summary>
		<content type="html" xml:base="http://www.codemonkeyism.com/archives/2009/06/11/micro-book-review-agile-retrospectives-making-good-teams-great/">&lt;p&gt;&lt;b&gt;Title:&lt;/b&gt; &lt;a href="http://www.estherderby.com/books/agilretrospectives.htm"&gt;Agile Retrospectives, making good teams great&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;Author:&lt;/b&gt; Esther Derby / Diana Larsen&lt;br /&gt;
&lt;b&gt;Pages:&lt;/b&gt; 165&lt;/p&gt;
&lt;p&gt;&lt;b&gt;What the book is about&lt;/b&gt;&lt;br /&gt;
The book is about leading retrospectives. Retrospectives came into fashion with agile software development, especially Scrum has retrospectives every sprint. The beginning of the book motivates retrospectives, explains them, shows how to lead them and establishes the concept of phases: set the stage, gather data, generate insights, decide what to do, close the retrospective. The second part explains detailed several activities you can use in each phase. A description is structured like the famous design pattern book: Purpose, Time needed, Description, Steps, Materials and Preperation and Examples.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;What I&amp;#8217;ve learned from the book&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;Retrospectives have several phases: set the stage, gather data, generate insights, decide what to do, close the retrospective&lt;/li&gt;
&lt;li&gt;There are many activities for retrospectives, you should change activities from time to time&lt;/li&gt;
&lt;li&gt;Use an activity like&amp;#8221;appraisals&amp;#8221; for closing a retrospective&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Should you buy this book?&lt;/b&gt;&lt;br /&gt;
Yes, highly recommended&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Who should buy the book&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Every ScrumMaster or Iteration Manager&lt;/li&gt;
&lt;li&gt;Everyone who leads retrospectives&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Notes&lt;/b&gt;&lt;br /&gt;
Book bought by myself due to a mentioning on Twitter.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve chosen the micro review format because it lends itself to be used as a future &lt;a href="http://microformats.org/"&gt;micro format&lt;/a&gt; and I like short reviews myself. You can read the table of contents elsewhere, I don&amp;#8217;t like it when reviews iterate the content.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/stephansblog/~4/4dlpryfnOno" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.codemonkeyism.com/archives/2009/06/11/micro-book-review-agile-retrospectives-making-good-teams-great/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://www.codemonkeyism.com/archives/2009/06/11/micro-book-review-agile-retrospectives-making-good-teams-great/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://www.codemonkeyism.com/archives/2009/06/11/micro-book-review-agile-retrospectives-making-good-teams-great/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>stephan</name>
					</author>
		<title type="html"><![CDATA[Kanban Board Application in One Html File]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stephansblog/~3/OpzqU1ZyLYI/" />
		<id>http://www.codemonkeyism.com/?p=719</id>
		<updated>2009-06-09T10:29:20Z</updated>
		<published>2009-06-09T10:29:20Z</published>
		<category scheme="http://www.codemonkeyism.com" term="Java" /><category scheme="http://www.codemonkeyism.com" term="Javascript" /><category scheme="http://www.codemonkeyism.com" term="kanban" /><category scheme="http://www.codemonkeyism.com" term="lean" />		<summary type="html"><![CDATA[For some years I&#8217;ve been interested in lean software development and how to reduce waste. While introducing lean practices, I&#8217;ve needed a small, simple Kanban Board application. Thought I&#8217;d write one. 

You can download a very first alpha here or see it in action here.
Suprised? The application is just one HTML file, no installation needed, [...]]]></summary>
		<content type="html" xml:base="http://www.codemonkeyism.com/archives/2009/06/09/kanban-board-application-in-one-html-file/">&lt;p&gt;For some years I&amp;#8217;ve been interested in &lt;a href="http://en.wikipedia.org/wiki/Lean_software_development"&gt;lean software development&lt;/a&gt; and how to reduce &lt;a href="http://3point4.wordpress.com/2009/02/10/agile-maps-to-lean-muda-mura-and-muri/"&gt;waste&lt;/A&gt;. While introducing lean practices, I&amp;#8217;ve needed a small, simple &lt;a href="http://www.infoq.com/articles/agile-kanban-boards"&gt;Kanban Board&lt;/a&gt; application. Thought I&amp;#8217;d write one. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.codemonkeyism.com/wp-content/uploads/2009/06/kanbanboard.png"&gt;&lt;img src="http://www.codemonkeyism.com/wp-content/uploads/2009/06/kanbanboard_thumb.png"/ width="500"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can download a very first alpha &lt;a href="http://www.codemonkeyism.com/wp-content/uploads/2009/06/kanban_board_app.html"&gt;here&lt;/a&gt; or see it in action &lt;a href="http://www.codemonkeyism.com/wp-content/uploads/2009/06/kanban_board_app.html"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Suprised?&lt;/b&gt; The application is just one HTML file, no installation needed, no Java, Ruby or PHP. One HTML file, no other dependencies.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;How to use the application?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Edit the source of the HTML file with an editor of your choice, preferably one which knows HTML. You will find a list of stories. The example contains those:&lt;/p&gt;
&lt;pre&gt;
T_Q,S18,Checkout optimize
DE,S2,Build old shop
DE,S4,Rebuild with SOAP
DE_Q,S10,Rebuild with REST
P,S17,Do something with OpenID
D,S3,Make application faster
D_Q,S7,Credit Card Payment
DE,S13,Build something astonishing
P_Q,S17,Fix YSlow
R,S39,Google Page Speed fix
&lt;/pre&gt;
&lt;p&gt;There are three columns for stories. The first column contains the state the story is in, the second contains an identifier for your story and the last column the name of the story. You can edit the columns, change states, change names, remove and add stories. You can also export form Excel to csv, then cut&amp;#038;paste into the application source.&lt;/p&gt;
&lt;p&gt;The available states are described next in the file:&lt;/p&gt;
&lt;pre&gt;
D,Design
DE,Development
T,Test
R,Release
&lt;/pre&gt;
&lt;p&gt;They need to be available for the stories and match the states of the stories. You can add, remove or change states. Every state has a &amp;#8220;sub-state&amp;#8221; as a ready queue. For example the ready queue state for Design &amp;#8220;D&amp;#8221; is &amp;#8220;D_Q&amp;#8221;, for Test &amp;#8220;T&amp;#8221; it is &amp;#8220;T_Q&amp;#8221;. You do not need to describe the ready states, they are automatically created and a ready queue is shown in front of every state. For example &amp;#8220;Test Ready&amp;#8221; is shown left to &amp;#8220;Test&amp;#8221;, if there are stories in that particular state.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Customize the colors&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The colors of each state are defined in a CSS block.&lt;/p&gt;
&lt;pre&gt;
.box_P { background-color: #FFFF00  ; color: #000000;}
.box_P_Q { background-color: #F0F0F0; color: #606060;}
&lt;/pre&gt;
&lt;p&gt;Feel free to change them to your taste. &amp;#8220;.box_P&amp;#8221; is for the &amp;#8220;P&amp;#8221; state box, &amp;#8220;.box_P_Q&amp;#8221; for the corresponding ready queue.&lt;/p&gt;
&lt;p&gt;The main use case for this application is to &lt;b&gt;inform a company about the stories which are in development&lt;/b&gt; and in which state they are. It&amp;#8217;s an ideal &lt;a href="http://alistair.cockburn.us/Information+radiator"&gt;information radiator&lt;/a&gt;. &lt;b&gt;I plan to use it on a huge screen&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Future&lt;/b&gt;&lt;br /&gt;
I&amp;#8217;m thinking about a  &lt;a href="http://couchdb.apache.org/"&gt;CouchDB&lt;/a&gt; storage implementation for storing data and application logic. Or storing data in the file, with drag and drop, inlining Jquery, editing and storing like &lt;a href="http://www.tiddlywiki.com/"&gt;TiddlyWiki&lt;/a&gt; does. &lt;/p&gt;
&lt;p&gt;Future features? Add WIP limits, add &amp;#8220;From here&amp;#8221; signs to display cycle time until live.&lt;/p&gt;
&lt;p&gt;Have fun with this One-File-HTML-application. &lt;B&gt;Tip:&lt;/b&gt; you can easily mail it around, no install needed.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/stephansblog/~4/OpzqU1ZyLYI" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.codemonkeyism.com/archives/2009/06/09/kanban-board-application-in-one-html-file/#comments" thr:count="5" />
		<link rel="replies" type="application/atom+xml" href="http://www.codemonkeyism.com/archives/2009/06/09/kanban-board-application-in-one-html-file/feed/atom/" thr:count="5" />
		<thr:total>5</thr:total>
	<feedburner:origLink>http://www.codemonkeyism.com/archives/2009/06/09/kanban-board-application-in-one-html-file/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>stephan</name>
					</author>
		<title type="html"><![CDATA[Top 5 Things to Know About Constructors in Scala]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stephansblog/~3/aztpgfJSzKc/" />
		<id>http://www.codemonkeyism.com/?p=695</id>
		<updated>2009-04-23T04:46:16Z</updated>
		<published>2009-04-22T10:59:43Z</published>
		<category scheme="http://www.codemonkeyism.com" term="Java" /><category scheme="http://www.codemonkeyism.com" term="Scala" />		<summary type="html"><![CDATA[I&#8217;ve been toying with Scala for some months now, one thing I&#8217;ve struggled with coming from Java are constructors in Scala. They are comparable to Java, but the syntax is different. 

 credit: .Paolo.


To help get you going faster in Scala, the top 5 things to know about constructors. Here we go:

How to do constructors [...]]]></summary>
		<content type="html" xml:base="http://www.codemonkeyism.com/archives/2009/04/22/top-5-things-to-know-about-constructors-in-scala/">&lt;p&gt;I&amp;#8217;ve been toying with Scala for some months now, one thing I&amp;#8217;ve struggled with coming from Java are constructors in Scala. They are comparable to Java, but the syntax is different. &lt;/p&gt;
&lt;p&gt;&lt;div class="decoimage"&gt;
&lt;a href="http://www.flickr.com/photos/12299814@N06/1464056042/" title="scala" target="_blank"&gt;&lt;img class="decoimage" src="http://farm2.static.flickr.com/1105/1464056042_169a1b6a14_m.jpg" alt="scala" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;small&gt;&lt;a href="http://creativecommons.org/licenses/by-sa/2.0/" title="Attribution-ShareAlike License" target="_blank"&gt;&lt;img src="http://www.codemonkeyism.com/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /&gt;&lt;/a&gt; credit: &lt;a href="http://www.flickr.com/photos/12299814@N06/1464056042/" title=".Paolo." target="_blank"&gt;.Paolo.&lt;/a&gt;&lt;/small&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;To help get you going faster in Scala, the top 5 things to know about constructors. Here we go:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;How to do constructors with a parameter&lt;/b&gt;
&lt;pre class="code"&gt;
public class Foo() {
   public Bar bar;

   public Foo(Bar bar) {
       this.bar = bar;
   }
}
&lt;/pre&gt;
&lt;p&gt;Looks in Scala like this:&lt;/p&gt;
&lt;pre class="code"&gt;
class Foo(val bar:Bar)
&lt;/pre&gt;
&lt;p&gt;In this case &lt;code&gt;val&lt;/code&gt; creates an &lt;strong&gt;immutable &lt;/strong&gt; final public field, using &lt;code&gt;var&lt;/code&gt; would create a &lt;strong&gt;mutable &lt;/strong&gt;public field.
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;How to have private fields&lt;/b&gt;
&lt;pre class="code"&gt;
public class Foo() {
   private final Bar bar;

   public Foo(Bar bar) {
       this.bar = bar;
   }
}
&lt;/pre&gt;
&lt;p&gt;Looks in Scala like this:&lt;/p&gt;
&lt;pre class="code"&gt;
class Foo(private val bar: Bar)
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Changed due to comments. Thanks for the commentors to point this out&lt;/p&gt;
&lt;p&gt;Private fields are not as necessary as in Java, you can have public fields for attributes and change them to a method (&lt;code&gt;def&lt;/code&gt;) later - without changing your clients.
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;How to use super() ?&lt;/b&gt;
&lt;pre class="code"&gt;
public class Foo() extends SuperFoo {
   public Foo(Bar bar) {
      super(bar);
   }
}
&lt;/pre&gt;
&lt;p&gt;Looks in Scala like this:&lt;/p&gt;
&lt;pre class="code"&gt;
class Foo(bar:Bar) extends SuperFoo(bar)
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;How to have more than one constructor?&lt;/b&gt;
&lt;pre class="code"&gt;
public class Foo {
    public Bar bar;

    public Foo() {
       this(new Bar());
    }

    public Foo(Bar bar) {
	   this. bar = bar;
    }
}
&lt;/pre&gt;
&lt;p&gt;Looks in Scala like this:&lt;/p&gt;
&lt;pre class="code"&gt;
class Foo(val bar:Bar) {
  def this() = this(new Bar)
}
&lt;/pre&gt;
&lt;/li&gt;
&lt;p&gt;Secondary constructors like &lt;code&gt;this()&lt;/code&gt; need to delegate to another constructor to work (Thanks @Synesso).&lt;/p&gt;
&lt;li&gt;&lt;b&gt;How to get bean style setters and getters?&lt;/b&gt;
&lt;pre class="code"&gt;
 public class Foo() {
   private Bar bar;

   public Foo(Bar bar) {
       this.bar = bar;
   }

   public Bar getBar() {
      return bar;
   }
   public void setBar(Bar bar) {
      this.bar = bar;
   }
}
&lt;/pre&gt;
&lt;p&gt;Looks in Scala like this:&lt;/p&gt;
&lt;pre class="code"&gt;
class Foo(@BeanProperty var bar:Bar)
&lt;/pre&gt;
&lt;p&gt;The attribute &lt;code&gt;bar &lt;/code&gt;will still be &lt;strong&gt;public&lt;/strong&gt;, which is not a big issue (see above) in Scala. But &lt;code&gt;@BeanProperty&lt;/code&gt; helps when working with Java libraries and you need Bean conventions for the libraries to work.&lt;/p&gt;
&lt;p&gt;To add &lt;code&gt;getBar &lt;/code&gt;and &lt;code&gt;setBar &lt;/code&gt;but not a public field you need to:&lt;/p&gt;
&lt;pre class="code"&gt;
class Foo(aBar:Bar) {
    @BeanProperty
    private var bar = aBar
}
&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; Changed to var, thanks to @eivindw.&lt;/p&gt;
&lt;p&gt;Hope this helps you, if you have something to add, leave a comment. Should you struggle with the limited &lt;code&gt;this()&lt;/code&gt; syntax (only one expression), then perhaps your constructors are doing too much. Consider the factory or better builder pattern instead. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Additional tip:&lt;/strong&gt; use @Serializable to make your Scala classes serializable.&lt;/p&gt;
&lt;p&gt;Nice coding in #Scala.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/stephansblog/~4/aztpgfJSzKc" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.codemonkeyism.com/archives/2009/04/22/top-5-things-to-know-about-constructors-in-scala/#comments" thr:count="5" />
		<link rel="replies" type="application/atom+xml" href="http://www.codemonkeyism.com/archives/2009/04/22/top-5-things-to-know-about-constructors-in-scala/feed/atom/" thr:count="5" />
		<thr:total>5</thr:total>
	<feedburner:origLink>http://www.codemonkeyism.com/archives/2009/04/22/top-5-things-to-know-about-constructors-in-scala/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>stephan</name>
					</author>
		<title type="html"><![CDATA[7 More Good Tips on Logging]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stephansblog/~3/Xrjxnaac_SI/" />
		<id>http://www.codemonkeyism.com/?p=665</id>
		<updated>2009-02-24T06:06:39Z</updated>
		<published>2009-02-23T12:07:29Z</published>
		<category scheme="http://www.codemonkeyism.com" term="Logging" />		<summary type="html"><![CDATA[Logging in web applications is important - to know what&#8217;s going on, for performance tuning and incident analyis. This is my second post about logging. The first post &#8220;7 Good Rules to Log Exceptions&#8221; was specific to logging exceptions, ths is about logging in general. What makes your logs more useful to you?
credit: schoschie

1. No [...]]]></summary>
		<content type="html" xml:base="http://www.codemonkeyism.com/archives/2009/02/23/7-more-good-tips-on-logging/">&lt;p&gt;Logging in web applications is important - to know what&amp;#8217;s going on, for performance tuning and incident analyis. This is my second post about logging. The first post &lt;a href="http://www.codemonkeyism.com/archives/2008/12/16/7-good-rules-to-log-exceptions/"&gt;&amp;#8220;7 Good Rules to Log Exceptions&amp;#8221;&lt;/a&gt; was specific to logging exceptions, ths is about logging in general. &lt;strong&gt;What makes your logs more useful to you?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="decoimage"&gt;&lt;img class="decoimage"  src="http://farm2.static.flickr.com/1428/1330790063_b64baabd9c_m.jpg" alt="Nerdy Bookshelf Part One" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;small&gt;&lt;a href="http://creativecommons.org/licenses/by/2.0/" title="Attribution License" target="_blank"&gt;&lt;img src="http://www.codemonkeyism.com/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /&gt;&lt;/a&gt;credit: &lt;a href="http://www.flickr.com/photos/87569910@N00/1330790063/" title="schoschie" target="_blank"&gt;schoschie&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;1. No debugging logs in production&lt;/h3&gt;
&lt;p&gt;I have seen time and again that debug logging is enabled in production. This can be intentional or happening by some developers who accidently checked in a debugging logging configuration. Enabled debugging slows down your application remarkedly and makes it impossible to read production logs due to noise. Make sure during deployments  - &lt;strong&gt;best with some scripts &lt;/strong&gt; -  that debugging level logging is disabled during production.&lt;/p&gt;
&lt;h3&gt;2. Look through your logs&lt;/h3&gt;
&lt;p&gt;Some companies have good logging in their production system, but do not look into their logs. Look into your logs, discover issues (bugs, performance, memory) with your application &lt;strong&gt;and fix them&lt;/strong&gt;. Essentially your logs should be without known errors.&lt;/p&gt;
&lt;h3&gt;3. Log to the correct log level&lt;/h3&gt;
&lt;p&gt;Developers who write logging code often don&amp;#8217;t know which log level to use. Have a document ready which explains which log level developers should use. For example SEVERE should only be used for technical problems which need immediate action. &lt;strong&gt;ERROR should be used for errors that someone needs to look into and fix&lt;/strong&gt;, like not getting a databasde connection, low resources or failing integration points. This is specific to your company and application. &lt;/p&gt;
&lt;h3&gt;4. Do not log locally&lt;/h3&gt;
&lt;p&gt;If your server has major problems like resource troubles, it&amp;#8217;s often impossible to log in. Therefor you can&amp;#8217;t get to your logs finding the problem. Logs should be written to a network drive, copied over to another host or written to the network e.g. with Syslogd. A nice solution is to use the &lt;a href="http://www.spread.org/"&gt;Spread Toolkit&lt;/a&gt; to write to a network group with multicasting. This also enables easy monitoring (see &lt;em&gt;&amp;#8220;Scalable Internet Architectures&amp;#8221;&lt;/em&gt;).&lt;/p&gt;
&lt;h3&gt;5. Monitor your logs&lt;/h3&gt;
&lt;p&gt;Similar to &amp;#8220;Look into you logs&amp;#8221;, you should setup a monitoring solution which looks at SEVERE entries, ERROR entries, exceptions and other conditions in you logs. With Spread it&amp;#8217;s easy to add monitors. A good idea is also to classify and count exceptions, then do something about the severe and most frequent ones.&lt;/p&gt;
&lt;h3&gt;6. Use a human readable format&lt;/h3&gt;
&lt;p&gt;Developers often don&amp;#8217;t think about the output they produce. This leads to hard to read log files. &lt;em&gt;&amp;#8220;Release It!&amp;#8221;&lt;/em&gt; has an example for readable output:&lt;/p&gt;
&lt;pre name="code" class="java:nocontrols:nogutter"&gt;
[8/14/06 8:22:14:653 CDT] 0000a SSLComponent I CWPKI00001I: SSL service not available
[8/14/06 8:22:14:813 CDT] 0000a WSKeyStore   W CWPKI0041W: One or more key
&lt;/pre&gt;
&lt;p&gt;This row oriented format makes it easier to fast scan logs. Compare this to the your logs.&lt;/p&gt;
&lt;h3&gt;7. Use error codes in logging&lt;/h3&gt;
&lt;p&gt;Each cause which leads to log output should have a unique error code. Without a unique error code it&amp;#8217;s hard to find the cause in your source code. Error codes make it also much easier to count and classify log statements and &lt;strong&gt;enables communications between development and operations&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Want to know more? Books with good sections on web site logging are &lt;em&gt;&amp;#8220;Release It!&amp;#8221;&lt;/em&gt; by Michael T. Nygard (really excellent book!) and &lt;em&gt;&amp;#8220;Scalable Internet Architectures&amp;#8221;&lt;/em&gt; by Theo Schlossnagle.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/stephansblog/~4/Xrjxnaac_SI" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.codemonkeyism.com/archives/2009/02/23/7-more-good-tips-on-logging/#comments" thr:count="18" />
		<link rel="replies" type="application/atom+xml" href="http://www.codemonkeyism.com/archives/2009/02/23/7-more-good-tips-on-logging/feed/atom/" thr:count="18" />
		<thr:total>18</thr:total>
	<feedburner:origLink>http://www.codemonkeyism.com/archives/2009/02/23/7-more-good-tips-on-logging/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>stephan</name>
					</author>
		<title type="html"><![CDATA[Better Null Handling Strategies for Java]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stephansblog/~3/87l0Wq1d9GQ/" />
		<id>http://www.codemonkeyism.com/?p=662</id>
		<updated>2009-02-04T10:25:32Z</updated>
		<published>2009-02-04T10:25:32Z</published>
		<category scheme="http://www.codemonkeyism.com" term="Groovy and Grails" /><category scheme="http://www.codemonkeyism.com" term="Maybe" /><category scheme="http://www.codemonkeyism.com" term="Null" /><category scheme="http://www.codemonkeyism.com" term="Null Handling" /><category scheme="http://www.codemonkeyism.com" term="Option" /><category scheme="http://www.codemonkeyism.com" term="Scala" />		<summary type="html"><![CDATA[Uploaded a presentation on &#8220;Better Null Handling Strategies for Java&#8221; to SlideShare. Enjoy.

View more presentations from Stephan Schmidt. (tags: java null)

]]></summary>
		<content type="html" xml:base="http://www.codemonkeyism.com/archives/2009/02/04/better-null-handling-strategies-for-java/">&lt;p&gt;Uploaded a presentation on &lt;em&gt;&amp;#8220;Better Null Handling Strategies for Java&amp;#8221;&lt;/em&gt; to SlideShare. Enjoy.&lt;/p&gt;
&lt;div style="width:425px;text-align:left" id="__ss_983165"&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=nullhandlingenglish-1233649420368672-3&amp;#038;stripped_title=better-strategies-for-null-handling-in-java" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=nullhandlingenglish-1233649420368672-3&amp;#038;stripped_title=better-strategies-for-null-handling-in-java" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/Stephan.Schmidt"&gt;Stephan Schmidt&lt;/a&gt;. (tags: &lt;a style="text-decoration:underline;" href="http://slideshare.net/tag/java"&gt;java&lt;/a&gt; &lt;a style="text-decoration:underline;" href="http://slideshare.net/tag/null"&gt;null&lt;/a&gt;)&lt;/div&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/stephansblog/~4/87l0Wq1d9GQ" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.codemonkeyism.com/archives/2009/02/04/better-null-handling-strategies-for-java/#comments" thr:count="6" />
		<link rel="replies" type="application/atom+xml" href="http://www.codemonkeyism.com/archives/2009/02/04/better-null-handling-strategies-for-java/feed/atom/" thr:count="6" />
		<thr:total>6</thr:total>
	<feedburner:origLink>http://www.codemonkeyism.com/archives/2009/02/04/better-null-handling-strategies-for-java/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>stephan</name>
					</author>
		<title type="html"><![CDATA[Scrum is not about engineering practices]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stephansblog/~3/uJn7zHZCHGs/" />
		<id>http://www.codemonkeyism.com/?p=641</id>
		<updated>2009-02-03T05:59:16Z</updated>
		<published>2009-02-01T10:20:23Z</published>
		<category scheme="http://www.codemonkeyism.com" term="Agile" /><category scheme="http://www.codemonkeyism.com" term="Craftmenship" /><category scheme="http://www.codemonkeyism.com" term="Engineering Practices" /><category scheme="http://www.codemonkeyism.com" term="Scrum" />		<summary type="html"><![CDATA[Scrum is not about engineering practices - which is a good thing. Martin Fowler writes:

They adopt the Scrum practices, and maybe even the principles
After a while progress is slow because the code base is a mess

 and connects Scrum failure to missing engineering practices. This completely misses the point. Scrum is not about engineering practices, [...]]]></summary>
		<content type="html" xml:base="http://www.codemonkeyism.com/archives/2009/02/01/scrum-is-not-about-engineering-practices/">&lt;p&gt;Scrum is not about engineering practices - which is a good thing. Martin Fowler &lt;a href="http://martinfowler.com/bliki/FlaccidScrum.html"&gt;writes&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
They adopt the Scrum practices, and maybe even the principles&lt;br /&gt;
After a while progress is slow because the code base is a mess
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt; and connects Scrum failure to missing engineering practices. This completely misses the point. Scrum is not about engineering practices, it&amp;#8217;s about management. &lt;/p&gt;
&lt;p&gt;&lt;span class="decoimage"&gt;&lt;img class="decoimage" src="http://farm4.static.flickr.com/3012/2601558475_53264826a3.jpg" alt="Ruby ruby" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;small&gt;&lt;a href="http://creativecommons.org/licenses/by-sa/2.0/" title="Attribution-ShareAlike License" target="_blank"&gt;&lt;img src="http://www.codemonkeyism.com/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /&gt;&lt;/a&gt; credit: &lt;a href="http://www.flickr.com/photos/32927329@N00/2601558475/" title="elliottcable" target="_blank"&gt;elliottcable&lt;/a&gt;&lt;/small&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Engineering practices are a responsibility of the team. Scrum creates self organized teams. They organize themselves, they organize their quality. They organize their tools. They organize their engineering practices (TDD, pair programming). Why? &lt;strong&gt;Because they are responsible for delivering&lt;/strong&gt;. No one else is. &lt;/p&gt;
&lt;h3&gt;Craftsmanship and level of done&lt;/h3&gt;
&lt;p&gt;Often quality and craftsmanship are organized by a &lt;a href="http://www.scrumalliance.org/articles/105-what-is-definition-of-done-dod"&gt;level of done agreement in the team&lt;/a&gt; which describes what a team considers &lt;b&gt;when code is done&lt;/b&gt;. This can include&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Documentation / JavaDoc&lt;/li&gt;
&lt;li&gt;Functional tests&lt;/li&gt;
&lt;li&gt;Unit tests&lt;/li&gt;
&lt;li&gt;Bug free&lt;/li&gt;
&lt;li&gt;Refactored, maintainable code&lt;/li&gt;
&lt;li&gt;Reviewed code&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What about &lt;a href="http://www.martinfowler.com/bliki/TechnicalDebt.html"&gt;technical dept&lt;/a&gt;? Technical dept is not professional. Seeing an ice berg and keeping a crash course is not professional. With the right level of done there will be no technical dept. &lt;/p&gt;
&lt;h3&gt;Scrum helps with good engineering practices&lt;/h3&gt;
&lt;p&gt;Concerning Marting Fowlers comments &lt;a href="http://blog.aspectprogramming.com/"&gt;Dean Wampler&lt;/a&gt; twitters:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;His comments match my experience at client sites. Teams using Scrum w/out the XP prog. practices don&amp;#8217;t work long-term.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Not very insightful it says: &lt;strong&gt;developers who do not use professional practices will fail.&lt;/strong&gt; Of course they fail, but they fail independently of the process you use.&lt;/p&gt;
&lt;p&gt;The main difference to classic project management is that developers have the freedom to define their level of done and the amount of work they do. Developers define what stories they work on in each sprint, &lt;strong&gt;management doesn&amp;#8217;t set a (unrealistic) finishing date &lt;/strong&gt;as often happens in classical software projects.&lt;/p&gt;
&lt;p&gt;Is there too much quality? Doesn&amp;#8217;t the product owner care if the team takes &lt;i&gt;&amp;#8220;too much&amp;#8221;&lt;/i&gt; time for quality? The product owner is entitled to two things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Story estimates&lt;/li&gt;
&lt;li&gt;Shippable products&lt;/li&gt;
&lt;li&gt;Professional developers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The product owner is not entitled to speed. Scrum sets resources and time in the &lt;a href="http://www.ambysoft.com/essays/brokenTriangle.html"&gt;Iron Triangle&lt;/a&gt; and let&amp;#8217;s developers decide about scope. &lt;strong&gt;Speed is scope / time and is an output variable of the team, not an input variable&lt;/strong&gt;. If she thinks the velocity of the team is too low, talk to the ScrumMaster and remove impediments. But engineering practices should never be dropped. Other crafts will never drop theirs. Ask a doctor to drop sterilizing to gain speed. Ask a banker to drop double-entry bookkeeping. They won&amp;#8217;t. &lt;strong&gt;Neither should developers drop theirs&lt;/strong&gt; [1].&lt;/p&gt;
&lt;p&gt;&lt;span class="footnote"&gt;[1] This could mean developers need to be trained to be professionals. But a company needs to teach professionalism to developers independently of what process it uses. If you do not have skilled, professional developers you&amp;#8217;re doomed and no process will help you.&lt;/span&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/stephansblog/~4/uJn7zHZCHGs" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.codemonkeyism.com/archives/2009/02/01/scrum-is-not-about-engineering-practices/#comments" thr:count="12" />
		<link rel="replies" type="application/atom+xml" href="http://www.codemonkeyism.com/archives/2009/02/01/scrum-is-not-about-engineering-practices/feed/atom/" thr:count="12" />
		<thr:total>12</thr:total>
	<feedburner:origLink>http://www.codemonkeyism.com/archives/2009/02/01/scrum-is-not-about-engineering-practices/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>stephan</name>
					</author>
		<title type="html"><![CDATA[Micro Book Review: The Definitive Guide to Terracotta]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stephansblog/~3/BMjMV_Yfr-Y/" />
		<id>http://www.codemonkeyism.com/?p=633</id>
		<updated>2009-01-28T09:57:09Z</updated>
		<published>2009-01-28T09:55:36Z</published>
		<category scheme="http://www.codemonkeyism.com" term="Java" />		<summary type="html"><![CDATA[Title: The Definitive Guide to Terracotta: Cluster the JVM for Spring, Hibernate and POJO Scalability
Author: Ari Zilka (Terracotta CTO) and his team
Pages: 368 
What the book is about
The books is an introduction about Terracotta which helps you distribute -transparently- the Java Virtual Machine memory over several JVMs. The main part of “The Definitive Guide to [...]]]></summary>
		<content type="html" xml:base="http://www.codemonkeyism.com/archives/2009/01/28/micro-book-review-the-definitive-guide-to-terracotta/">&lt;p&gt;&lt;b&gt;Title:&lt;/b&gt; &lt;a href="http://www.apress.com/book/view/1590599861"&gt;The Definitive Guide to Terracotta: Cluster the JVM for Spring, Hibernate and POJO Scalability&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;Author:&lt;/b&gt; Ari Zilka (Terracotta CTO) and his team&lt;br /&gt;
&lt;b&gt;Pages:&lt;/b&gt; 368 &lt;/p&gt;
&lt;p&gt;&lt;b&gt;What the book is about&lt;/b&gt;&lt;br /&gt;
The books is an introduction about Terracotta which helps you distribute -transparently- the Java Virtual Machine memory over several JVMs. The main part of “The Definitive Guide to Terracotta” focuses on use cases. Those are quite good motivated, explained and described with many examples and working code.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;What I&amp;#8217;ve learned from the book&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;What Terracotta and virtual heaps are&lt;/li&gt;
&lt;li&gt;How to use TC with ehCache, Hibernate and for session clustering&lt;/li&gt;
&lt;li&gt;Dropping in ready-to use functionality with TC integration modules (TIM) is easy&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;What I didn&amp;#8217;t like&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;Chapter about optimizations but not extensive enough and not enough information about deployments and deployment scenarios.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Should you buy this book?&lt;/b&gt;&lt;br /&gt;
Yes, highly recommended, it’s written by the Terracotta guys, you can’t get better and more accurate information.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Who should buy the book&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Every developer or architect who wants to use or evaluate Terracotta&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Notes&lt;/b&gt;&lt;br /&gt;
Book kindly supplied by the publisher. This is a short version of my &lt;a href="http://www.codemonkeyism.com/archives/2008/09/26/book-review-on-the-definitive-guide-to-terracotta-by-apress/"&gt;former review&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve chosen the micro review format because it lends itself to be used as a future &lt;a href="http://microformats.org/"&gt;micor format&lt;/a&gt; and I like short reviews myself. You can read the table of contents elsewhere, I don&amp;#8217;t like it when reviews iterate the content.&lt;/p&gt;
&lt;p&gt;What do you think about this short review style?&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/stephansblog/~4/BMjMV_Yfr-Y" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.codemonkeyism.com/archives/2009/01/28/micro-book-review-the-definitive-guide-to-terracotta/#comments" thr:count="4" />
		<link rel="replies" type="application/atom+xml" href="http://www.codemonkeyism.com/archives/2009/01/28/micro-book-review-the-definitive-guide-to-terracotta/feed/atom/" thr:count="4" />
		<thr:total>4</thr:total>
	<feedburner:origLink>http://www.codemonkeyism.com/archives/2009/01/28/micro-book-review-the-definitive-guide-to-terracotta/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>stephan</name>
					</author>
		<title type="html"><![CDATA[ScrumMaster and ZenMaster: The joke of certification]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stephansblog/~3/eU6sBM76Pzk/" />
		<id>http://www.codemonkeyism.com/?p=596</id>
		<updated>2009-01-23T10:24:32Z</updated>
		<published>2009-01-23T10:23:25Z</published>
		<category scheme="http://www.codemonkeyism.com" term="CSM" /><category scheme="http://www.codemonkeyism.com" term="CSP" /><category scheme="http://www.codemonkeyism.com" term="Java" /><category scheme="http://www.codemonkeyism.com" term="REST" /><category scheme="http://www.codemonkeyism.com" term="Scala" /><category scheme="http://www.codemonkeyism.com" term="ScrumMaster" /><category scheme="http://www.codemonkeyism.com" term="Sharding" /><category scheme="http://www.codemonkeyism.com" term="Zen" /><category scheme="http://www.codemonkeyism.com" term="practitioner" />		<summary type="html"><![CDATA[Many people object to ScrumMaster certifications:

It&#8217;s a money making machine
Scrum Masters do not learn anything during classes
The certification is nothing worth - because nothing is certified

I have been a Certified ScrumMaster (CSM) and a Scrum practioner for some years. People who object to the certification do see it from the wrong angle. You need to [...]]]></summary>
		<content type="html" xml:base="http://www.codemonkeyism.com/archives/2009/01/23/scrummaster-and-zenmaster-the-joke-of-certification/">&lt;p&gt;Many people &lt;a href="http://www.agile-software-development.com/2008/01/certified-scrummaster-isnt-worth-paper.html"&gt;object to ScrumMaster certifications&lt;/a&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It&amp;#8217;s a money making machine&lt;/li&gt;
&lt;li&gt;Scrum Masters do not learn anything during classes&lt;/li&gt;
&lt;li&gt;The certification is nothing worth - because nothing is certified&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I have been a &lt;a href="http://www.scrumalliance.org/pages/certification"&gt;Certified ScrumMaster (CSM)&lt;/a&gt; and a Scrum practioner for some years. People who object to the certification do see it from the wrong angle. You need to understand Zen to understand the goodness in CSMs. &lt;/p&gt;
&lt;p&gt;&lt;span class="decoimage"&gt;&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/20149359@N00/2023372402/" title="Nénuphare" target="_blank"&gt;&lt;img  class="decoimage" src="http://farm3.static.flickr.com/2144/2023372402_0f6be63224.jpg" alt="Nénuphare" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;small&gt;&lt;a href="http://creativecommons.org/licenses/by/2.0/" title="Attribution License" target="_blank"&gt;&lt;img src="http://www.codemonkeyism.com/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /&gt;&lt;/a&gt; &lt;a href="http://www.photodropper.com/photos/" target="_blank"&gt;photo&lt;/a&gt; credit: &lt;a href="http://www.flickr.com/photos/20149359@N00/2023372402/" title="darkpatator" target="_blank"&gt;darkpatator&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Certification is a Zen joke, because the role of a ScrumMaster cannot be certified. It&amp;#8217;s not about knowing some technical questions. What should a trainer certify in such a class? That you can lead an agile Scrum team as a ScrumMaster? &lt;b&gt;No one can certify the fact that you&amp;#8217;re a leader, catalyst and enabler&lt;/b&gt;. You either are or you aren&amp;#8217;t. Zen masters (ha, another master without a master!) would laugh at the fun in the ScrumMaster certification. They laugh about the idea of certifying enlightenment. &lt;/p&gt;
&lt;h3&gt;Scrum without ScrumMasters&lt;/h3&gt;
&lt;p&gt;As another parallel, both in Scrum and in Zen, masters are only enablers. They are not needed after the act of enabling Zen/Scrum. My Scrum trainer told me, the goal of a ScrumMaster is to make himself obsolete. There is a Zen koan which goes like this:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
If you meet the Buddha, kill him.&lt;br /&gt;
    — Linji
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;If you see a ScrumMaster, kill him. Zen &lt;a href="http://en.wikipedia.org/wiki/Koan"&gt;tells you&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
If you are thinking about Buddha, this is thinking and delusion, not awakening. One must destroy preconceptions of the Buddha. Zen master Shunryu Suzuki wrote in Zen Mind, Beginner&amp;#8217;s Mind during an introduction to Zazen, &amp;#8220;Kill the Buddha if the Buddha exists somewhere else. Kill the Buddha, because you should resume your own Buddha nature.&amp;#8221;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;If you think the ScrumMaster is Scrum, you&amp;#8217;re delusioning yourself. In Scrum the product owner and the scrum team can, and should from my view, act by themselves, without the need of a ScrumMaster. &lt;b&gt;The ScrumMaster helps them achieve their Scrum.&lt;/b&gt;  Helps them overcoming initial obstacles in their productivity. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Kick your ScrumMaster&lt;/b&gt;&lt;br /&gt;
If the ScrumMaster is not good enough for them, certification and coaching inside the company hasn&amp;#8217;t helped, the Scrum team has always the right to kick their SM if he isn&amp;#8217;t good enough for them. And they should do so.  If in Zen a master isn&amp;#8217;t good, pupils will just leave him. This might lead to problems within the organization, especially if the ScrumMaster is their boss, but that should be the problem of the organization, not a team problem.&lt;/p&gt;
&lt;h3&gt;Practitioner certification&lt;/h3&gt;
&lt;p&gt;There are many more certifications from the Scrum alliance. If you dig deeper, the real fun part is that CSM doesn&amp;#8217;t mean anything, &lt;a href="http://www.scrumalliance.org/pages/practitioner_level_of_certification"&gt;practitioner means much more&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
The practitioner level of certification (CSP) is only offered to those CSMs who have hands-on experience using Scrum. Applicants must complete an extensive questionnaire with probing questions that focus on applicants’ real-world experience using Scrum on software development projects. Their application is reviewed for answers demonstrating competence and comprehension of principles that can only result from hands-on work. The applicant may be questioned to determine eligibility. To maintain CSP status, you must submit a new application every two years.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3&gt;Is the certification any use?&lt;/h3&gt;
&lt;p&gt;Yes. The Certified Scrum Master training has several merits:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Calling the Scrum training &lt;i&gt;&amp;#8220;Certified&amp;#8221;&lt;/i&gt; guaranties the quality of the trainer&lt;/li&gt;
&lt;li&gt;It motivates the Scrum master to think in Scrum&lt;/li&gt;
&lt;li&gt;If managers take part, it helps the organisation adopt a &amp;#8220;we can do it&amp;#8221; view about Scrum&lt;/li&gt;
&lt;li&gt;Certification (CSM) seems to be one of the main reasons for Scrum success in the enterprise. The certification makes Scrum compatible for managment.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The view about acceptance &lt;a href="http://www.scrum-breakfast.com/2008/06/scrum-alliance-quietly-changes_20.html"&gt;is shared by&lt;/a&gt; Peter Stevens:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
It is also about branding, and has been quite successful. The acceptance of the CSM program is high (especially from corporate customers, and this is where the money is). I believe the CSM program is an important reason why Scrum is better accepted than say, XP, in corporate management circles.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Scrum is successful. I&amp;#8217;ve seen it help development departments gain productivity. If you do not scrum yet, &lt;a href="http://scrum4you.wordpress.com/"&gt;go for it&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/stephansblog/~4/eU6sBM76Pzk" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.codemonkeyism.com/archives/2009/01/23/scrummaster-and-zenmaster-the-joke-of-certification/#comments" thr:count="8" />
		<link rel="replies" type="application/atom+xml" href="http://www.codemonkeyism.com/archives/2009/01/23/scrummaster-and-zenmaster-the-joke-of-certification/feed/atom/" thr:count="8" />
		<thr:total>8</thr:total>
	<feedburner:origLink>http://www.codemonkeyism.com/archives/2009/01/23/scrummaster-and-zenmaster-the-joke-of-certification/</feedburner:origLink></entry>
	</feed><!-- Dynamic Page Served (once) in 0.614 seconds --><!-- Cached page generated by WP-Super-Cache on 2009-07-05 17:21:42 --><!-- Compression = gzip -->
