<?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>Xebia Blog &#187; Rik de Groot</title>
	<atom:link href="http://blog.xebia.com/author/rdegroot/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.xebia.com</link>
	<description>Software development done right!</description>
	<lastBuildDate>Wed, 01 Feb 2012 00:30:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Empiric story reference base</title>
		<link>http://blog.xebia.com/2010/08/20/empiric-story-reference-base/</link>
		<comments>http://blog.xebia.com/2010/08/20/empiric-story-reference-base/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 11:58:14 +0000</pubDate>
		<dc:creator>Rik de Groot</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/home/blog.xebia.com/www/wp-content/plugins/autometa/autometa.php</b> on line <b>303</b><br />
		<category><![CDATA[Agile]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=5208</guid>
		<description><![CDATA[Planning has an important role in Agile. The team uses planning to estimate the complexity of a requirement (userstory). The number of complexity points handled in previous timeframes then helps to decide what could fit into the next timeframe. However the complexity changes in time. Things get easier doing it a second time or easier [...]]]></description>
			<content:encoded><![CDATA[<p>Planning has an important role in Agile. The team uses planning to estimate the complexity of a requirement (userstory). The number of complexity points handled in previous timeframes then helps to decide what could fit into the next timeframe. However the complexity changes in time. Things get easier doing it a second time or easier ways are found for problems. This makes the planning even harder. Creating a reference base might bring stability in planning. These references make it possible to create a release planning without planning all the requirements upfront.</p>
<p><span id="more-5208"></span></p>
<p><strong>Problem</strong><br />
The planning starts with a single reference that the team uses as an offset for the initial planning. After a while they forget what the initial reference was and choose another reference. Ending up with a fluctuating planning. </p>
<p>In order to prevent this happening often the whole backlog is planned upfront. Resulting in an equally planned backlog. However this can have a couple of downsides. For instance when a team have not worked together before, the initial planning becomes invalid in a couple of sprints. Work was underestimated or got easier after doing it a couple of times. Replanning the whole backlog then is needed in order to get a valid release planning. It gets even harder when the team changes or not all of the userstories are known at the start of a release. </p>
<p><strong>Reference base</strong><br />
Creating a reference base helps to stabilize the planning in time. After the first sprint the team can create an reference base. This reference base can help to plan the next sprint more accurate.</p>
<p>The reference base is created during or after the retrospective. The following steps can be taken:  </p>
<ol>
<li>
<strong>Mark the reference stories;</strong> The stories that went as they should have can be marked as a reference story. Stories that were exceptional or unusual can be put aside. </li>
<li>
<strong>Rate the stories;</strong> The team can decide whether the story was over or under rated. Sometimes a story is rated 8 but to be on the safe side the team chooses 13. In the retrospective the team can decide whether it was actually an 8 or 13.
</li>
<li>
 <strong>Categorize;</strong> The marked stories should than be categorized by type of work.
</li>
<li>
<strong>Decide whether to add;</strong> The stories than should be evaluated. Is a story the same as an existing story or does it help to add this story to the reference base.
</li>
<li>
<strong>Add the stories;</strong> Add the new stories to the reference base. Include the number of point, expertise needed for this story, etc.
</li>
<li>
<strong>Check whether stories are still valid;</strong> Sometimes a tool can change the validity of a story. For instance work that is handled by a tool or the amount of points changed due to a tool. Check with the team what needs to be done.
</li>
</ol>
<p>The reference base can change every sprint. Stories that don&#8217;t suit anymore can be removed, others can be replaced or stories can be added.</p>
<p><strong>Using the reference base </strong><br />
The reference base can be used for verifying or to plan another stories. The more stories you have in the reference base the more it helps planning that story. Due to the use of the reference base the points assigned to a story remain more stable. This does not mean that a similar story keeps the same points forever. For instance tooling can cause to change the amount of points. So in time the reference base changes, but it is a stabilizing factor.</p>
<p><strong>Conclusion</strong><br />
The empiric reference base helps the team to stabilize the planning. This makes it possible to make a more accurate release planning.  It might even speed up a planning session. </p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2010/08/20/empiric-story-reference-base/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2010%2F08%2F20%2Fempiric-story-reference-base%2F&amp;title=Empiric%20story%20reference%20base" id="wpa2a_2"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2010/08/20/empiric-story-reference-base/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cross dimensional teams</title>
		<link>http://blog.xebia.com/2010/06/18/cross-dimensional-teams/</link>
		<comments>http://blog.xebia.com/2010/06/18/cross-dimensional-teams/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 13:16:38 +0000</pubDate>
		<dc:creator>Rik de Groot</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Articles]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=4900</guid>
		<description><![CDATA[Working in multidisciplinary teams is common in Agile. In practice this means that the team consists of people with different skills, but work in the same dimension (for instance software). What about cross dimensional teams? In cross dimensions teams not only the skills differ, but also the area of expertise. For instance developing an electronic [...]]]></description>
			<content:encoded><![CDATA[<p>Working in multidisciplinary teams is common in Agile. In practice this means that the team consists of people with different skills, but work in the same dimension (for instance software). What about cross dimensional teams? In cross dimensions teams not only the skills differ, but also the area of expertise. For instance developing an electronic device includes electronics and software. They work on the same project, but can they act as one team?<br />
<span id="more-4900"></span><br />
<strong>Teams</strong><br />
There are all sorts of teams, but the most common in agile and lean are multidisciplinary teams and multidimensional teams. The multidisciplinary teams consist of people that together cover all the skills needed for the product. Whereas the multi-dimensional teams consist of different teams with different skills that work together in sequences (lean).<br />
In a cross dimensional team, the team consist of multiple teams developing one product in parallel. The difficulty with cross dimensional teams is that they have a different heart beat, problems and constraints while working one product. For instance developing an electronic device like a touch MP4 player consist of the electronics for the device and the software that drives the electronics.<br />
Developing in these two dimensions require both doing research and development. They also depend on each other in a way. Without the software the hardware team cannot check whether the touch hardware is working and vice versa. On the other side there are some areas in which they don’t depend on each other, but can influence each other. For instance a hardware component can limit the features in the software and vice versa.<br />
Putting these dimensions in one team with one backlog does not make them more effective. Due the different heartbeat it could mean that they have to wait for each other. However they do have some areas in common. For instance the interface between the hardware and software. This is the contract between the two worlds. The earlier this interface is clear the more freedom the teams have.<br />
The figure below shows the time line of a cross dimensional team working on one product in an agile way. Purple for the development of the electronics (hardware) and red for the development of the software.<br />
￼<img src="http://blog.xebia.com/wp-content/uploads/2010/06/CDT1.png" alt="Timeline Cross Dimensional Team" title="Timeline Cross Dimensional Team" width="375" height="126" class="alignnone size-full wp-image-4903" /><br />
The dimensions of the team start at the same time. In this first period it’s important to do the things in common first. Later on in time there is no possibility to change decisions. The reason for this is that electronics production has a lead-time. Once this process is started, there are only some small changes possible due to high costs. Therefore the early stage is important to get things clear.</p>
<p><strong>Dimensional planning</strong><br />
Dimensional planning (story mapping) can help with this. Usually interfaces and prototyping are put in the first slices. The features that can be addressed later on should be in later slices.<br />
Most of the times the different dimensions of the team work from separate backlogs, but are aligned in the dimensional planning. Although they work from a different backlog they can discuss the problems together. Often this leads to better solutions due to the different views on the problem. In some cases this leads to backlog items for the different dimensions.</p>
<p><strong>Freeze</strong><br />
Somewhere in time the electronics development is frozen in order to start the hardware production on time. From this moment on only small changes are possible. For instance to lower the radiation levels or things that need to be done in order to get an CE certification. Meanwhile the other dimension still continues to develop software for the device. Sometimes solving some hardware issues. Depending of the requirements of the CE certification the main software features needs to be frozen too. Fortunately software updates can be applied in a late stadia. </p>
<p><strong>Conclusion</strong><br />
In conclusion a cross dimensional team can work in an agile way. Using dimensional planning brings focus to the cross dimensional teams. Important is to freeze the interfaces between the hardware and software in an early stage. This will reduce the dependencies of the dimensions. Problems that occur during the prototyping can be solved by working closely together in an early stage.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2010/06/18/cross-dimensional-teams/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2010%2F06%2F18%2Fcross-dimensional-teams%2F&amp;title=Cross%20dimensional%20teams" id="wpa2a_4"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2010/06/18/cross-dimensional-teams/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Top 10 SOA Pitfalls: #1 &#8211; Ignoring culture when introducing SOA</title>
		<link>http://blog.xebia.com/2008/06/23/top-10-soa-pitfalls-1-ignoring-culture-when-introducing-soa/</link>
		<comments>http://blog.xebia.com/2008/06/23/top-10-soa-pitfalls-1-ignoring-culture-when-introducing-soa/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 11:17:57 +0000</pubDate>
		<dc:creator>Rik de Groot</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[SOA]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=610</guid>
		<description><![CDATA[Last week Viktor Grgic explained Unclear ownership / Project based funding. This week we’ll continue with #1 &#8211; Ignoring culture when introducing SOA. SOA is an approach. The culture aspect of introducing a SOA is important, but it seems that companies want to invest in tools and not in people. In order of making this [...]]]></description>
			<content:encoded><![CDATA[<p><em>Last week <a href="http://blog.xebia.com/author/vgrgic">Viktor Grgic</a> explained <a href="http://blog.xebia.com/2008/06/16/top-10-soa-pitfalls-2-unclear-ownership-project-based-funding/">Unclear ownership / Project based funding</a>. This week we’ll continue with #1 &#8211; Ignoring culture when introducing SOA.</em></p>
<p>SOA is an approach. The culture aspect of introducing a SOA is important, but it seems that companies want to invest in tools and not in people. In order of making this SOA to work they force their employees into this new way of thinking/acting. Often this leads to resistance which undermines the SOA goals.  In this part we will look into ignoring culture when introducing SOA.<br />
<span id="more-610"></span></p>
<p><strong>Culture</strong><br />
First of all: what is a culture? An organizational culture compromises the attitudes, experiences, beliefs and values of an organization. <a href="http://en.wikipedia.org/wiki/Geert_Hofstede">Hofstede</a> identified five dimensions in his study :</p>
<ul>
<li> Small vs Large Power distance; degree of equality/inequality between people.</li>
<li> Uncertainty avoidance; the level of acceptance for uncertainty and risks.</li>
<li> Individualism vs collectivism; the contrast between individual or collective achievement and interpersonal relationships.</li>
<li> Masculinity vs femininity; is your organization based on male or female values.</li>
<li> Long vs short term orientation; contrast between relation values orientation.</li>
</ul>
<p>When introducing a SOA some of these dimensions are likely to change in order to improve the performance of an organization. But wait a minute, a cultural change? It was just an architectural style! Culture is certainly relevant for SOA. For instance, when you look at ownership the first dimension can change. The ownership shifts from IT to the business. When you look at the second dimension, a SOA introduces an uncertainty, because people are confronted with a new way of thinking/acting. In the third dimension the way of working together (business and IT) changes.</p>
<p><strong>Ivory tower</strong><br />
The way SOA is introduced in companies varies, but often SOA introduction is technology driven. From an ivory tower this new way of thinking is figured out and dumped into the organization (see also <a href="http://blog.xebia.com/2008/06/09/top-10-soa-pitfalls-3-missing-skills/">missing skills</a>). Sometimes with a few practical guidelines, which are often very abstract. The guidelines are misunderstood by the business and IT people which makes it more complex. The main problem here is that the SOA vision is not shared between business, IT and CxOs, (and ivory tower). You can document guidelines, but this does not imply that involved people share the same ideas.</p>
<p><strong>Awareness</strong><br />
In companies the adequate awareness is not filtered down to an enterprise level. Adoption of SOA might become a roadblock. The awareness starts with the concept of SOA. What is a SOA? In most cases people think they know what a SOA is, but have a different vision on the topic. Even people who do know what a SOA is, have different views on SOA. Therefore it is important to have the same vision at enterprise level.</p>
<p><strong>Resistance</strong><br />
Although SOA should not be used to change a culture, the introduction will probably change some cultural dimensions. Resistance to these changes needs to be handled with care. The success of the SOA depends on the acceptance of the SOA, reducing/removing of resistance is crucial to increase acceptance</p>
<p>The best way to introduce a SOA is to follow the following steps:</p>
<ol>
<li> Make the SOA vision a shared vision. Only a shared vision could lead to a successful SOA implementation. Without this first step a SOA is doomed.</li>
<li> Define a strategy of how to change. What is your strategy of changing to a SOA. Included cultural aspects and awareness.</li>
<li> Define clear tasks, roles and responsibilities.</li>
</ol>
<p>When using these steps the acceptance of a SOA will increase.</p>
<p>The cultural aspect is often forgotten when introducing a SOA. People that introduce a SOA, often change a culture without knowing. When you are not aware of this, this might lead to an adoption roadblock. Be careful with a large cultural change. Start small, think big.</p>
<p><em>Next week <a href="http://blog.xebia.com/author/vpartington">Vincent Partington</a> and <a href="http://blog.xebia.com/author/gvermaas">Gero Vermaas</a> will wrap up the SOA pitfall series.</em></p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2008/06/23/top-10-soa-pitfalls-1-ignoring-culture-when-introducing-soa/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2008%2F06%2F23%2Ftop-10-soa-pitfalls-1-ignoring-culture-when-introducing-soa%2F&amp;title=Top%2010%20SOA%20Pitfalls%3A%20%231%20%26%238211%3B%20Ignoring%20culture%20when%20introducing%20SOA" id="wpa2a_6"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2008/06/23/top-10-soa-pitfalls-1-ignoring-culture-when-introducing-soa/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Top 10 SOA Pitfalls: #6 &#8211; SOA does not solve complexity automatically</title>
		<link>http://blog.xebia.com/2008/05/19/top-10-soa-pitfalls-6-soa-does-not-solve-complexity-automatically/</link>
		<comments>http://blog.xebia.com/2008/05/19/top-10-soa-pitfalls-6-soa-does-not-solve-complexity-automatically/#comments</comments>
		<pubDate>Mon, 19 May 2008 21:52:35 +0000</pubDate>
		<dc:creator>Rik de Groot</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[SOA]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=564</guid>
		<description><![CDATA[After discussing #7: Incorrect granularity of services , let&#8217;s move on to #6. In organizations data and functionality/processes are often fragmented, but are needed centrally. What are the causes of this fragmentation. Does a SOA solve this complexity automatically? Most companies start with a SOA and are confronted with this complexity during the implementation of [...]]]></description>
			<content:encoded><![CDATA[<p><em>After discussing <a href="http://blog.xebia.com/2008/05/12/top-10-soa-pitfalls-7-incorrect-granularity-of-services/">#7: Incorrect granularity of services </a>, let&#8217;s move on to #6.</em></p>
<p>In organizations data and functionality/processes are often fragmented, but are needed centrally. What are the causes of this fragmentation. Does a SOA solve this complexity automatically? Most companies start with a SOA and are confronted with this complexity during the implementation of the SOA.<br />
<span id="more-564"></span></p>
<p>First let’s take a look at the problem.</p>
<ul>
<li>Applications are often built using a silo model. The application contains a set of business functionality exposed through a user interface. The business functionality is intended for its own context without intentions of reuse.</li>
<li>Applications or services have different views on an entity. For instance, an &#8220;amount&#8221; entity can include or exclude tax. Combining these different views into a single entity is difficult.</li>
<li>Heterogeneous data environments with varied schema&#8217;s contain redundant data elements.</li>
<li>When a service is centrally used, data replication is applied in order to combine the different entities and fragmented data into one service.</li>
<li> Organizations with multiple business lines, spread over multiple locations, have stored core data fragmented in databases/systems. In many cases the size of the IT portfolio has a relation to the scatter.</li>
</ul>
<p>The real problem is the way the data is stored and how functionality/processes are organized.  The SOA architecture style won’t change these problems automatically.  In some cases a SOA can make it worse due to the complex integration.</p>
<p>The complexity is caused by the functionality and data fragmentation over different systems, processes and locations. In many cases the fragmentation of core data is caused by organizational growth (for instance mergers and acquisitions). In most cases these companies have a heterogeneous data environment with redundant data elements such as static customer information, common business data or common external data (for instance government, market, or statistical data). Due to the fragmented data, it is often hard to create a complete view of the core business data such as customer information. In portals however, a complete view is needed. An incomplete view can lead to an inconsistent user experience. This might introduce risks and in the long term could lead to being untrustworthy as a company. In order to create a complete view, different complex and inefficient mechanism are needed for accessing/updating the systems/databases. This can lead to inefficiency and higher cost due to the overhead in accessing/updating data in multiple databases using different mechanisms. The real problem is the way the data is stored and how functionality/processes are organized.</p>
<p>Some organizations introduce a SOA in order to reduce the complexity, but what they really do is introduce JBOWS (Just a bunch of web services) and don’t solve the complexity at all. The existing business processes and business functionality remain the same.</p>
<p>In order to reduce complexity the following things need to be organized:</p>
<ul>
<li>Eliminate redundant data by gradual reduction in the scatter of core data</li>
<li>Use the right service granularity (<a href="http://blog.xebia.com/2008/05/12/top-10-soa-pitfalls-7-incorrect-granularity-of-services/">see #7: Incorrect granularity of services </a>)</li>
<li>Move from the silo/application-based approach to a business process approach.</li>
<li>Introduce a canonical data model for common data across the enterprise (something we will come back to later).</li>
<li>Select the appropriate tools to manage and monitor the processes/services.</li>
</ul>
<p>Complexity is not easy to reduce. SOA can help, but won’t solve the problem automatically. The root cause of the complexity is the way data, functionality and processes are organized. Solving these problems will really reduce complexity.</p>
<p>Next week, <a href="http://blog.xebia.com/author/vpartington">Vincent Partington</a> will continue with pitfall #5.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2008/05/19/top-10-soa-pitfalls-6-soa-does-not-solve-complexity-automatically/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2008%2F05%2F19%2Ftop-10-soa-pitfalls-6-soa-does-not-solve-complexity-automatically%2F&amp;title=Top%2010%20SOA%20Pitfalls%3A%20%236%20%26%238211%3B%20SOA%20does%20not%20solve%20complexity%20automatically" id="wpa2a_8"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2008/05/19/top-10-soa-pitfalls-6-soa-does-not-solve-complexity-automatically/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Top 10 SOA Pitfalls: #9 – Versioning</title>
		<link>http://blog.xebia.com/2008/04/29/top-10-soa-pitfalls-9-%e2%80%93-versioning/</link>
		<comments>http://blog.xebia.com/2008/04/29/top-10-soa-pitfalls-9-%e2%80%93-versioning/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 09:28:12 +0000</pubDate>
		<dc:creator>Rik de Groot</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/home/blog.xebia.com/www/wp-content/plugins/autometa/autometa.php</b> on line <b>303</b><br />
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[SOA]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=512</guid>
		<description><![CDATA[Last week we started the Top 10 SOA Pitfalls countdown with #10: NIH syndrome. This week it&#8217;s time for #9. Version mismatch is one of the growing pains of a SOA. A SOA starts simple, but after a while new versions of services will appear and the complexity will grow. Good life cycle management and [...]]]></description>
			<content:encoded><![CDATA[<p><em>Last week we started the Top 10 SOA Pitfalls countdown with <a href="/2008/04/23/top-10-soa-pitfalls-10-not-invented-here-syndrome/">#10: NIH syndrome</a>. This week it&#8217;s time for #9.</em></p>
<p>Version mismatch is one of the growing pains of a SOA. A SOA starts simple, but after a while new versions of services will appear and the complexity will grow. Good life cycle management and supporting tools will help you to control the complexity.<br />
<span id="more-512"></span></p>
<p>The implementation of a SOA will contain services. Initially the services are designed for a purpose. Consumers of these services will use the functionality as designed. However, over time the services might change or new functionality is needed. What effect will this have on the consumers, services and infrastructure?</p>
<p>Let’s take a closer look on these changes. The changes can be divided in major changes (v1.0 to v2.0 ) and minor changes (1.0 to 1.1). The following types of change can be identified (combinations of the types can occur):</p>
<ol>
<li><strong>Minor change of interface</strong>: The current interface is extended without compromising the current functionality and interface usage.  For instance adding a new method with new functionality.</li>
<li><strong>Minor change of functionality</strong>: The functionality is changed without effecting any consumers. The implementation is revised. For instance a bug fix of the current version.</li>
<li><strong>Major change of interface</strong>: The current interface is changed is such a way that it is not backwards compatible. For instance the methods are changed or the functionality is completely new.</li>
<li><strong>Major change of functionality</strong>: Although in this change the interface remains the same, the functionality is changed in such a way that it will affect the consumers.</li>
</ol>
<p>In general the minor changes won’t effect the current consumers. These consumers can continue to use the existing interface or functionality. Normally the service can be replaced with the new version without keeping the old version online. Howver regression testing is desired in order to make sure that the new functionality/interface hasn’t affected the existing functionality/interface. Note that the new functionality should fit into the current SLA.</p>
<p>In a major change the changes will most likely effect the current consumers. The old version can’t be replaced by the new version for a couple of reasons.</p>
<ul>
<li>The current consumers are not able to upgrade to the new version in time</li>
<li>The old functionality is still required, although it is not functional supported (only technically).</li>
<li>The consumers do not want to upgrade and/or are not willing to pay for the extra costs. These costs will raise in time in most cases.</li>
</ul>
<p>In these cases two versions of the same service will be available for the consumers, although the functionality and interface differ. When multiple versions of a service exists, the complexity of the SOA increases. Although some companies will restrict the amount of versions in production it is often hard to maintain the versions. Often the functional support will only apply on the new version, but technically all versions should be supported. Maintenance is needed for both versions which could result in a minor new version for the old major version.</p>
<p>Versioning problems are in most cases caused by poor governance and lack of supporting tools. Practically the common problems with versions are:</p>
<ul>
<li>Who is using the versions? Who used the old interface? How long ago did they use it?</li>
<li>Missing supporting tools to help manage the different versions.</li>
<li>How long is support needed for an old version. When is it save to upgrade or remove a version.</li>
<li>Are the consumers redirected to the right version?</li>
<li>Consumers are directly connecting to the services without a proxy.</li>
</ul>
<p>In order to keep track of all these services a good registry is needed. The registry contains services that are active. The registry contains the location and the consumers that use the services.<br />
Tools like an ESB can act like a proxy to different versions. The exact location of a version is hidden from the consumers. The ESB routes the call to the correct version of the service.</p>
<p>Note that generic public internet services are hard to version. In these cases the consumers are unknown and can’t be contacted.  Although the same principles apply, the only way they can be notified is in an anonymous way (for instance a notification on a website).</p>
<p>In conclusion versions of services will change overtime. Therefore it is important to be prepared for these changes. Limit the amount of versions and keep track of who is using them in a registry. Use tools to hide the implementation from the consumers so you can be more flexible with multiple versions.</p>
<p><em>Next week, <a href="http://blog.xebia.com/author/vgrgic/">Viktor Grgic</a> will move on to pitfall #8.</em></p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2008/04/29/top-10-soa-pitfalls-9-%e2%80%93-versioning/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2008%2F04%2F29%2Ftop-10-soa-pitfalls-9-%25e2%2580%2593-versioning%2F&amp;title=Top%2010%20SOA%20Pitfalls%3A%20%239%20%E2%80%93%20Versioning" id="wpa2a_10"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2008/04/29/top-10-soa-pitfalls-9-%e2%80%93-versioning/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Does a personality type matter?</title>
		<link>http://blog.xebia.com/2007/12/12/does-a-personality-type-matter/</link>
		<comments>http://blog.xebia.com/2007/12/12/does-a-personality-type-matter/#comments</comments>
		<pubDate>Wed, 12 Dec 2007 21:40:13 +0000</pubDate>
		<dc:creator>Rik de Groot</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[General]]></category>

	<!-- AutoMeta Start -->
	<category>personality</category>
	<category>comfortable</category>
	<category>knowing</category>
	<category>preferences</category>
	<category>tick</category>
	<category>complement</category>
	<category>entrance</category>
	<category>energy</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/2007/12/12/does-a-personality-type-matter/</guid>
		<description><![CDATA[A good team can make or break the success of a project. Where does this success come from? Is it the way of cooperation or is it the mixture of the right personality types in a team? Do you pick the right personalities and make them work together or does it happen naturally? Different personality [...]]]></description>
			<content:encoded><![CDATA[<p>A good team can make or break the success of a project. Where does this success come from? Is it the way of cooperation or is it the mixture of the right personality types in a team? Do you pick the right personalities and make them work together or does it happen naturally?  </p>
<p>Different personality types contribute to a successful team. Although behavior can differ from a personality, it forms a base of behavior people feel comfortable with. Knowing your personality type can help you understand what makes you tick. This self-awareness is an important factor in being successful.    In general a personality type will define 1) your flow of energy, 2) how you take in information, 3) how you prefer to make decisions, 4) the basic day-to-day lifestyle that you prefer.</p>
<p>Many methods can help discover personality types. Myers-Briggs type indicator, (i)DISC assessment, Enneagram of personality, etc. supply tests in order to figure out what personality type people have.  Some of these methods need intensive testing, and are therefore hard to apply without doing the actual test.  However some of the elements of a type can be noticed without intensive testing. For instance the way people get their energy. Do they get their energy from within themselves or from external sources? Do they absorb information in principles or in details? Are they comfortable with scheduled/structured or open/casual environments? Knowing these preferences it will be easier to approach and work with other person.<br />
<span id="more-354"></span><br />
In a team people often differ, but are these differences always bad?  Some people see these differences as a flaw that needs to be corrected. However the personality type (or character) cannot be changed, so why bother?  And even if you can change the personality type of a person does it help the project? Having only one type in a team will slow down the project. For instance, a team full of inspirers will hardly finish anything. After creating an idea they will get bored long before the project is finished. Different personality types in a team can complement each other and create a successful team. </p>
<p>Having a team with different personality types will probably result in a project failure if the people approach each other in the way they feel comfortable. For instance an intuitive person can handle fuzzy data (for instance, the entrance is located at the north side of the building) whereas sensing persons need concrete data (for instance after 50m you take a turn of 90 degrees and after 10m you will find the entrance of the building). Knowing team members’ personality type means knowing strengths, weaknesses and the way of approaching each other. When taking this into account a team is more effective.</p>
<p>Working together in a team will normally go through the following stages: 1) Forming, 2) Storming, 3) Norming, 4) Performing, 5) Adjourning. In relation to the personality types, the norming stage is important. In this stage expectations, styles, roles, etc. are set. During this stage strengths and weaknesses need to be discovered in order to prevent conflicts or hurt feelings.  Listening and understanding the team members can help to support and complement each other. </p>
<p>In conclusion a personality-type does matter! It will help to understand what makes you tick. This self-awareness is the key to being successful. However a personality type indicates preferences and does not indicate the strength of ability of a person. Knowing these preferences it will help understanding other team members and work in a more effective way. </p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2007/12/12/does-a-personality-type-matter/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2007%2F12%2F12%2Fdoes-a-personality-type-matter%2F&amp;title=Does%20a%20personality%20type%20matter%3F" id="wpa2a_12"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2007/12/12/does-a-personality-type-matter/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>EssUP, the practice centric software development process</title>
		<link>http://blog.xebia.com/2007/04/26/essup-the-practice-centric-software-development-process/</link>
		<comments>http://blog.xebia.com/2007/04/26/essup-the-practice-centric-software-development-process/#comments</comments>
		<pubDate>Thu, 26 Apr 2007 18:24:35 +0000</pubDate>
		<dc:creator>Rik de Groot</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[General]]></category>

	<!-- AutoMeta Start -->
	<category>essup</category>
	<category>ivar</category>
	<category>esswork</category>
	<category>generations</category>
	<category>unified</category>
	<category>practices</category>
	<category>lightweight</category>
	<category>scrum</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/2007/04/26/essup-the-practice-centric-software-development-process/</guid>
		<description><![CDATA[We don&#8217;t like RUP, let&#8217;s do practices. Last week Ivar Jacobson (the father of the Use Cases and the Unified Process) was in the Netherlands spreading the word of the Essential Unified Process (EssUp). EssUp (http://www.ivarjacobson.com/essup.cfm) provides a fresh approach to software process improvement and claims to be a new “Practice” centric software development process. [...]]]></description>
			<content:encoded><![CDATA[<p><em>We don&#8217;t like RUP, let&#8217;s do practices</em>. Last week Ivar Jacobson (the father of the Use Cases and the Unified Process) was in the Netherlands spreading the word of the Essential Unified Process (EssUp). EssUp (http://www.ivarjacobson.com/essup.cfm) provides a fresh approach to software process improvement and claims to be a new “Practice” centric software development process.</p>
<p><span id="more-217"></span></p>
<p><strong>Practices</strong></p>
<p>Ivar adopted these practices (or should I say best practices) from the successes of modern software development, which came from software engineering (Unified process), process maturity (CMMi, Spice) and agile methods (Scrum, XP). EssUP emphasizes using only those practices you really need and adapting the process to the needs of the project.</p>
<p><strong>EssUp</strong></p>
<p>Ivar stated that we don&#8217;t like reading. He has got a point with this statement. In multiple organizations the way of working is written down in thick documents which no one is going to read. Except for the ones who wrote it, nobody likes it. EssUp aims to be different. It uses a refreshing presentation approach using cards, and guidance sheets to present practices. Because it is presented lightweight way, the practices are easy to learn and understand.</p>
<p>The real power of EssUp that it is open and extensible. Anyone can create their own practices and share them with others in for instance a community.</p>
<p><strong>Essentials</strong></p>
<p>The EssUp has 8 essential practices which are divided five technical practices, and three cross cutting practices:</p>
<ul>
<li>Technical practices: Architecture, Iterative, Use-case, Component, Product</li>
<li>Cross cutting practices: Process, Team (agile), Modeling</li>
</ul>
<p>Where is testing you might ask? Testing is everywhere. It should be an integrated part of the practices and performed by the creators of the artifacts. </p>
<p>So are these 8 practices all there is? No, these are the ones that are gathered and aligned with each other. You can add more practices (even your own practices) to EssUp, but be aware that the practices could conflict with other practices.</p>
<p><strong>EssUp vs RUP</strong></p>
<p>The nice thing about EssUp is that you don&#8217;t have to use all practices. You could easily start with one and add more if you like. With RUP you use the whole process even if you don&#8217;t need create all the artifacts. Ivar stated this as the real difference. Depending on your implementation of RUP this might be true. In most projects I use cherry picking so this isn&#8217;t a real difference to me. EssUp differs in the lightweight presentation of the practices and extensibility.</p>
<p>After the presentation I asked Ivar about a Scrum practice. He likes Scrum a lot and is working on a practice which will be available in a few months.</p>
<p><strong>Knowledge Generations</strong></p>
<p>Ivar described EssUp in terms of knowledge generations. EssUp is the interactive way of storing knowledge. The differences between the generations are shown in table below.</p>
<table>
<tr>
<td>1st generation (tactic)</td>
<td>2nd generation (explicit)</td>
<td>3rd generation (interactive)</td>
</tr>
<tr>
<td>Ad hoc knowledge (text books)</td>
<td>Structured knowledge</td>
<td>Interactive knowledge in a dynamic environment</td>
</tr>
<tr>
<td>XP, Scrum</td>
<td>Rup, Msf</td>
<td>EssUp in EssWork</td>
</tr>
</table>
<p>The EssWork is an intelligent agent that can do active guidance, active review, active automation, etc. of EssUp. It will be available in the VisualStudio and the Eclipse environment. In my opinion the EssWork tool makes the EssUp fragile. Good tools will support the ideas behind EssUp whereas bad tools might result in not using EssUp.</p>
<p><strong>Conclusion</strong></p>
<p>So what&#8217;s so great about EssUp? It&#8217;s lightweight, easy to learn without reading tons of books. You could say it is in a way agile. I like the way EssUp is using cherry picking. Whether it will be a success depends on the way tools are supporting it and the practices that are created by the community.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2007/04/26/essup-the-practice-centric-software-development-process/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2007%2F04%2F26%2Fessup-the-practice-centric-software-development-process%2F&amp;title=EssUP%2C%20the%20practice%20centric%20software%20development%20process" id="wpa2a_14"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2007/04/26/essup-the-practice-centric-software-development-process/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  blog.xebia.com/author/rdegroot/feed/ ) in 0.61739 seconds, on Feb 9th, 2012 at 4:21 pm UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 9th, 2012 at 5:21 pm UTC -->
