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

<channel>
	<title>Duchess &#187; agile</title>
	<atom:link href="http://jduchess.org/blog/tag/agile/feed" rel="self" type="application/rss+xml" />
	<link>http://jduchess.org</link>
	<description>Globally Connecting Women in Java Technology</description>
	<lastBuildDate>Thu, 10 May 2012 06:45:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>The Value of Diversity: Gender and Other Diversity in Agile</title>
		<link>http://jduchess.org/blog/the-value-of-diversity-gender-and-other-diversity-in-agile</link>
		<comments>http://jduchess.org/blog/the-value-of-diversity-gender-and-other-diversity-in-agile#comments</comments>
		<pubDate>Mon, 26 Jul 2010 12:42:36 +0000</pubDate>
		<dc:creator>Clara Ko</dc:creator>
				<category><![CDATA[links]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[diversity]]></category>
		<category><![CDATA[gender]]></category>

		<guid isPermaLink="false">http://jduchess.org/?p=890</guid>
		<description><![CDATA[This is the second in a series of discussions looking at factors that enable Agile teams to be successful. Diversity of gender, culture, opinion, perspective, skills and background is considered to be an important factor in forming and persisting high-performance teams. This news item examines the perspectives from variety of commentators. Read more at InfoQ.com]]></description>
			<content:encoded><![CDATA[<p>This is the second in a series of discussions looking at factors that enable Agile teams to be successful. Diversity of gender, culture, opinion, perspective, skills and background is considered to be an important factor in forming and persisting high-performance teams. This news item examines the perspectives from variety of commentators.
<li><a href="http://www.infoq.com/news/2010/07/value-of-diversity">Read more at InfoQ.com</a></li>
]]></content:encoded>
			<wfw:commentRss>http://jduchess.org/blog/the-value-of-diversity-gender-and-other-diversity-in-agile/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XP Days Benelux 2010</title>
		<link>http://jduchess.org/blog/xp-days-benelux-2010</link>
		<comments>http://jduchess.org/blog/xp-days-benelux-2010#comments</comments>
		<pubDate>Sat, 26 Jun 2010 09:56:14 +0000</pubDate>
		<dc:creator>Duchess</dc:creator>
				<category><![CDATA[events]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[openconference]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://jduchess.org/?p=877</guid>
		<description><![CDATA[XP Day Benelux is an international conference about Agile methods, intended for people from all walks of life who are involved with IT. It provides a good opportunity for exchanging ideas and sharing experiences and is suited for both experienced participants and beginners in Agile methods. The focus of this conference is on practical knowledge, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.xpday.net/" target="xpdays"><img style="float:left;margin-right:20px" src="http://www.xpday.net/html/Xpday2010/logo-small.png" alt="XP Days Benelux 2010" /></a>XP Day Benelux is an international conference about Agile methods, intended for people from all walks of life who are involved with IT. It provides a good opportunity for exchanging ideas and sharing experiences and is suited for both experienced participants and beginners in Agile methods. The focus of this conference is on practical knowledge, real-world experience, and active participation of everyone.</p>
<p>The 8th edition XP Days will also be held in <a href="http://www.xpday.net/Xpday2010/Location.html">Kapellerput in Heeze</a>, near Eindhoven.</p>
<p><a href="http://www.xpday.net/Xpday2010/CallForSessions.html" target="xpdays">Call for Sessions is now open (until July 15)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jduchess.org/blog/xp-days-benelux-2010/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAOO 2009 recap &#8211; Wednesday</title>
		<link>http://jduchess.org/blog/jaoo-2009-recap-wednesday</link>
		<comments>http://jduchess.org/blog/jaoo-2009-recap-wednesday#comments</comments>
		<pubDate>Tue, 13 Oct 2009 12:43:33 +0000</pubDate>
		<dc:creator>Linda van der Pal</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[aarhus]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[agile lifestyle]]></category>
		<category><![CDATA[C++ vs Java]]></category>
		<category><![CDATA[deliberate practice]]></category>
		<category><![CDATA[jaoo]]></category>
		<category><![CDATA[organizational patterns]]></category>
		<category><![CDATA[recap]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[systems management theory]]></category>
		<category><![CDATA[value managemen]]></category>

		<guid isPermaLink="false">http://jduchess.org/?p=671</guid>
		<description><![CDATA[C++, Java and .NET &#8211; Lessons Learned from the Internet Age, and What it Means for the Cloud and Emerging Languages (Cameron Purdy) The top 10 reasons why Java has been able to supplant C++ as the dominant programming language are: automated garbage collection (meaning you can build libraries without worrying about memory management), the [...]]]></description>
			<content:encoded><![CDATA[<p><strong>C++, Java and .NET &#8211; Lessons Learned from the Internet Age, and What it Means for the Cloud and Emerging Languages (<a href="http://www.jroller.com/cpurdy/">Cameron Purdy</a>)</strong><br />
The top 10 reasons why Java has been able to supplant C++ as the dominant programming language are: automated garbage collection (meaning you can build libraries without worrying about memory management), the fast build process, the simplicity of source code and artifacts, the binary standards (cross-platform development), dynamic linking (no more dll hell), portability, standard type system (primitive types and java.lang library), reflection (again necessary for making libraries), performance (due to garbage collection and multi-threading), and safety (no more pointers and therefor no more buffer overrruns). On the other hand there are 5 reasons why Java has not been able to supplant C++: Startup time (many classes have to be loaded to run the simplest of programs), memory footprint, full garbage collection pauses, no deterministic destruction, and barriers to native integration. Despite these last five reasons, the shift to Java has been made anyway. Why? Because the internet came along. Suddenly applications were run in a browser and no longer on the client. Suddenly those five advantages C++ had weren&#8217;t as important anymore. And then they came up with scripting languages that were a lot more simple as well. Many of these run on Java&#8217;s JVM.<br />
But now we are shifting to Cloud computing and that is where Java still misses a few aspects. When it comes to the virtual machine for example, we&#8217;re going to need a lower memory footprint and predictable garbage collection pauses. So the conclusion is that either Java will step up to the new challenges or it will get replaced by another language that does.</p>
<p><strong>Guiding Your Personal Life: Plan-driven or Agile (<a href="http://www.lindarising.org">Linda Rising</a>)</strong><br />
Around 1800 the industrial age began in England. Suddenly people moved from the farm to the factory. This change was inspired by many elements. First of all the clock was becoming widespread in it&#8217;s use, which gave people an accurate way to tell time, allowing people to make punctual agreements. Second, caffeineated beverages were discovered, replacing beer as the main beverage. As water had to be boiled for making tea and coffee, it became largely safe to drink. This coupled to the rise of factories led to the lifestyle we still have today. This lifestyle, however, isn&#8217;t very natural. Until the industrial age the time for sleeping was dictated by the sun, allowing people more sleep in winter when it was neede more. Furthermore, caffeine isn&#8217;t very healthy either as it blocks the natural hormone that tells us we are sleepy, meaning we sleep even less. More and more, sleep is seen as something that is a waste of time. While it has been proven that without adequate sleep, we are not at our best, physically, mentally or emotionally. Even worse, without adequate sleep our brains show visible signs of premature aging. Caffeine will make us feel better and have us believe that we perform better, but the effects are no better than what a break would allow. Even more, caffeine only improves vigilance tasks. Tasks that require prolonged attention and little physical activity, like tightening bolts on a production line. And worse yet, for complex tasks only extroverts&#8217; performance improved, while introverts tended to get worse.<br />
Extensive experiments have been conducted that prove that sleep improves our learning capacities. Even just a short nap helps a lot. Sleep is divided up into cycles that consist of several phases. So maybe we should make sure that we use similar cycles for our activities. At the very least we should experiment with these ideas to see what works and what doesn&#8217;t.</p>
<p><strong>Organizational Patterns and Scrum: Fine-tuning your Agile Implementation (<a href="http://www.gertrudandcope.com-a.googlepages.com/home">Gertrud Bjørnvig &amp; Jim O. Coplien</a>)</strong><br />
The presentation started off with a little roleplaying where several people from the audience got a hat with a role attached to it and had to act out what they thought were the distances between them and the other people on the team. Through this play several of the patterns from the book Organizational Design Patterns were shown. After this a short history of patterns was discussed, along with the definition of a pattern and what Scrum is. The statement was that Scrum is very complex and that it should contain a whole slew of patterns, and that if Scrum isn&#8217;t working properly for you, you might want to investigate these patterns to find out how they can help you get to where you want to be. The conclusion was that Scrum is a pattern language, where the patterns provide insight and encouragement to fix broken Scrums. The patterns can also be used as an incremental path to Scrum adoption. So if you haven&#8217;t read it yet, go read Organizational Design Patterns by Coplien and Harrison, as it contains essential knowledge everybody who wants to change their organization should have.</p>
<p><strong>Deliberate Practice in Software Development (<a href="http://www.poppendieck.com">Mary Poppendieck</a>)</strong><br />
In sports and music it is well known that you only get to be an expert if you practice a lot. And not just any practice, but deliberate practice. The four pillars of deliberate practice are having a mentor, being challenged, getting immediate feedback and being dedicated. Mentors in IT should hire and grow people, review and guide work, set technical standards and ensure technical excellence. Unfortunately, most companies don&#8217;t have mentors. They usualy assume that product champions are enough. But a product champion is more like a conductor than like a music teacher, necessary, but not enough to ensure quality. In order to be challenged, you should get to do hard things and be able to do them frequently. Only too often you don&#8217;t get challenging work assignments as assignments are handed out to the people who are already good at that type of work. And when it comes to feedback the programmers are often kept at arms lenght of the customers, so the feedback is usually indirect. A good example of direct feedback is the feedback you get when you work on an Open Source Project, it is immediate, constant and detailed. And finally, skill development takes time. Time spent in the same place, as rapid job movement doesn&#8217;t develop skill. Time to learn without interruptions. Time to invent, practice requires the time to make mistakes.</p>
<p><strong>The IT Division Refactored (<a href="http://www.richarddurnall.com">Richard Durnall</a>)</strong><br />
After quite a few years as an industry we&#8217;re still seeing over 60% of all projects in IT fail. This might be in part due to the way our IT divisions are structured. We are still working in a structure that was pioneered to manage a lot uneducated people. Despite the fact that we&#8217;re no longer uneducated and that we&#8217;ve known for quite some years that this model is quite inefficient for our current needs. All of this because managers believe that it is better to fail conventionally, than to succeed unconventionally. The current model is to start at the top, appoint managers by specialisation, allocate people to divisions/teams, communicate a strategy, determine performance targets, define the delivery process and then to engage the customer. A better model would be to start with the customer, develop a strategy, design initial processes, define process metrics, structure the organisation to support these processes, appoint process managers, and to end at the top and then to adapt and improve. Things to keep in mind are to improve the process first and only then to automate. Otherwise you will automate things that weren&#8217;t working in the first place. You should also allow for change. IT systems are corporate concrete that will freeze the processes. Systems Management Theory resolves the challenge of how to do Agile at scale.</p>
<p><strong>Value Management (Evo) with Scrum development (<a href="http://www.gilb.com/">Kai Gilb</a>)</strong><br />
One of the reasons why selling Agile development to managers is so hard, is that the agile manifesto is all about the developer and not about delivering value to the stakeholders. The value management process contains eight steps: identifying the stakeholders, finding and specifying quantitatively the stakeholder values, prioritizing the possible solutions, breaking the winning solutions into smaller entities and packaging them, developing the packages, delivering to stakeholders, measuring the changes, and finally learning and changing the behavior. Scrum is only about the four steps from solutions to delivery. The value management cycle and the development cycle are both equaly long -1 to 3 weeks- and should take place at the same time. To implement value management you need to determine the business values, refine those in stakeholder values, refining those in product values and turn those in a prioritized scrum list. This doens&#8217;t have to be a top-down approach, as long as the end result is that the lists are defined. So if the problem is that a certain service is too slow, the developers are asked to come up with as many solutions as possible to solve this problem and then to present these to management in a value decision table, containing information on how much better the situation will become, how much resources it will cost etcetera. The greatest challenge to get this working is to get the business owners and steering committees to stop thinking in technical solutions. Business owners should instead focus on what their real needs are and the steering committee should sign off on value improvements, so the developers can come up with the best technical solutions that will give maximum product value improvements. Some case studies of where value management has been used show astonishing results.</p>
]]></content:encoded>
			<wfw:commentRss>http://jduchess.org/blog/jaoo-2009-recap-wednesday/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAOO 2009 recap &#8211; Tuesday</title>
		<link>http://jduchess.org/blog/jaoo-2009-recap-tuesday</link>
		<comments>http://jduchess.org/blog/jaoo-2009-recap-tuesday#comments</comments>
		<pubDate>Mon, 12 Oct 2009 13:37:43 +0000</pubDate>
		<dc:creator>Linda van der Pal</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[aarhus]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[agile modeling]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[jaoo]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[recap]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[type classes]]></category>

		<guid isPermaLink="false">http://jduchess.org/?p=662</guid>
		<description><![CDATA[Classes, Jim, but not as we know them (Simon Peyton Jones) Haskell is a statically typed, purely functional language that was designed 20 years ago by a committee of academics to be a research language. Most new programming languages never catch on and die after about a year having only ever had one user. Succesful [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Classes, Jim, but not as we know them (<a href="http://research.microsoft.com/en-us/people/simonpj/">Simon Peyton Jones</a>)</strong><br />
Haskell is a statically typed, purely functional language that was designed 20 years ago by a committee of academics to be a research language. Most new programming languages never catch on and die after about a year having only ever had one user. Succesful research languages live somewhere in between five to ten years having up to a hundred users. Truly succesful languages don&#8217;t die out at all and accumulate millions of users. Examples of this would be C++, Java, Perl and Ruby. On the other side of the spectrum are committee languages, that never have any users at all. Haskell on the other hand seems to defy this category. After about five years it had a couple thousand users and at the moment this number even seems to grow to tens of thousands. According to langpop.com it is hardly ever used, but on the contrary it is one of the most talked about languages. This popularity can be traced back to some good ideas like purely functional, controlling effects, laziness, concurrency and parallelism, domain specific embedded languages, sexy types in general and type classes in particular. As you can pass functions into Haskell functions, how can you make a general equals method that works no matter what arguments you pass into it? Unsatisfactory solutions are local choice or to have the function work for everything except functions. To solve this problem, Haskell has introduced type classes. A type class is an indication of the type of argument you expect: this function works for any type &#8216;a&#8217;, provided &#8216;a&#8217; is an instance of class &#8216;X&#8217;. For every type class, there is a class definition that says what the operations for that type class are. Then an instance declaration for a type T says how the operations of that typeclass are implemented on T&#8217;s. All this scales up nicely, allowing you to build big overloaded functions by calling smaller overloaded functions, and building big instances by building on smaller instances. Even literals can be overloaded, allowing 1 to mean fromInteger 1. Type classes have proved extraordinarily convenient in practice for cases like equality, ordering, serialisation, numerical operations, monadic operations and much more. Comparing type classes and object-oriented programming, it must be noted that type classes use type-based dispatching, instead of value-based dispatching. A Haskell class is more like an OO interface than a class, as it says what operations the type must support. The advantage of typeclasses over interfaces is that existing types can retroactively be made instances of a new type class. Haskell on the other hand has no sub-typing, so if one of the arguments of a function is a Tree, then it must be exactly a Tree, and nothing else. The ability to act on arguments of various types can only be achieved via type classes, which means that you must anticipate the need to act on arguments of various types.</p>
<p><strong>Agile modeling and documentation best practices (<a href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/ambler/">Scott Ambler</a>)</strong><br />
Agile modeling is a collection of practices based on several values and proven software engineering principles. The models this produces are as simple as possible so they are still understandable and can fulfill their purpose, but also so that they are just barely enough. When trying to scale agile delivery suddenly a lot of factors come into play like team size, compliance requirements, geographical distribution, enterprise discipline, technical complexity and organizational complexity. Agile Model Driven Development tries to address these issues. AMDD starts each project with iteration zero where the intial requirements and the initial architecture are envisioned. This should take a few days at most. Then every iteration starts with iteration modeling, which should take a few hours at most. This modeling is necessary to plan the iteration. When the resulting model isn&#8217;t specific enough for certain issues, this is followed up with just in time model storming, which should take a few minutes at most. And this in turn is followed by Test Driven Development. All of this modeling takes place under the assumptions that it is only just barely good enough and that it happens as late as possible so you can document stable things and not speculations that will prove false. You should prefer executable specifications over static documentation, as static documentation has a tendency not to be maintained. As for the quantity, you need a bit more than the extremists may care to admit, but a lot less than the bureaucrats realize. A big problem with documentation in most organizations is that it isn&#8217;t very effective, as the chance that it is correct, read, understood, followed and trusted are ever decreasing respectively. So in conclusion it should be realized that a model isn&#8217;t necessarily a document, that modeling is a key scaling strategy for agile development projects, and also an important part of every software process (including agile ones), and it&#8217;s an important communication technique. You&#8217;re likely doing a lot more modeling than you realize, but as you don&#8217;t realize you&#8217;re doing it, you could be a lot better at it.</p>
<p><strong>Adventures of an Agile Architect (<a href="http://dannorth.net">Dan North</a>)</strong><br />
Once upon a time there was an agile architect named Dan. He was asked to coach a non-agile team into being agile. When he arrived he found that technically the software was SOA gone bad. All sorts of clients were coupled to all sorts of services through a WSDL. There was a whole lot of duplication too, as lots of the services did basically the same thing, but using different parameters. Operationally it was a complex, flaky infrastructure, with lots of EJB&#8217;s running in a non-standard old version of JBoss. And finally organisationally, the developers lived in silos, arguing vehemently for their prefered solutions, without listening to each other. The story has a happy ending however, as he was able to guide them into implementing a SOA as it was meant to be with clear context boundaries. Operationally they ended up with deterministic deployments and a product that was stable in production. And organisationally they had a happy team that staid happy even after he left. But before he got there, he set out to listen to all the developers. And was blown away by the realization that they all wanted the same thing. This made it a lost easier to determine and set a strategy. He warned the management that he was about to change things to remedy the situation and that it would make a lot of noise. They agreed on the condition that he really would fix things. He then set off to change the culture. It turned out that daily standups had already been tried, but that they had failed to be effective. Instead he set out to have a daily discussion about what the best possible today could be. With this and similar measures he was able to get the whole team on board to set off to become agile. To fix the technical mess the software was in, he introduced the command pattern. And when they chose a wrong direction in the implementation of said pattern he found out after taking the blame for that mistake that the team was now more willing to start experimenting, as nothing had happened to Dan after admitting the mistake. After the command pattern was in place they got rid of the EJB&#8217;s as they really didn&#8217;t need them. When the EJB&#8217;s were finally gone they introduced bounded contexts to separate the different areas in the software. This resulted in the fact that every piece of the code now had a logical place where it could be found. And when all this had been done they opened up their code to other teams and spread their way of working throughout the company. The lessons Dan learned from this project, are the ones he told me and the same as I&#8217;m going to tell you now. First of all, there is always a reason why the organisation and the software are in the state they are in. A lot of choices have preceded the endresult, choices that were most likely the best possible choices that could have been taken at the moment. Second, in order to make everyone aware of those reasons, every team should have a shaman that can tell the stories with that history. If a team doesn&#8217;t have a shaman, you should either find one, or learn how to be a shaman yourself. The third lesson was to strip away everything you can, right until the moment that it breaks (at which time you have to put the last bit back). Superfluous code obfuscates the story of the code and makes it much harder to understand. The fourth lesson was that you can&#8217;t buy architecture. You can buy tools if necessary, but architecture has to be made to fit the situtation. Trying to hammer your situation into an existing architecture results in bad code and an unhappy team. The fifth lesson was to use transitional architectures. Sometimes a piece of code is too complex to be changed all at once. Transitional architectures are architectures that are far from perfect, but that are a step in the right direction. You should take care to communicate to the rest of the team that this is only a single step, and where you intend to go. And the final, and perhaps the hardest, lesson was that life moves on. When you leave a team they&#8217;ll probably make decisions you wouldn&#8217;t have made and that you might not agree with, but that are the best they could make.</p>
<p><strong>Kanban <del datetime="2009-10-12T14:33:08+00:00">vs</del> and Scrum &#8211; Making the most of both (<a href="http://blog.crisp.se/henrikkniberg">Henrik Kniberg</a>)</strong><br />
Scrum in a nutshell is to split the product, the organiztion and the time to go from a large group spending a long time building a huge thing to a small team spending a little time building a small thing but integrating regularly to see the whole. A typical evolution from waterfall to Scrum goes through the ScrumButt phase. Kanban in a nutshell is to visualize the workflow, limit the work in progress and to measure and optimize said flow. A typical Scrum to Kanban evolution is caused by the fact that for most Operations &amp; Support teams, Scrum doesn&#8217;t fit properly and so they evolve to Kanban. Scrum and Kanban are both tools, and like a knife and a fork, it&#8217;s hard to say which is best, they are simply intended for different purposes. A comparison should therefor be made to understand them better, not to judge which is best. Scrum prescribes 3 roles, whereas Kanban knows no roles. Scrum prescribes timeboxed iterations, whereas Kanban does not. Both limit work in progress (WIP), but in different ways. Scrum limits the WIP per unit of time (iteration), whereas Kanban limits the WIP per workflow state. Both are empirical, but Kanban is more configurable. Scrum discourages change in mid-iteration, making users wait until the next sprint, whereas with Kanban the user only has to wait until a slot in a certain workflow state becomes available. A Scrum board is reset between iterations, whereas a Kanban board never gets reset.</p>
<p><strong>Turning on a Sixpence &#8211; No excuses: Concept to cash every week (Kris Lander &amp; <a href="http://www.think-box.co.uk/blog/">Gus Power</a>)</strong><br />
<em>(Summary taken from the handouts that could be downloaded on above blog)</em><br />
KEEP IT MOVING: We pursue profit for our clients by continuously delivering features in response to market and user feedback.<br />
KEEP IT WORKING: We take a balanced approach, getting feedback all the time, building quality in and managing technical debt carefully, to move at speed and keep the cost of change low.<br />
KEEP IT TOGETHER: We keep software fully integrated and in a deployable state by checking in every hour or so and getting quick confirmation that everything is working from our builds.<br />
KEEP IT REAL: We keep software grounded in the real world by looking after our own environments, configuring them and optimizing them as part of the whole product.<br />
KEEP IT COMING: We deliver software at a sustainable pace and work towards a visible destination, planning just enough just in time and keeping options open for as long as possible, so we can maximize return for our clients.</p>
<p><strong>Typical Java Problems in the Wild (<a href="http://jandiandme.blogspot.com/">Eberhard Wolff</a>)</strong><br />
Some common problems keep cropping up in Java code. Ten of these were presented by Eberhard Wolff. They were not necessarily the most common, but certainly with severe effects.<br />
<em>#1 Weak transaction handling.</em><br />
The transaction is committed, but the exceptions that might occur are never caught, and no rollback is performed. This kind of problem is hard to detect as it only has effects if an exception is thrown. But when it does occur, it can lead to weird behavior and data loss and many other strange effects. Possible solutions are declarative transactions and transaction templates.<br />
<em>#2 Exception design</em><br />
The three rules &#8220;Get all the details from a system exception!&#8221;, &#8220;Each layer must only use its own exceptions!&#8221; and &#8220;Exceptions have to be checked – then they must be handled and the code is more secure.&#8221; sound reasonable but lead to lots of useless exception handling code and lots of exception types without specific handling of that type. Possible solutions for this are to use more unchecked exceptions (RuntimeExceptions) and to handle only cases you really want to handle. This should be augmented with generic exception handling in the web layer that handles all runtime exceptions that were not handled elsewhere.<br />
<em>#3 Exception handling</em><br />
Many exceptions are not logged or even swallowed entirely. This is related to #2, if you have excessive checked exceptions, this will occur more often as developers are forced to handle exceptions they can&#8217;t really handle. The solution is to at least log exceptions, and to think twice on whether it really is okay to continue in the specific situation. This should be combined with generic handling and improving the exception design.<br />
<em>#4 Architecture mess</em><br />
Architecture is the decomposition of systems into parts. You should take care not to have overly large or complex parts and you certainly don&#8217;t want cyclic dependencies. Because if you do, maintenance will be hard as will concurrent development. Changes will in such a case often have unforeseeable results. Solving this is very hard if you are already in such a mess. So make sure to manage dependencies from the start. Otherwise you are looking at a major restructuring of your application.<br />
<em>#5 Adaptor layer</em><br />
When performing a service you often encounter cross-cutting concerns such as security, tracing, checking for null arguments, logging, conversions from DTO to internal representations. This kind of code adds lots of boilerplate to each service. Changes to any of these items is very hard, because there are a lot of methods to change. The solution is to use aspects to take care of these cross-cutting concerns.<br />
<em>#6 No DAO</em><br />
Quite a few people think that as the JPA is a standard, it doesn&#8217;t need abstracting away from. But this means that the service will be dependant on JDBC and will throw SQLException, meaning that the persistance will be visible i nthe service layer and beyond. This results in code that is impossible to test without a database, so no real unit tests are possible. The solution is to use a DAO or a repository.<br />
<em>#7 No tests or bad tests</em><br />
Having no test at all or bad tests means that the code is not properly tested and most likely of low quality. This leads to the code being hard to change. The solution, of course, is to write proper unit tests. But reality has shown that writing proper tests is hard. Therefor you need to educate people on how to do it. Tests should also be integrated into automatic builds. And integration tests and functionality tests should be added as well.<br />
<em>#8 Creating SQL statements</em><br />
Creating SQL statements by simply concatenating string with parameters is bad for performance, as the statement is parsed every time. Even worse is that this leaves your software open to SQL injection. The solution is to use <em>preparedstatements.<br />
#9 Not designing for performance</em><br />
If performance is left for the final stages of development, then you can hardly do anything to fix it. As changes might introduce functional errors and it&#8217;s too late for the bigger that are necessary. Even worse, the results might be wrong if the performance test is run on different hardware than production. The solution is to get information about the performance requirements before starting on development.<br />
<em>#10 Multiple threads, memory leaks</em><br />
If multi-threading isn&#8217;t done properly, then the system will work in small tests, but production will fail. The problems will probably be hard to analyze and/or fix and they can only be found by code reviews or extensive debugging using thread dumps. The solution is to use WeakHashMap to avoid memory leaks, to synchronize, and to prefer local variables. ConcurrentHashMap should also be considered.</p>
]]></content:encoded>
			<wfw:commentRss>http://jduchess.org/blog/jaoo-2009-recap-tuesday/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recap JSpring 2009</title>
		<link>http://jduchess.org/blog/recap-jspring-2009</link>
		<comments>http://jduchess.org/blog/recap-jspring-2009#comments</comments>
		<pubDate>Thu, 18 Jun 2009 06:46:44 +0000</pubDate>
		<dc:creator>Duchess Netherlands</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[ddd]]></category>
		<category><![CDATA[dinner]]></category>
		<category><![CDATA[jspring]]></category>
		<category><![CDATA[mod4j]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[xmlschema]]></category>

		<guid isPermaLink="false">http://jduchess.org/?p=584</guid>
		<description><![CDATA[Keynote – Agile@Atlassian – How do we do it? Good keynote by Sherali Karimov that not only told how Atlassian employs agility, but also gave some pointers on how to implement it in your own company. (Unfortunately I can&#8217;t find any slides, but their website seems to offer some of the same content.) Het modelleren [...]]]></description>
			<content:encoded><![CDATA[<p style="margin-bottom: 0cm;"><strong>Keynote – Agile@Atlassian – How do we do it?</strong></p>
<p style="margin-bottom: 0cm;">Good keynote by Sherali Karimov that not only told how Atlassian employs agility, but also gave some pointers on how to implement it in your own company. (Unfortunately I can&#8217;t find any slides, but their website seems to offer some of the same content.)</p>
<p style="margin-bottom: 0cm;"><strong>Het modelleren van een canoniek datamodel mbv XML Schema (Modelling a canonical data model using XML Schema)</strong></p>
<p style="margin-bottom: 0cm;">Dutch presentation by Linda Terlouw about what a canonical data model is and how to implement it with XML Schema. In short a canonical data model is a shared data format for exchanging data between services. It is meant to prevent the rise of lots of translations between all the individual data formats, allowing you to only need to translate your own data to the canonical format. We were also warned that a canonical data model, which models only what is necessary to share information, isn&#8217;t the same as a corporate data model, which models all information in the company. A distinction was made between hierarchical and relational models, and it was explained how XML Schema supported both of these options, along with all the pros and cons.</p>
<p style="margin-bottom: 0cm;"><strong>Geef je code wat liefde (Give your code some love)</strong></p>
<p style="margin-bottom: 0cm;">Dutch presentation by Rob Westgeest and Willem van den Ende from QWAN about how code becomes more maintainable if you give it some love by refactoring. The bottom line is that with small refactorings in the order of ten minutes work, can save you the five minutes you need to read a method. (Which you would need to do again and again.) Presentations by QWAN are always highly entertaining and informative.</p>
<p style="margin-bottom: 0cm;"><strong>Keynote – Mod4j: Open Source Modelling for Java Developers</strong></p>
<p style="margin-bottom: 0cm;">Another good keynote that introduced Mod4j, presented by Jos Warmer. I was almost surprised to hear that a partner at Ordina still got his hands dirty on code. So it was the right kind of sales pitch, and for an open source product too! Mod4j stands for Modeling for Java, and it is an open source DSL-based environment for developing administrative enterprise applications. (Again there were unfortunately no slides, so I had to take that quote off their website.) At the time of speaking the product wasn&#8217;t finished yet, as they weren&#8217;t offering all the functionality they wanted, but they had a working version and it looked cool.</p>
<p style="margin-bottom: 0cm;"><strong>Software Quality Automatically Measured</strong></p>
<p style="margin-bottom: 0cm;">Nice presentation by Gert-Jan Schouten about a cool Maven2 plugin to measure quality and express it with a number. Too bad about the small font of the slides. And the code that was shown was completely illegible due to the small font. But the worst letdown was that the code that was shown wasn&#8217;t open source or even for sale. Fortunately somebody from the audience mentioned Sonar, which does more or less the same.</p>
<p style="margin-bottom: 0cm;"><strong>Pragmatic model driven development in Java with smart use cases and domain driven design</strong></p>
<p style="margin-bottom: 0cm;">This presentation by Sander Hoogendoorn and Rody Middelkoop was slightly too slick for my taste. But as I say, it&#8217;s a matter of taste, I bet lots of other people loved it for the exact same reason. In fact, the presentation went so fast, that even with the slides, I can&#8217;t quite figure out all that was said.</p>
<p style="margin-bottom: 0cm;"><strong>–</strong></p>
<p style="margin-bottom: 0cm;">I skipped the last session, as I was pretty tired and didn&#8217;t see anything that I thought could hold my attention during this last track. Instead I sat on the lounge chairs on the first floor and talked with some people until they opened the bar. (And kept right on talking afterwards as well of course.)</p>
<p style="margin-bottom: 0cm;"><strong>Dinner</strong></p>
<p style="margin-bottom: 0cm;">It&#8217;s become quite a tradition already that the ladies of Duchess have dinner afterwards, and so seven Duchesses, Diane Etman from VXCompany and two men (since we now allow each woman to bring one male guest) headed off towards &#8216;de 3 Vrienden&#8217; in the city center. There we met up with the third man, since he had misrembered the time and was already there enjoying the sunshine. VXCompany was very gracious to sponsor the food, so we only had to pay for our drinks. After our first dish we all scooted over three seats so we could talk to more people than just those who were sitting close in the first place. All in all a very successful ending to a great day.</p>
]]></content:encoded>
			<wfw:commentRss>http://jduchess.org/blog/recap-jspring-2009/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Scrum Event with Jeff Sutherland</title>
		<link>http://jduchess.org/blog/scrum-event-with-jeff-sutherland</link>
		<comments>http://jduchess.org/blog/scrum-event-with-jeff-sutherland#comments</comments>
		<pubDate>Thu, 19 Feb 2009 18:20:09 +0000</pubDate>
		<dc:creator>Duchess</dc:creator>
				<category><![CDATA[events]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[capgemini]]></category>
		<category><![CDATA[jeffsutherland]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://jduchess.org/?p=429</guid>
		<description><![CDATA[Staat bij u de softwareontwikkeling ook onder druk? Steeds sneller verandert de markt en ook de time-to- market voor nieuwe producten en diensten wordt almaar korter. Tot overmaat van ramp slinken budget- ten door de huidige economische omstandigheden. ICT-projecten moeten het allemaal maar kunnen bijbenen. Met traditionele software-ontwikkelaanpakken wordt het moeilijk, maar de succesvolle toepassingen [...]]]></description>
			<content:encoded><![CDATA[<p>Staat bij u de softwareontwikkeling ook onder druk? Steeds sneller verandert de markt en ook de time-to- market voor nieuwe producten en diensten wordt almaar korter. Tot overmaat van ramp slinken budget- ten door de huidige economische omstandigheden. ICT-projecten moeten het allemaal maar kunnen bijbenen. Met traditionele software-ontwikkelaanpakken wordt het moeilijk, maar de succesvolle toepassingen van Scrum laten zien dat beter kan.</p>
<p>Scrum is een framework voor het managen van softwareontwikkeling. Multidisciplinaire teams leveren in korte ‘sprints’ werkende software op. De nadruk ligt daarbij op:<br />
•              Mensen en interacties boven processen en tools<br />
•              Werkende software boven stapels documentatie<br />
•              Klantbetrokkenheid boven formele contracten<br />
•              Omgaan met verandering boven starre planning</p>
<p>Is Scrum hèt antwoord op de ontwikkelingen in de markt? Nee, maar de Agile softwareontwikkel- aanpak biedt wel belangrijke voordelen: de opdrachtgever heeft tijdens de ontwikkeling zelf het stuur in handen. Gewenste wijzigingen door veranderende omstandigheden of inzichten worden gewoon meegenomen en alleen de écht effectieve functionaliteit wordt ontwikkeld. Dat scheelt veel doorlooptijd en kosten.</p>
<p>Wilt u ook weten wat het werken met Scrum voor uw organisatie kan betekenen? Laat u dan in één avond bijpraten over Scrum door de man die de aanpak bedacht heeft en door een tevreden klant. Deze avond mag u niet missen!</p>
<p> Deelname is gratis. Inschrijven kan op <a href="http://www.basopleidingen.nl">www.basopleidingen.nl</a> of mail naar <a href="mailto:ron.van.rijswijk@capgemini.com">ron.van.rijswijk@capgemini.com</a>.</p>
<p>Programma<br />
18.00   ontvangst met buffet<br />
19.00   welkom<br />
19.10   presentatie Jeff Sutherland<br />
20.00   pauze<br />
20.20   een succesvolle toepassing van Scrum bij Alcredis<br />
20.40   presentatie en beantwoording van vragen door Jeff Sutherland<br />
21.15   borrel</p>
<p>Locatie<br />
Avifauna, Hoorn 65, Alphen aan den Rijn</p>
]]></content:encoded>
			<wfw:commentRss>http://jduchess.org/blog/scrum-event-with-jeff-sutherland/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Orlando Scrum Gathering 2009</title>
		<link>http://jduchess.org/blog/orlando-scrum-gathering-2009</link>
		<comments>http://jduchess.org/blog/orlando-scrum-gathering-2009#comments</comments>
		<pubDate>Thu, 19 Feb 2009 13:04:48 +0000</pubDate>
		<dc:creator>Duchess</dc:creator>
				<category><![CDATA[events]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[orlando]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://jduchess.org/?p=380</guid>
		<description><![CDATA[Orlando Scrum Gathering 2009 Monday, March 16, 2009 &#8211; Wednesday, March 18, 2009 Gaylord Palms Resort &#38; Convention Center 6000 W. Osceola Parkway Orlando, Florida 34746 USA Don’t miss this one: Top Headliners in Agile to participate in the Orlando Scrum Gathering Confirmed speakers: Ken Schwaber &#8211; co-founder of Scrum Jeff Sutherland &#8211; co-founder of [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.scrumalliance.org/ads/scrum-gathering-sidebar.jpg?1226877414" alt="" /></p>
<p>Orlando Scrum Gathering 2009<br />
Monday, March 16, 2009 &#8211; Wednesday, March 18, 2009</p>
<p>Gaylord Palms Resort &amp; Convention Center<br />
6000 W. Osceola Parkway<br />
Orlando, Florida 34746<br />
USA</p>
<p>Don’t miss this one: Top Headliners in Agile to participate in the Orlando Scrum Gathering</p>
<p>Confirmed speakers:<br />
Ken Schwaber &#8211; co-founder of Scrum<br />
Jeff Sutherland &#8211; co-founder of Scrum<br />
Mike Cohn<br />
Ron Jeffries<br />
Jim Coplien<br />
Alistair Cockburn</p>
<p>Join with Scrum community members from around the world as they gather together in the sunshine of Orlando Florida to share in a mix of experience, information, values and expert insight that provides a framework for evaluating and incorporating the Scrum process.  Learn from experienced practitioners, Scrum founders and leaders in the agile community.</p>
<p>New this year a Scrum PMI track</p>
<p>Participating in a Scrum Gathering is an important step in expanding Scrum knowledge for Scrum users of all skill levels, as well as a great introductory opportunity for those who are investigating the possibility of using the Scrum process.  A day of Open Space will afford participants the opportunity to set agendas, discuss timely topics and interact with industry experts and peers in casual group settings.</p>
<p>Payment:  Scrum Alliance Members $1,500<br />
Non-member  $1,800<br />
Limited space; the last two Scrum Gatherings sold out weeks in advance!</p>
<p><a href="http://www.scrumgathering.org">www.scrumgathering.org</a></p>
<p>Additional questions? e-mail <a href="mailto:scrumgathering@scrumalliance.org">scrumgathering@scrumalliance.org</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jduchess.org/blog/orlando-scrum-gathering-2009/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Holland Event &#8211; March 5 &#8211; Arnhem</title>
		<link>http://jduchess.org/blog/agile-holland-event-march-5-arnhem</link>
		<comments>http://jduchess.org/blog/agile-holland-event-march-5-arnhem#comments</comments>
		<pubDate>Thu, 19 Feb 2009 13:03:03 +0000</pubDate>
		<dc:creator>Duchess Netherlands</dc:creator>
				<category><![CDATA[events]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[agileholland]]></category>
		<category><![CDATA[arnhem]]></category>

		<guid isPermaLink="false">http://jduchess.org/?p=378</guid>
		<description><![CDATA[Op donderdagavond 5 maart organiseert Agile Holland weer een bijeenkomst, deze keer bij de Hogeschool van Arnhem en Nijmegen (HAN) in Arnhem. Er staan twee onderwerpen op de agenda: Emiliano Heyns (Scrum master bij de HAN) zal een tryout doen van de presentatie die hij midden maart bij de Agile Processes 2009 conferentie in Stockholm [...]]]></description>
			<content:encoded><![CDATA[<div class="content">
<p>Op donderdagavond 5 maart organiseert Agile Holland weer een bijeenkomst, deze keer bij de Hogeschool van Arnhem en Nijmegen (HAN) in Arnhem.</p>
<p>Er staan twee onderwerpen op de agenda:</p>
<ul>
<li><a href="http://agileholland.com/users/eheyns">Emiliano Heyns</a> (Scrum master bij de <a href="http://www.han.nl/">HAN</a>) zal een tryout doen van de presentatie die hij midden maart bij de <a href="http://www.iqpc.com/ShowEvent.aspx?id=151354">Agile Processes 2009 conferentie</a> in Stockholm zal geven:<strong>Gaining Management Buy-In By Proving The Business Value Of Agile Software Development</strong>Deze presentatie gaat over de niet-technische aspecten van de Scrum implementatie bij de HAN; een aantal projecten hebben een aanzienlijke organisatiecomponent, en ook daar heeft Scrum zijn diensten bewezen.</li>
<li>Ervaringen uitwisselen van de <a href="http://www.agileopen.net/belgium">Agile Open Belgium conferentie</a>, die op 20 en 21 februari plaatsvindt in Gent.</li>
</ul>
<p>Het programma start om 19:00 en duurt tot ca. 21:00; daarna is er gelegenheid om nog even na te praten onder het genot van fris of bier.</p>
<p>Locatie: Ruitenberglaan 31, 6826 CC Arnhem, zaal A3.01. De lokatie bevindt zich op loopafstand van station Arnhem Presikhaaf (met dank aan de <a href="http://www.han.nl/">HAN</a> voor het beschikbaar stellen van ruimte).</p>
<p>Wij zoeken momenteel nog een partij die broodjes of pizza wil sponsoren voor deze avond. Interesse? <a href="http://agileholland.com/nl/contact">Laat het ons even weten</a>.</p>
<p>Schrijf je snel in via het formulier hieronder (alleen zichtbaar als je ingelogd bent). Er is plaats voor ongeveer 20 deelnemers.</p>
<p>Tot ziens op 5 maart!</p></div>
]]></content:encoded>
			<wfw:commentRss>http://jduchess.org/blog/agile-holland-event-march-5-arnhem/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Event Report: Duchess Agile Event</title>
		<link>http://jduchess.org/blog/event-report-duchess-agile-event</link>
		<comments>http://jduchess.org/blog/event-report-duchess-agile-event#comments</comments>
		<pubDate>Thu, 29 Jan 2009 12:22:52 +0000</pubDate>
		<dc:creator>Linda van der Pal</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[duchess events]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[duchess]]></category>
		<category><![CDATA[recap]]></category>
		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://jduchess.org/?p=364</guid>
		<description><![CDATA[Tuesday January the 20th, many Duchesses from several countries traveled to Utrecht to attend the Duchess Agile Event. I was the first non-IProffs employee to arrive. Slowly everybody trickled in. Just past six the catering arrived to bring the food. (Very good Chinese food!) Not everybody was there yet, so we decided to wait a [...]]]></description>
			<content:encoded><![CDATA[<p>Tuesday January the 20th, many Duchesses from several countries traveled to Utrecht to attend the Duchess Agile Event. I was the first non-IProffs employee to arrive. Slowly everybody trickled in. Just past six the catering arrived to bring the food. (Very good Chinese food!) Not everybody was there yet, so we decided to wait a while longer and chatted. Sabrina and Michael had arrived and were honored for coming all the way from Paris. When we could no longer wait for fear of starving, we started the dinner with everybody who had arrived. During dinner the other people trickled in, but unfortunately I was so distracted by my food that I didn&#8217;t get to greet everybody properly. *hangs head in shame* Some fine chairman I make. I promise to try and do better next time. I didn&#8217;t even get a chance to talk to Angela Sindic from Germany.</p>
<p>After diner we had to get started on the workshop for fear of running out of time. By then everybody had arrived. Michael Franken started off with a presentation about why we need Agile software development. Comparing software development to preparing food. Saying that there are two types of project. One was following a recipe from a cookbook, and the other creating a new recipe. It was rather obvious that software development falls into the second category. (Seeing how the cookbook style is rather like following a tutorial, nice to figure out how certain tools work, but useless to create actual software.)</p>
<p>After this presentation the actual workshop started where we got to try out planning poker. Our tasks weren&#8217;t software related, as such tasks would take too much time to complete three iterations in one evening. Instead we had to do sums, fold boats and inflate balloons. The tasks may have been trivial, but planning poker is not. After only three iterations all three teams could accurately estimate how much work they could do in one iteration.</p>
<p>All in all it was a successful workshop and a great evening.</p>
<p>Of course not everything went according to plan, so here are some plans to improve our workshops. Please feel free to chip in with more ideas in the comments.</p>
<p>- Make a planning and communicate it up front.<br />
- Related to the above, mention whether there will be dinner or not.<br />
- Make a list of people who attend and make sure who is actually present (nice way of also making sure to talk to everybody).<br />
- Mention the attendance fee and communicate the bank account number.<br />
- Prepare a proper thank-you speech.<br />
- When planning a raffle, make sure you have time for it. (As I now had to take all the goodies home again.)</p>
]]></content:encoded>
			<wfw:commentRss>http://jduchess.org/blog/event-report-duchess-agile-event/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Smart = Agile++ by Ivar Jacobson</title>
		<link>http://jduchess.org/blog/smart-agile-by-ivar-jacobson</link>
		<comments>http://jduchess.org/blog/smart-agile-by-ivar-jacobson#comments</comments>
		<pubDate>Sat, 27 Dec 2008 09:30:19 +0000</pubDate>
		<dc:creator>Clara Ko</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[devoxx]]></category>
		<category><![CDATA[smart]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://jduchess.org/?p=261</guid>
		<description><![CDATA[One of the most entertaining talks I went to was the Be smart! by Ivar Jacobson. Although the concepts that he presented were definitely not new, he found a very clear and entertaining way to present them. A RUP guy, he told it how it is &#8211; about what I consider to be agile &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>One of the most entertaining talks I went to was the <a href="http://devoxx.com/display/JV08/Be+smart!" target="Devoxx">Be smart!</a> by <a href="http://ivarblog.com" target="Ivar Jacobson">Ivar Jacobson</a>. Although the concepts that he presented were definitely not new, he found a very clear and entertaining way to present them. A RUP guy, he told it how it is &#8211; about what I consider to be agile &#8211; while calling it not agile &#8211; but smart.</p>
<p>According to Ivar, here are a list of things that we don&#8217;t learn in school:<br />
<span id="more-261"></span><br />
See <a href="http://javapulse.net/2008/12/24/smart-agile-by-ivar-jacobson/" target="JavaPulse">Smart = Agile++ by Ivar Jacobson</a> on Clara&#8217;s blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://jduchess.org/blog/smart-agile-by-ivar-jacobson/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 14/36 queries in 0.165 seconds using disk: basic
Object Caching 710/772 objects using disk: basic

Served from: jduchess.org @ 2012-05-21 18:18:30 -->
