<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Gridshore software engineering weblog - Books</title>
    <link>http://www.gridshore.nl/blog/</link>
    <description>This weblog is about everything that has to do with software engineering. It will focus on items like Springframework, acegi, hibernate and other tools to help creating good software</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.2.1 - http://www.s9y.org/</generator>
    <pubDate>Tue, 29 Jan 2008 10:27:03 GMT</pubDate>

    <image>
        <url>http://www.gridshore.nl/blog/templates/gridshore/img/s9y_banner_small.png</url>
        <title>RSS: Gridshore software engineering weblog - Books - This weblog is about everything that has to do with software engineering. It will focus on items like Springframework, acegi, hibernate and other tools to help creating good software</title>
        <link>http://www.gridshore.nl/blog/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Last entry ...</title>
    <link>http://www.gridshore.nl/blog/index.php?/archives/74-Last-entry-....html</link>
            <category>acegi</category>
            <category>ajax</category>
            <category>Announcements</category>
            <category>Books</category>
            <category>gridshore</category>
            <category>Java</category>
            <category>News</category>
            <category>spring-osgi</category>
            <category>Springframework</category>
            <category>Technology</category>
            <category>Webservices</category>
            <category>Websites&amp;products</category>
    
    <comments>http://www.gridshore.nl/blog/index.php?/archives/74-Last-entry-....html#comments</comments>
    <wfw:comment>http://www.gridshore.nl/blog/wfwcomment.php?cid=74</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.gridshore.nl/blog/rss.php?version=2.0&amp;type=comments&amp;cid=74</wfw:commentRss>
    

    <author>nospam@example.com (Jettro Coenradie)</author>
    <content:encoded>
    Welcome to the last entry of this blog. No I am not quitting, I am just moving. I just installed a new blog software framework. I was starting to dislike the way to interact and I wanted something that contained more out of the box. I am in the middle of moving to wordpress software. There is a very good reason to do this. I had found a great tool on the mac called MarsEdit. And again this could not be used with serendipity. I hope I did make a good choice. Since there is a lot of information in the old blog, I did not take this blog offline. It will stay to exist, but I will not make changes there anymore.&lt;br /&gt;
&lt;br /&gt;
I hope to see you at the new version of the blog (check the page at http://www.gridshore.nl). You can attach you feedreader to the following url: feed://www.gridshore.nl/feed/ 
    </content:encoded>

    <pubDate>Sat, 19 Jan 2008 20:58:56 +0100</pubDate>
    <guid isPermaLink="false">http://www.gridshore.nl/blog/index.php?/archives/74-guid.html</guid>
    
</item>
<item>
    <title>Book reading time - The myths of innovation</title>
    <link>http://www.gridshore.nl/blog/index.php?/archives/64-Book-reading-time-The-myths-of-innovation.html</link>
            <category>Books</category>
    
    <comments>http://www.gridshore.nl/blog/index.php?/archives/64-Book-reading-time-The-myths-of-innovation.html#comments</comments>
    <wfw:comment>http://www.gridshore.nl/blog/wfwcomment.php?cid=64</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.gridshore.nl/blog/rss.php?version=2.0&amp;type=comments&amp;cid=64</wfw:commentRss>
    

    <author>nospam@example.com (Jettro Coenradie)</author>
    <content:encoded>
    Man, have I been busy the last few weeks. So much to do, so much to learn, so much to try. Within two days it is time for our presentation at the dutch NLJug. I have been setting up the &lt;a href=&quot;http://www.osgisamples.com&quot;  title=&quot;osgisamples&quot;&gt;osgisamples&lt;/a&gt; website. Upgraded the &lt;a href=&quot;http://www.coenradie.com&quot;  title=&quot;family website&quot;&gt;family website&lt;/a&gt;. For my current employer we are finishing a webservices project at a big client. After about 1 1/2 year it is time to go to a new client. The time to relax is starting to come back. I want to use more time to start reading books. Ofcourse no thrillers :-), but interesting books. So from now on you will see some book reviews on the website again. I hope you will get enthousiastic about the books. If you decide to buy the books, you can support me by clicking on the link on this website. This also gives me an indication if people like what I write about the books.&lt;br /&gt;
&lt;br /&gt;
This time I want to write something about the following book:&lt;br /&gt;
&lt;iframe src=&quot;http://rcm.amazon.com/e/cm?t=gridshore-20&amp;o=1&amp;p=8&amp;l=as1&amp;asins=0596527055&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr&quot; style=&quot;width:120px;height:240px;&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
This is not a programming book, no you won&#039;t find java in here, no webservices, but a lot of technology. The book is about innovations. How can you be innovative. Is it something you can learn? Was the gravity moment of Newton an epiphany, or is that not possible. Does the eureka moment exist when your innovative, or do you need a lot of time to prepare that euraka moment. The book uses a nice historical introduction and a lot of links to resources on the web to read more. Sometimes it is just fun to follow the links and continue reading there. The biggest problem is that you need some sleep. You can really get lost in all that interesting reading on the web. Just for the fun two examples of interesting links.&lt;br /&gt;
&lt;a href=&quot;http://www.ideafinder.com/&quot;  title=&quot;ideafinder&quot;&gt;http://www.ideafinder.com/&lt;/a&gt; - look for good initiatives and learn from the past&lt;br /&gt;
&lt;a href=&quot;http://www.goodyear.com/corporate/history/history_overview.html&quot;  title=&quot;goodyear history&quot;&gt;http://www.goodyear.com/corporate/history/history_overview.html&lt;/a&gt; - nice story about how something simple can influence the world. 
    </content:encoded>

    <pubDate>Mon, 11 Jun 2007 21:48:56 +0200</pubDate>
    <guid isPermaLink="false">http://www.gridshore.nl/blog/index.php?/archives/64-guid.html</guid>
    
</item>
<item>
    <title>Review Rafactoring by Martin Fowler</title>
    <link>http://www.gridshore.nl/blog/index.php?/archives/47-Review-Rafactoring-by-Martin-Fowler.html</link>
            <category>Books</category>
    
    <comments>http://www.gridshore.nl/blog/index.php?/archives/47-Review-Rafactoring-by-Martin-Fowler.html#comments</comments>
    <wfw:comment>http://www.gridshore.nl/blog/wfwcomment.php?cid=47</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://www.gridshore.nl/blog/rss.php?version=2.0&amp;type=comments&amp;cid=47</wfw:commentRss>
    

    <author>nospam@example.com (Jettro Coenradie)</author>
    <content:encoded>
    &lt;iframe src=&quot;http://rcm.amazon.com/e/cm?t=gridshore-20&amp;o=1&amp;p=8&amp;l=as1&amp;asins=0201485672&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;lc1=0000ff&amp;bc1=000000&amp;bg1=ffffff&amp;f=ifr&quot; style=&quot;width:120px;height:240px;float:left;&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;The last few weeks I started reading about refactoring code. I always thought I knew my way around refactoring. I can use eclipse. After reading this book by martin fowler I think I misjusted myself. Sure I know the basic stuff. But after reading this book, everything falls in it&#039;s place. Now it becomes easier to talk to other about it and to start teaching myself and others about refactoring. The examples in the book are very thorough, some are a little bit to obvious to my opinion. Still I very much like the book, so this is a must read for every serious java programmer. 
    </content:encoded>

    <pubDate>Mon, 03 Apr 2006 23:12:48 +0200</pubDate>
    <guid isPermaLink="false">http://www.gridshore.nl/blog/index.php?/archives/47-guid.html</guid>
    
</item>
<item>
    <title>Review Planning Extreme Programming</title>
    <link>http://www.gridshore.nl/blog/index.php?/archives/44-Review-Planning-Extreme-Programming.html</link>
            <category>Books</category>
    
    <comments>http://www.gridshore.nl/blog/index.php?/archives/44-Review-Planning-Extreme-Programming.html#comments</comments>
    <wfw:comment>http://www.gridshore.nl/blog/wfwcomment.php?cid=44</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.gridshore.nl/blog/rss.php?version=2.0&amp;type=comments&amp;cid=44</wfw:commentRss>
    

    <author>nospam@example.com (Jettro Coenradie)</author>
    <content:encoded>
    &lt;iframe src=&quot;http://rcm.amazon.com/e/cm?t=gridshore-20&amp;o=1&amp;p=8&amp;l=as1&amp;asins=0201710919&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;lc1=0000ff&amp;bc1=000000&amp;bg1=ffffff&amp;f=ifr&quot; style=&quot;width:120px;height:240px;float:left;padding:10px&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;This is a book from one of the Xp guru&#039;s. Who am I to say, &quot;I would not buy it&quot;. Still I dare to say it. Not that it is a bad book, but reading one or two articles is probably enough. I would invest in a book like &lt;a href=&quot;http://www.amazon.com/exec/obidos/redirect?tag=gridshore-20&amp;link_code=am2&amp;path=tg/stores/offering/list/-/0130676349/all/ASIN/0130676349&amp;camp=1789&amp;creative=9325&quot;&gt;Agile Software Development with SCRUM&lt;/a&gt;&lt;img src=&quot;http://www.assoc-amazon.com/e/ir?t=gridshore-20&amp;l=am2&amp;o=1&amp;a=0130676349&quot; width=&quot;1&quot; height=&quot;1&quot; border=&quot;0&quot; alt=&quot;&quot; style=&quot;border:none !important; margin:0px !important;&quot; /&gt; to learn about planning a project. And I guess you should read : &lt;a href=&quot;http://www.amazon.com/exec/obidos/redirect?link_code=as2&amp;path=ASIN/0321278658&amp;tag=gridshore-20&amp;camp=1789&amp;creative=9325&quot;&gt;Extreme Programming Explained : Embrace Change (2nd Edition)&lt;/a&gt;&lt;img src=&quot;http://www.assoc-amazon.com/e/ir?t=gridshore-20&amp;l=as2&amp;o=1&amp;a=0321278658&quot; width=&quot;1&quot; height=&quot;1&quot; border=&quot;0&quot; alt=&quot;&quot; style=&quot;border:none !important; margin:0px !important;&quot; /&gt; to learn about extreme programming.&lt;br /&gt;
&lt;br /&gt;
Conclusion, this could have been said in about 10 pages as well. I you haven&#039;t read anything about xp this book might be interesting, but the two alternatives are better to my opinion. 
    </content:encoded>

    <pubDate>Wed, 25 Jan 2006 22:49:50 +0100</pubDate>
    <guid isPermaLink="false">http://www.gridshore.nl/blog/index.php?/archives/44-guid.html</guid>
    
</item>
<item>
    <title>Review Ajax in Action</title>
    <link>http://www.gridshore.nl/blog/index.php?/archives/43-Review-Ajax-in-Action.html</link>
            <category>Books</category>
    
    <comments>http://www.gridshore.nl/blog/index.php?/archives/43-Review-Ajax-in-Action.html#comments</comments>
    <wfw:comment>http://www.gridshore.nl/blog/wfwcomment.php?cid=43</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.gridshore.nl/blog/rss.php?version=2.0&amp;type=comments&amp;cid=43</wfw:commentRss>
    

    <author>nospam@example.com (Jettro Coenradie)</author>
    <content:encoded>
    &lt;iframe src=&quot;http://rcm.amazon.com/e/cm?t=gridshore-20&amp;o=1&amp;p=8&amp;l=as1&amp;asins=1932394613&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;lc1=0000ff&amp;bc1=000000&amp;bg1=ffffff&amp;f=ifr&quot; style=&quot;width:120px;height:240px;float:left;padding:10px&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
This is the second book about ajax that I have read. And what a book it is. If you want to go into the depth of ajax this is the book you want. Within this review I will explain why.&lt;br /&gt;
&lt;br /&gt;
This book is devided into four parts:&lt;br /&gt;
&lt;strong&gt; Rethinking the web application&lt;br /&gt;
Some general discussion about website programming and your first ajax helloworld application. The interesting stuff already starts here. This is your first introduction into using design patterns in your javascript code. Excellent description of some of the more important design patterns are given. Even if you do not like ajax you can leanr something about patterns here.&lt;br /&gt;
&lt;/strong&gt; Core techniques&lt;br /&gt;
Discusses the actual implementation of Model View Controller pattern within ajax. Some nice tips on javascript and style sheet usage.&lt;br /&gt;
&lt;strong&gt; Professional ajax&lt;br /&gt;
Discusse the more advanced Professional ajax side. Now we are learning about security, usability and performance. Also very interesting stuff&lt;br /&gt;
&lt;/strong&gt; Ajax by example&lt;br /&gt;
Interesting if you want to learn how it really works, I&#039;dd rather use an existing library, but it is fun to learn.&lt;br /&gt;
&lt;br /&gt;
So this is a great book, with real live examples and a very wide coverage of the subject. 
    </content:encoded>

    <pubDate>Sun, 22 Jan 2006 10:36:34 +0100</pubDate>
    <guid isPermaLink="false">http://www.gridshore.nl/blog/index.php?/archives/43-guid.html</guid>
    
</item>
<item>
    <title>Foundations of Ajax</title>
    <link>http://www.gridshore.nl/blog/index.php?/archives/28-Foundations-of-Ajax.html</link>
            <category>Books</category>
    
    <comments>http://www.gridshore.nl/blog/index.php?/archives/28-Foundations-of-Ajax.html#comments</comments>
    <wfw:comment>http://www.gridshore.nl/blog/wfwcomment.php?cid=28</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.gridshore.nl/blog/rss.php?version=2.0&amp;type=comments&amp;cid=28</wfw:commentRss>
    

    <author>nospam@example.com (Jettro Coenradie)</author>
    <content:encoded>
    &lt;iframe src=&quot;http://rcm.amazon.com/e/cm?t=gridshore-20&amp;o=1&amp;p=8&amp;l=as1&amp;asins=1590595823&amp;fc1=000000&amp;=1&amp;lc1=0000ff&amp;bc1=000000&amp;lt1=_blank&amp;IS2=1&amp;bg1=ffffff&amp;f=ifr&quot; style=&quot;width:120px;height:240px;&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
It just hurts to put an article about ajax on my website, those knowing soccer teams in the netherlands will understand me. But nevertheless, I started reading this book mentioned above &lt;b&gt;Foundations of Ajax&lt;/b&gt;. I have read the book and it has a high been there done that feeling. This has nothing to do with the book but more with my knowledge of Javascript and the DOM. About 2 years a go I did a lot with javascript and now this knowledge comes in hand. I think this is a nice book. I did not read anything about ajax until today, still the book is very easy to read (Mayby a little bit to easy if you have some prior experience). I do like the samples that are given, almost all classes and scripts are given in total and therefore easy to read and follow. A lot of screendumps clarify the examples. i gues the most interesting stuff is yet to come (the different toolboxes and unit testing your scripts). I also like the part where test driven Javascript development is discussed. The best part is chapter 8, a discussion of a more thorough example. A framework called &lt;a href=&quot;http://taconite.sourceforge.net/&quot;  title=&quot;taconite&quot;&gt;Taconite&lt;/a&gt; is used to create a dashbord application. An example of using rss, word completion and using a webservice. The example can be easily deployed in a webserver.&lt;br /&gt;
&lt;br /&gt;
I do have a note of critique, I think there is actually little theory in the book. I really read it in one week-end, so i guess it will take you about 8 hours fulltime. On the other hand that can be an advantage to &lt;img src=&quot;http://www.gridshore.nl/blog/templates/gridshore/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
The book triggers me to find nice extensions for my websites, I cannot wait to try out some stuff in the book. I see this as a compliment. Well in short, I like the book and if you are clean in the area of ajax and want to learn something about it in a week-end, this is your book. &lt;br /&gt;
&lt;br /&gt;
Within the next few weeks i will try some of the existing frameworks, I did have a short look at the demo from Matt Raible:&lt;br /&gt;
&lt;a href=&quot;http://raibledesigns.com/page/rd?entry=what_s_the_best_way3&quot;  title=&quot;Matt Raible ~ Equinox and ajax&quot;&gt;Matt Raible ~ Equinox and ajax&lt;/a&gt; 
    </content:encoded>

    <pubDate>Sat, 05 Nov 2005 23:50:39 +0100</pubDate>
    <guid isPermaLink="false">http://www.gridshore.nl/blog/index.php?/archives/28-guid.html</guid>
    
</item>
<item>
    <title>Hibernate in Action</title>
    <link>http://www.gridshore.nl/blog/index.php?/archives/9-Hibernate-in-Action.html</link>
            <category>Books</category>
    
    <comments>http://www.gridshore.nl/blog/index.php?/archives/9-Hibernate-in-Action.html#comments</comments>
    <wfw:comment>http://www.gridshore.nl/blog/wfwcomment.php?cid=9</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.gridshore.nl/blog/rss.php?version=2.0&amp;type=comments&amp;cid=9</wfw:commentRss>
    

    <author>nospam@example.com (Jettro Coenradie)</author>
    <content:encoded>
    &lt;iframe src=&quot;http://rcm.amazon.com/e/cm?t=gridshore-20&amp;o=1&amp;p=8&amp;l=as1&amp;asins=193239415X&amp;fc1=000000&amp;lc1=0000ff&amp;bc1=000000&amp;lt1=_blank&amp;nou=1&amp;IS2=1&amp;f=ifr&amp;bg1=ffffff&amp;f=ifr&quot; width=&quot;120&quot; height=&quot;240&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;br /&gt;
&lt;/iframe&gt;&lt;br /&gt;
This is one of the best computer books I have ever read. It gives a thourough description of the hibernate ORM tool and it gives a very good introduction into Object Relational Mapping in genereal.&lt;br /&gt;
&lt;br /&gt;
Having said that, lets have a look at the book.&lt;br /&gt;
&lt;br /&gt;
A lot can be found about the &lt;i&gt;Paradigm mismatch&lt;/i&gt;. It has to do with the different appraoch of persisting data in a relational database and working with a domain object model in an object oriented programming language. This mismatch is discussed in the first chapter, together with some alternatives. &lt;br /&gt;
&lt;br /&gt;
This chapter is a must read for every serious OO programmer and designer.&lt;br /&gt;
&lt;br /&gt;
The second chapter discusses the first steps into Hibernate. It talks about the SessionFactory, queries, callback intefaces, etc. Then it discusses the configuration in managed and non-managed environments.&lt;br /&gt;
&lt;br /&gt;
Then the first tough chapter about the mappings you can realize with hibernate (oops, there is even an advanced mapping chapter). Interesting to see and read about the different mapping principles you can have like, associations, class inheritence and fine grained versus course grained objects. Interesting discussion about object identity and mapping the domain model.&lt;br /&gt;
&lt;br /&gt;
In chapter 4 your going through the CRUD methods of hibernate, you will learn about the persistence life cycle and some optimizations. A very important part is the fetch depth. How many objects are you going to store in your internal memory.&lt;br /&gt;
&lt;br /&gt;
The next chapter deals with transactions and concurrency, of course these are very important. I liked the caching stuff better. This is where you can get your optimization. it is also one of the hardest parts to design. A lot of choices to be made, you need to understand your application.&lt;br /&gt;
&lt;br /&gt;
Then we go into the advanced mapping topics. Mapping types, custom mapping types, collections. The discussions of 1 to multi and multi-multi associations is very extensive.&lt;br /&gt;
&lt;br /&gt;
Chapter 7 deals with querying your data effectively. How to do pagination, use comparison operators, use joins and write report queries. This chapter contains to much to grasp at once. The introduction of this chapter allready states to use it when it comes a long. You will be reading this chapter more than once, I assure you.&lt;br /&gt;
&lt;br /&gt;
The last two chapters are about writing Hibernate applications and about tools that can help you.&lt;br /&gt;
&lt;br /&gt;
To my opinion this is a very good book, 5 stars at amazon for sure. 
    </content:encoded>

    <pubDate>Mon, 18 Jul 2005 23:16:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.gridshore.nl/blog/index.php?/archives/9-guid.html</guid>
    
</item>
<item>
    <title>Extreme programming refactored : The Case Agains Xp (conclusion)</title>
    <link>http://www.gridshore.nl/blog/index.php?/archives/17-Extreme-programming-refactored-The-Case-Agains-Xp-conclusion.html</link>
            <category>Books</category>
    
    <comments>http://www.gridshore.nl/blog/index.php?/archives/17-Extreme-programming-refactored-The-Case-Agains-Xp-conclusion.html#comments</comments>
    <wfw:comment>http://www.gridshore.nl/blog/wfwcomment.php?cid=17</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.gridshore.nl/blog/rss.php?version=2.0&amp;type=comments&amp;cid=17</wfw:commentRss>
    

    <author>nospam@example.com (Jettro Coenradie)</author>
    <content:encoded>
    I made through the complete book. An interesting but rather long read it was. First some general remarks. I did like the book, well at least the first 100 pages. Then to me it was more of the same. The satirical songs and stories began to iritate me. The number of references to other parts of the book are way to much as well. Nevertheless, I did like the book, some conclusions are a bit harsh. The book gives some refactorings to the XP process to make it better. The best thing is that the book makes you think about your own process while developing software. Should you read this book? Tough question, if you have the time I would most certainly read it. If you do not have the time, you can allways jump to the conclusions of most of the chapters.&lt;br /&gt;
&lt;br /&gt;
The book consists of a number of parts each containing a number of chapters.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Part I&lt;/b&gt;&lt;br /&gt;
This section gives a short introduction about XP. It discusses the values of XP, the 12 practices, the roles and the activities.&lt;br /&gt;
&lt;br /&gt;
I think the best lines that tell you how the writers think about the book are these.&lt;br /&gt;
&lt;br /&gt;
&quot;&lt;i&gt;XP is a methodology created by programmers who are sick of management telling them that they can no longer just code, but they must follow a formal methodology. XP&#039;s main tenets are all very programmer=centric and often fail to consider the larger scope of a software development project.&lt;/i&gt;&quot;&lt;br /&gt;
&lt;br /&gt;
The next chapter discusses the famous XP project C3. Some of the project members were Kent Beck, Ron Jeffries, Martin Fowler, Chet Hendrickson and Don Wells. There are a lot of quotes and references to the wiki website and to other resources on the web. This way you can create your own opinion. The discussion whether the project is a success or not is hard. It did come to results within 11 months that are still used. Other projects trying the same did not succeed at all. However 4 years of hard work did not nearly reach the state of providing the complete system. I guess Xp is hard to be used in a project that takes longer than about 3-4 months. But the biggest problem is the lack of design and specifications. I believe in the goal oriented design and the use of personas. See the book &lt;url=?postid=8&gt;The inmates are running the asylum&lt;/url&gt;.&lt;br /&gt;
&lt;br /&gt;
 A few of the most interesting links are:&lt;br /&gt;
&lt;a href=&quot;http://c2.com/cgi/wiki?CthreeProjectTerminated&quot;&gt;http://c2.com/cgi/wiki?CthreeProjectTerminated&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://c2.com/cgi/wiki?ChryslerComprehensiveCompensation&quot;&gt;http://c2.com/cgi/wiki?ChryslerComprehensiveCompensation&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Chapter 3, the final chapter of this part introduces the twelve serpents and the &lt;b&gt;circle of snakes&lt;/b&gt;. What they want to tell you is that every snake is made safe by the following snake, if one snake is let loose, the circle brakes and all snakes are on the run. The remainder of the book will discuss the snakes and refactorings that makes the process safer. The snakes are:&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;No detailed written requirements.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Emergent design&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Constant Refactoring&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Unit tests&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Pair programming&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Collective ownership&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;on site customer representative&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
I&#039;ll give an example by one of the snakes. &lt;b&gt;Emergent design&lt;/b&gt; means that very little time is spent designing the system before coding begins. The overall design and architecture will morph many times in the course of the project. But the lack of significant upfront design is considered &quot;safe&quot; because the code is being constantly refactored. So if refactoring fails ....&lt;br /&gt;
&lt;br /&gt;
They make it pretty obvious they do like some concepts, but you need to refactor them for your project.&lt;br /&gt;
&lt;br /&gt;
One thing that made me laugh in the book was there way of discussing the 5 o&#039;clock go home, anythin not done, throw it away XP practise. The following satirical quote makes it clear.&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;b&gt;Child&lt;/b&gt; : &quot;What did you do today, Daddy?&quot;&lt;br /&gt;
&lt;b&gt;Father&lt;/b&gt; : &quot;I tossed out my code and went home clean. And tomorrow I intend to pair program and stare at someone else typing.&quot;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Part II&lt;/b&gt;&lt;br /&gt;
This part is about the social aspect of XP. One of the things that remains in my head when reading this chapter is bout the blame when the project fails. Within XP it is the people who are to blame, since the process is good. If you think bad about the process, you are in fear. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Onsite customer&lt;/b&gt;&lt;br /&gt;
The red line within this chapter is that being a customer is hard. Youe need to provide the requirements on story cards and prioritize them. You need to write runnable test scripts. When the project becomes to large you need to have a team from the customer. Because there are no written requirements the customers needs to talk with one voice. The solution is to have a customer available to an analist. The analist takes care of the requirements by analysing the customers needs and goals.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Pair programming&lt;/b&gt;&lt;br /&gt;
Pair programming can be helful when looking at tough problems. Pair programming with 100% of production code is extreme. People just cannot handle it being in one persons space with two persons all the time. On top of that pair programming is not the same as peer review while both are targetted at getting better code.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Oral documentation&lt;/b&gt;&lt;br /&gt;
One of the things programmers hate most is writing documentation. That is possibly the reason why so much programmers love XP. I think the following quote from the book touches the heart of the problem.&lt;br /&gt;
&lt;i&gt;Fowlers quote highlights  the fact that design &lt;u&gt;documents&lt;/u&gt; in XP are mostly transitory. This contrasts greatly with the notion of design documents in, say RUP, which calls all items of ducomentation &lt;u&gt;artifacts&lt;/u&gt; (which suggest documents that are long-lived and may be dug up several years later). Although this notion may at first seem absurd, the maintenance team who actually do need to dig up that documentation several years later will offer a prayer of thanks to the previous team members for their forward thinking.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Within RUP it is important to decided what to document. Ask yourself the questions: Who is going to use it? Who is going to miss it?&lt;br /&gt;
&lt;br /&gt;
It does not take courage to stop writing documentation. It takes courage to take a product into maintenance without documentation.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Design after first testing&lt;/b&gt;&lt;br /&gt;
No BDUF - Big Design Up Front, this probably one of the biggest issues the writers of the book have with XP. I strongly believe that Design upfront is very important. This does not mean that writing tests upfront is wrong. Writing unit tests upfront does make you think about what to write before you write it. This also valid for design and analysis. Therefore test driven development is important, but equivalent to design upfront. In fact they complement each other. The chapters contains the following lines by David Van Der Klauw which I find interesting:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;My concept of bug finding is something like this : A programmer should find 9/10 bugs before check-in, the automatic tests should find 9/10 remaining bugs before hand over to QA, QA should find 9/10 before handover to customers who will again find 9/10 the other 1/10 will never be found. Therefore the customer only sees 1 in a 1000 bugs&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Morale, if you release to soon to the customer, he sees to many bugs and looses interest in the product.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Constant refactoring after programming&lt;/b&gt;&lt;br /&gt;
Refactoring is not bad, that is clear. However, constant refactoring code that works fine is not allways good. Why keep changing code just because it smells bad. So use refactoring when changes are necessary for requirements changes, bugs, or after a code review, but know when to stop.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another thing about refactoring is UserInterface refactoring. Especially within XP, the users get to use the product very soon. But refactoring the UI makes the users look for functionality every release. When the users get to use the product soon, you also must maintain the live data. Refactoring also leads to a database refactor. Be very carefull with production data. Make solid migration plans.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;User stories and acceptance tests&lt;/b&gt;&lt;br /&gt;
With all requirements the analysis is very important. Within XP User stories are used. These are very short descriptions of what a user wants to do with the system. Comparing these to use case (RUP) is obvious. What is missing with user stories is the failure conditions and actions, or the rainy-day scenarios. The step between the user stories and real code is large. You need to do requirements as well as design. The emphasize within XP is on Code. If the user story is not clear, use the customer representative to make things clear. Problem is this extra information is only documented in the code. Refactoring and you can loose requirements. No problem, if the customer representative does not miss it with his tests then it was probably not important. Another part that is hard to graps within user stories, especially since the customer should write these are the non functional requirements (FURPS+)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Part III, IV and V&lt;/b&gt;&lt;br /&gt;
To be honest, this is the moment where I started to loose interest. More of the same, sometimes in other words, there are a few statements that I want to mention and some good references.&lt;br /&gt;
&lt;br /&gt;
Interesting subject about fixed scope, time, budget. This leaves just one parameter open and thats quality. You cannot make them all fixed.&lt;br /&gt;
&lt;br /&gt;
Another thing that struck me it the use of frameworks. The book states this is not done within XP since you will never find a user story that tells you to use a framework. I cannot image this is true. One of the reasons I think that this book is to extreme itself.&lt;br /&gt;
&lt;br /&gt;
They are also talking about Emergent Architecture, this is achieved via evolutionary prototyping that ends up as production code. Looking at RUP for instance, you have early prototyping, the code is not used in the production code. Usually this prototyping is quick en dirty, just to see that it works.&lt;br /&gt;
&lt;br /&gt;
That&#039;s about it for the book. Hope this helps. I will use the gained knowledge to write down some theory in the wiki. I will close this review with a last quote, that applies to XP, but to some extend to the book as well.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;I believe that a major flaw in XP is that it takes things to an extreme. I believe in doing things is moderation and trying to optimize the value by trading off one factor against another. In life, I fin that rarely is the optimum achieved at some extreme point.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;iframe src=&quot;http://rcm.amazon.com/e/cm?t=gridshore-20&amp;o=1&amp;p=8&amp;l=as1&amp;asins=1590590961&amp;fc1=000000&amp;lc1=0000ff&amp;bc1=000000&amp;lt1=_blank&amp;nou=1&amp;IS2=1&amp;f=ifr&amp;bg1=ffffff&amp;f=ifr&quot; width=&quot;120&quot; height=&quot;240&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;br /&gt;
&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Wed, 08 Jun 2005 23:44:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.gridshore.nl/blog/index.php?/archives/17-guid.html</guid>
    
</item>
<item>
    <title>Extreme programming refactored : The Case Agains Xp (part I)</title>
    <link>http://www.gridshore.nl/blog/index.php?/archives/20-Extreme-programming-refactored-The-Case-Agains-Xp-part-I.html</link>
            <category>Books</category>
    
    <comments>http://www.gridshore.nl/blog/index.php?/archives/20-Extreme-programming-refactored-The-Case-Agains-Xp-part-I.html#comments</comments>
    <wfw:comment>http://www.gridshore.nl/blog/wfwcomment.php?cid=20</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.gridshore.nl/blog/rss.php?version=2.0&amp;type=comments&amp;cid=20</wfw:commentRss>
    

    <author>nospam@example.com (Jettro Coenradie)</author>
    <content:encoded>
    This book explores the XP hype and discusses the problems. In the end the best parts of XP will be used in the writers own software engineering process.&lt;br /&gt;
&lt;br /&gt;
The first part gives a summary of the XP process and the problems with the c3 project of Daimler-Chrysler. This is the project that is talking about to prove Xp can be used in larger projects. By using excerpts from a number of wiki resources they tend to show the problems with the c3 project. The following resources are good to read.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://c2.com/cgi/wiki?CthreeProjectTerminated&quot;&gt;http://c2.com/cgi/wiki?CthreeProjectTerminated&lt;br /&gt;
&lt;/a&gt;&lt;br /&gt;
Interesting wiki page, fun to read. But the finesse is at the end. In fact the most important part of the part is rewritten about 15 times:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&quot;Near as I can tell the fundamental problem was that the GoldOwner and GoalDonor weren&#039;t the same. The customer feeding stories to the team didn&#039;t care about the same things as the managers evaluating the team&#039;s performance. This is bad, and we know it&#039;s bad, but it was masked early because we happened to have a customer who was precisely aligned with the IT managers. The new customers who came on wanted tweaks to the existing system more than they wanted to turn off the next mainframe payroll system. IT management wanted to turn off the next mainframe payroll system. Game over. Or not, we&#039;ll see...&quot;&lt;/i&gt; -- KentBeck&lt;br /&gt;
&lt;br /&gt;
The discussion whether the project is a success or not is hard. It did come to results within 11 months that are still used. Other projects trying the same did not succeed at all. However 4 years of hard work did not nearly reach the state of providing the complete system. I guess Xp is hard to be used in a project that takes longer than about 3-4 months. But the biggest problem is the lack of design and specifications. I believe in the goal oriented design and the use of personas. See the book &quot;The inmates are running the asylum&quot;.&lt;br /&gt;
&lt;br /&gt;
The stuff of Xp that is very good to use:&lt;br /&gt;
test-driven development, continuous Integration, Coding standards, release soon and often, interaction design and pair programming.&lt;br /&gt;
&lt;br /&gt;
One important remark for pair programming, use it wise. I have the same opinion as the writers of the book. Only use pair programming for the hard part of your system.&lt;br /&gt;
&lt;br /&gt;
The following excerpt from the book made me laugh, but I think it is very close to the truth.&lt;br /&gt;
&lt;i&gt;&quot;XP is a methodology creates by programmers who are sick of management telling them that they can no longer just code, but they must follow a formal methodology. XP&#039;s main tenets are all very programmer-centric and often fail to consider the larger scope of a software development project.&quot;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
This something we have to learn from within our gridshore philosophy. We must take care not to make it a programmers game. We need to have good designers (interaction, interface and software) as well.&lt;br /&gt;
&lt;br /&gt;
The final chapter of part one discusses what can go wrong with the XP process. This chapter introduces the concept of the circle of snakes. Each snake represents one the practices of xp. What makes it interesting is that each snake can only be made safe by daisy chaining it to the next snake. I&#039;ll give an example by one of the snakes. &lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;Emergent design&lt;/b&gt; means that very little time is spent designing the system before coding begins. The overall design and architecture will morph many times in the course of the project. But the lack of significant upfront design is considered &quot;safe&quot; because the code is being constantly refactored.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Why is this rng so interesting, since failing with one of the snakes makes the complete process instable. It is very hard do all snakes right, therefore the process is hard. A process should not be hard to use, if one of the snakes fails the process should have contingency build in.&lt;br /&gt;
&lt;br /&gt;
One of the things they keep referring to is throwing yuor code away at 5 oclock if it does not integrate. see the following url for an image of the process&lt;br /&gt;
&lt;a href=&quot;http://xp123.com/xplor/xp0006/index.shtml&quot;&gt;http://xp123.com/xplor/xp0006/index.shtml&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I am curious what the book will bring in the following parts, more to follow ...&lt;br /&gt;
&lt;br /&gt;
&lt;iframe src=&quot;http://rcm.amazon.com/e/cm?t=gridshore-20&amp;o=1&amp;p=8&amp;l=as1&amp;asins=1590590961&amp;fc1=000000&amp;lc1=0000ff&amp;bc1=000000&amp;lt1=_blank&amp;nou=1&amp;IS2=1&amp;f=ifr&amp;bg1=ffffff&amp;f=ifr&quot; width=&quot;120&quot; height=&quot;240&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;br /&gt;
&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Sun, 22 May 2005 23:53:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.gridshore.nl/blog/index.php?/archives/20-guid.html</guid>
    
</item>
<item>
    <title>The inmates are running the asylum</title>
    <link>http://www.gridshore.nl/blog/index.php?/archives/23-The-inmates-are-running-the-asylum.html</link>
            <category>Books</category>
    
    <comments>http://www.gridshore.nl/blog/index.php?/archives/23-The-inmates-are-running-the-asylum.html#comments</comments>
    <wfw:comment>http://www.gridshore.nl/blog/wfwcomment.php?cid=23</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.gridshore.nl/blog/rss.php?version=2.0&amp;type=comments&amp;cid=23</wfw:commentRss>
    

    <author>nospam@example.com (Jettro Coenradie)</author>
    <content:encoded>
    This book from &lt;b&gt;Alan Cooper&lt;/b&gt;discusses the advantages of using goal oriented design to create good products. I think it is a must read for all programmers, designers, project leaders and managers as well. By using a lot of examples from the field, this book explains why designing your software is important and why you must use specialist to do the job. But beware, some parts of the book might be to confronting to some readers.&lt;br /&gt;
&lt;br /&gt;
The first part of the book introduces you into the dancing bear and cognitive friction. Cognitive friction deals with people feeling stupid while using products like tape recorders, tv sets, computer programs, etc. This all has to do with the Dancing bear products.&lt;br /&gt;
&lt;br /&gt;
A dancing bear is someting wonderous to see. Not that the bear can dance well, but the fact that it can dance at all. The same is valid for a lot of software. The programs don&#039;t do a good job, but the fact that it works and makes the users life much simpler makes him forget that it can be even better. This is what is called cognitive friction, the fact that products we use on a daily basis are hard to use. People dealing with cognitive friction tend to fall into two groups:&lt;br /&gt;
apologist : &lt;br /&gt;
make excuses for the creators since they can make the programm do something they could not do before.&lt;br /&gt;
survivors : &lt;br /&gt;
they know something is radicully wrong, but they do not know what.&lt;br /&gt;
&lt;br /&gt;
The apologists say, &quot;look a this, a dancing bear!&quot;. The survivors say, &quot;I need something that dances, so i guess a bear is the best I am gonna get.&quot;.&lt;br /&gt;
&lt;br /&gt;
Ofcourse the solution for the dancing bear is a good design upfront.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The second part of the book is interesting from a project management perspective. One of the issues is about deadline management. To often managers rather ship a failure on time than risk going late. If the product is great, being late is not a problem very long. Another issue with deadline management is the requirements. How many of you have working with these long feature lists. To often programmers determine how long it will take to implement a feature. Then some of the features will be out of scope and others won&#039;t. Programmers have a very big influence on this process. It would be way better to let the Personas goals determine which requirement is within scope, since these goals are the only important thing for the product. If you find it hard to separate features from goals, the book gives a nice example:&lt;br /&gt;
Students must write down the type of product as soon as possible based on provided features.&lt;br /&gt;
1. internal combustion engine&lt;br /&gt;
2. four wheels with rubber tires&lt;br /&gt;
3. a transmission&lt;br /&gt;
4. a steering wheel&lt;br /&gt;
&lt;br /&gt;
A lot of students will now write down a car, then the following two goals are given&lt;br /&gt;
5. cuts grass quickly and easily&lt;br /&gt;
6. comfortable to sit on&lt;br /&gt;
&lt;br /&gt;
Therefor goal oriented design will point you to the right direction and most often better solutions.&lt;br /&gt;
&lt;br /&gt;
The next section explains why programmers &#039;Homo Logicus&#039; can never be good designers. This was sometimes confronting to me, and therefore a very good read. One thing that I remember is that programmers use the implementation model for designing user interactions. This way the program does not mirror the end users goals, it reflects the mechanisms within. The most important part is that programmers create programs they would like as users. They put in a lot of features that they think are cool or good to have. Usually these do not support an end users goal.&lt;br /&gt;
&lt;br /&gt;
Another problem in the current software world is that most of the project leaders are former programmers. Designing is not there nature. If a designer is on the team, most of the time he is not the one taking the desisions about what is in and what not. In the end it is the programmer that has the power. He takes the design as a guidance, while it should be the law. This way, if you have a designer, he can create the greatest design, but it must be followed by the programmers.&lt;br /&gt;
&lt;br /&gt;
The next part of the book is very interesting. It gives you some guidelines about the way to get a good design.&lt;br /&gt;
The biggest thing to talk about is the creation of personas. From conversations with the stakeholders a number of personas are created. One very important thing is that the end user does not directly affect the solution. It can only be that one of the personas get an extra or more specified goal. Personas are not real people. The personas have there goals in there work. When designing a product usually a large number of personas are taken and they should all be satisfied. It turns out that this is wrong. The best products are designed for 1 persona. Let me explain this with an example. As a car company, you want to create a new car. You have three personas: Wendy is a mother of three children, she uses the car to get the children to school. Fred is a salesman that uses the car alone and is a lot on the road. He likes to ride sportive. Then we have Henk, who has his own construction company ans needs to take a lot of tools with him. Trying to please them all would lead to a very strange car: a convertable van  with room for kids and large tools. It would be way better to create three different cars. The same is valid for software. You need to define your primary personas. These are the personas you design for. You can have a maximum of three primary personas per product. In theory you should design a different interface for each primary persona. When documenting the requirements for the system, you do not write down features anymore, you create personas and there goals.&lt;br /&gt;
&lt;br /&gt;
The books continous explaining about the goals the personas can have and how to find these goals:&lt;br /&gt;
- Personal goals (not feel stupid, not make mistakes, have fun)&lt;br /&gt;
- Corporate goals (increase our profit, defeat our competition, offer more products or services)&lt;br /&gt;
- Practical goals (avoid meetings, handle clients demands, record clients orders)&lt;br /&gt;
- False goals (run in a browser, be easy to learn, speed up data entry, use cool technology or features)&lt;br /&gt;
&lt;br /&gt;
The final part of the book tells you more about designing with the software development process. The most important lesson here is to design first and well, stick to it while programming and create good products.&lt;br /&gt;
&lt;br /&gt;
This is a very short introduction into the book, I am very enthousiastic about the book. Ofcourse you can find it at amazon, please use the link below and support me.&lt;br /&gt;
&lt;iframe src=&quot;http://rcm.amazon.com/e/cm?t=gridshore-20&amp;o=1&amp;p=8&amp;l=as1&amp;asins=0672326140&amp;fc1=000000&amp;lc1=0000ff&amp;bc1=000000&amp;lt1=_blank&amp;nou=1&amp;IS2=1&amp;f=ifr&amp;bg1=ffffff&amp;f=ifr&quot; width=&quot;120&quot; height=&quot;240&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;br /&gt;
&lt;/iframe&gt; 
    </content:encoded>

    <pubDate>Wed, 18 May 2005 23:58:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.gridshore.nl/blog/index.php?/archives/23-guid.html</guid>
    
</item>

</channel>
</rss>