<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: The Fallacy &#8220;Best of Breed&#8221; in Layered Solutions</title>
	<atom:link href="http://jamescrisp.org/2009/08/11/the-fallacy-best-of-breed-in-layered-solutions/feed/" rel="self" type="application/rss+xml" />
	<link>http://jamescrisp.org/2009/08/11/the-fallacy-best-of-breed-in-layered-solutions/</link>
	<description>C#, .NET, Ruby, Rails, book reviews, mind hacks, Wing Chun and the occasional personal bit.</description>
	<lastBuildDate>Sun, 15 Jan 2012 14:28:18 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
	<item>
		<title>By: Challenging projects and the five stages of grief at Mark Needham</title>
		<link>http://jamescrisp.org/2009/08/11/the-fallacy-best-of-breed-in-layered-solutions/#comment-13121</link>
		<dc:creator>Challenging projects and the five stages of grief at Mark Needham</dc:creator>
		<pubDate>Thu, 13 Aug 2009 07:22:53 +0000</pubDate>
		<guid isPermaLink="false">http://jamescrisp.org/2009/08/11/the-fallacy-best-of-breed-in-layered-solutions/#comment-13121</guid>
		<description>[...] might be because we think we have a better solution to the team organisation, architecture or methodology being [...]</description>
		<content:encoded><![CDATA[<p>[...] might be because we think we have a better solution to the team organisation, architecture or methodology being [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ryan Walker</title>
		<link>http://jamescrisp.org/2009/08/11/the-fallacy-best-of-breed-in-layered-solutions/#comment-13113</link>
		<dc:creator>Ryan Walker</dc:creator>
		<pubDate>Wed, 12 Aug 2009 05:31:17 +0000</pubDate>
		<guid isPermaLink="false">http://jamescrisp.org/2009/08/11/the-fallacy-best-of-breed-in-layered-solutions/#comment-13113</guid>
		<description>You have raised many good points and questions to consider in this post. I will try to add something helpful to the conversation:

1. With regards to “Best of Breed” fallacy, I think many would agree with you that local optimisations can often have a negative effect on global system performance. An example that I can recall that is similar to your 255 characters example. I remember reading about &lt;a href=&quot;http://en.wikipedia.org/wiki/Lee_Iacocca&quot; rel=&quot;nofollow&quot;&gt;Lee Iacocca&lt;/a&gt; (from his auto biography) about his observation that Ford shipped 2 cars per rail cart. After some measurements, he then went back to the engineers and asked them to make the cars 2 cms shorter. The end result was that 3 cars could now fit into one rail cart. A 50% increase in throughput by taking 2 cms off the length of the cars.    

2. With regards to architectural design considerations, communication between all the stakeholders is the biggest challenge (IMHO). With good communication the technology often develops over time to a satisfactory level. The vertical slicing approach; I would classify that as a communication strategy rather than a technology strategy. A bit like a special ops unit within the army, a smaller group that moves faster and has a reduced stakeholder set to answer to. Such an approach gives local optimisations but I don’t think you can win a war or feed an army(/enterprise) with loosely coupled sets of special ops groups. :)

I am more inclined to favour an enterprise architecture approach. There are many, but I like some of the thinking behind the &lt;a href=&quot;http://www.zachmaninternational.com/index.php/home-article/13#maincol&quot; rel=&quot;nofollow&quot;&gt;Zachman Framework&lt;/a&gt; and it has stood the test of time. Having a taxonomy that maps business strategy down through an organisation and into IT infrastructure helps everyone sign from the same hymn sheet.


P.S. I am admire your posting frequency - well done :)</description>
		<content:encoded><![CDATA[<p>You have raised many good points and questions to consider in this post. I will try to add something helpful to the conversation:</p>
<p>1. With regards to “Best of Breed” fallacy, I think many would agree with you that local optimisations can often have a negative effect on global system performance. An example that I can recall that is similar to your 255 characters example. I remember reading about <a href="http://en.wikipedia.org/wiki/Lee_Iacocca" rel="nofollow">Lee Iacocca</a> (from his auto biography) about his observation that Ford shipped 2 cars per rail cart. After some measurements, he then went back to the engineers and asked them to make the cars 2 cms shorter. The end result was that 3 cars could now fit into one rail cart. A 50% increase in throughput by taking 2 cms off the length of the cars.    </p>
<p>2. With regards to architectural design considerations, communication between all the stakeholders is the biggest challenge (IMHO). With good communication the technology often develops over time to a satisfactory level. The vertical slicing approach; I would classify that as a communication strategy rather than a technology strategy. A bit like a special ops unit within the army, a smaller group that moves faster and has a reduced stakeholder set to answer to. Such an approach gives local optimisations but I don’t think you can win a war or feed an army(/enterprise) with loosely coupled sets of special ops groups. <img src='http://jamescrisp.org/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I am more inclined to favour an enterprise architecture approach. There are many, but I like some of the thinking behind the <a href="http://www.zachmaninternational.com/index.php/home-article/13#maincol" rel="nofollow">Zachman Framework</a> and it has stood the test of time. Having a taxonomy that maps business strategy down through an organisation and into IT infrastructure helps everyone sign from the same hymn sheet.</p>
<p>P.S. I am admire your posting frequency - well done <img src='http://jamescrisp.org/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James</title>
		<link>http://jamescrisp.org/2009/08/11/the-fallacy-best-of-breed-in-layered-solutions/#comment-13101</link>
		<dc:creator>James</dc:creator>
		<pubDate>Tue, 11 Aug 2009 12:58:54 +0000</pubDate>
		<guid isPermaLink="false">http://jamescrisp.org/2009/08/11/the-fallacy-best-of-breed-in-layered-solutions/#comment-13101</guid>
		<description>With you both guys. I think developing and delivering in vertical slices is the best way to go. It lets you deliver production ready business functionality from each iteration and stop at any time, and get working software in front of the customer as soon as possible. Not to mention cutting down on the communication overhead and avoiding arguments around different goals and priorities between different layers. 

It&#039;s not always possible to go that way though, for organisational and political reasons. One such reason is the  &quot;best of breed&quot; mentality (really lowest common denominator) approach to the design where the technology choices (eg, Java dev and mainframe dev) and team choices (eg, different  consultancies or different geographic locations) preclude one team handling all the layers in a vertical slice. This means you end up with layered teams. Even in this case it is still worth aiming for vertical slices (all teams working on the same slice of functionality at the same time) but methodological differences, differences in goals and difference in development speeds between the teams in different layers can make this very difficult or even impossible. This is the situation you want to avoid!</description>
		<content:encoded><![CDATA[<p>With you both guys. I think developing and delivering in vertical slices is the best way to go. It lets you deliver production ready business functionality from each iteration and stop at any time, and get working software in front of the customer as soon as possible. Not to mention cutting down on the communication overhead and avoiding arguments around different goals and priorities between different layers. </p>
<p>It's not always possible to go that way though, for organisational and political reasons. One such reason is the  "best of breed" mentality (really lowest common denominator) approach to the design where the technology choices (eg, Java dev and mainframe dev) and team choices (eg, different  consultancies or different geographic locations) preclude one team handling all the layers in a vertical slice. This means you end up with layered teams. Even in this case it is still worth aiming for vertical slices (all teams working on the same slice of functionality at the same time) but methodological differences, differences in goals and difference in development speeds between the teams in different layers can make this very difficult or even impossible. This is the situation you want to avoid!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Miguel Madero</title>
		<link>http://jamescrisp.org/2009/08/11/the-fallacy-best-of-breed-in-layered-solutions/#comment-13099</link>
		<dc:creator>Miguel Madero</dc:creator>
		<pubDate>Tue, 11 Aug 2009 08:30:25 +0000</pubDate>
		<guid isPermaLink="false">http://jamescrisp.org/2009/08/11/the-fallacy-best-of-breed-in-layered-solutions/#comment-13099</guid>
		<description>Alex just beat me on this one. I&#039;d also suggest to have a vertical team structure. It works better and it&#039;s easier to scale. What will you do in case you need more people? Add more layers? When you need to work on new modules, another team could just take over and work independently of the other teams.</description>
		<content:encoded><![CDATA[<p>Alex just beat me on this one. I'd also suggest to have a vertical team structure. It works better and it's easier to scale. What will you do in case you need more people? Add more layers? When you need to work on new modules, another team could just take over and work independently of the other teams.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alex Salamakha</title>
		<link>http://jamescrisp.org/2009/08/11/the-fallacy-best-of-breed-in-layered-solutions/#comment-13095</link>
		<dc:creator>Alex Salamakha</dc:creator>
		<pubDate>Tue, 11 Aug 2009 04:34:43 +0000</pubDate>
		<guid isPermaLink="false">http://jamescrisp.org/2009/08/11/the-fallacy-best-of-breed-in-layered-solutions/#comment-13095</guid>
		<description>That&#039;s why many companies come up with architectures based on vertical slice concept, where each developer/team delivers end-to-end functionality. Each developer would write his own UI, stored procs, services, etc. and all the plumbing will be autogenerated by approved templating tool (to adhere to all standards, etc.).

Disadvantages? Main one is code duplication, where the same problem is often solved by various developers repeatedly. While it&#039;s an obvious inefficiency, it&#039;s not much of an overhead often. 
Imagine horizontal slicing. A service consumed by Team1 and Team2 is developed for them by service team. If Team1 needs to change it later, it needs to go through endless consultations with the service team and Team2 on changing the service. Often it&#039;s too much of risk to change and too much of a regression testing to be performed, hence, a BIG NO to any change.
In vertical world, Team1 just changes it and that&#039;s the end of it. While not pure, it delivers real life results for business.

And if service isn&#039;t working, it&#039;s affecting particular part of the application developed by Team1, not a range of features developed by many teams.</description>
		<content:encoded><![CDATA[<p>That's why many companies come up with architectures based on vertical slice concept, where each developer/team delivers end-to-end functionality. Each developer would write his own UI, stored procs, services, etc. and all the plumbing will be autogenerated by approved templating tool (to adhere to all standards, etc.).</p>
<p>Disadvantages? Main one is code duplication, where the same problem is often solved by various developers repeatedly. While it's an obvious inefficiency, it's not much of an overhead often.<br />
Imagine horizontal slicing. A service consumed by Team1 and Team2 is developed for them by service team. If Team1 needs to change it later, it needs to go through endless consultations with the service team and Team2 on changing the service. Often it's too much of risk to change and too much of a regression testing to be performed, hence, a BIG NO to any change.<br />
In vertical world, Team1 just changes it and that's the end of it. While not pure, it delivers real life results for business.</p>
<p>And if service isn't working, it's affecting particular part of the application developed by Team1, not a range of features developed by many teams.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

