<?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>Just Enough Technology &#187; Architecture</title>
	<atom:link href="http://justenoughtechnology.com/tag/architecture/feed/" rel="self" type="application/rss+xml" />
	<link>http://justenoughtechnology.com</link>
	<description>The passion to see business leverage technology both powerfully and economically</description>
	<lastBuildDate>Thu, 20 May 2010 00:18:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Good Azure Video from PDC09</title>
		<link>http://justenoughtechnology.com/good-azure-video-from-pdc09/</link>
		<comments>http://justenoughtechnology.com/good-azure-video-from-pdc09/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 03:04:30 +0000</pubDate>
		<dc:creator>Dave Ranck</dc:creator>
				<category><![CDATA[Architecture and Design]]></category>
		<category><![CDATA[Business and Technology]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Cost Benefit Analysis]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[ROI]]></category>
		<category><![CDATA[TCO]]></category>

		<guid isPermaLink="false">http://justenoughtechnology.com/?p=247</guid>
		<description><![CDATA[Here&#8217;s a great intro to Azure from PDC 09. If you have not looked at Azure or Cloud computing in general, take a look at this video for an introduction. Cloud Computing is here and in use. It will only grow in the near future.
PDC Video on Cloud Computing with Azure
J9SYRP3G9ZUC


Related posts:Windows Azure Now Available
Windows [...]


Related posts:<ol><li><a href='http://justenoughtechnology.com/windows-azure-now-available/' rel='bookmark' title='Permanent Link: Windows Azure Now Available'>Windows Azure Now Available</a></li>
<li><a href='http://justenoughtechnology.com/146/' rel='bookmark' title='Permanent Link: Windows Azure Videos'>Windows Azure Videos</a></li>
<li><a href='http://justenoughtechnology.com/java-vs-net-another-blast-from-the-past/' rel='bookmark' title='Permanent Link: Java vs. .Net &ndash; Another Blast From the Past'>Java vs. .Net &ndash; Another Blast From the Past</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a great intro to Azure from PDC 09. If you have not looked at Azure or Cloud computing in general, take a look at this video for an introduction. Cloud Computing is here and in use. It will only grow in the near future.</p>
<p><a title="Cloud Computing with Azure Video" href="http://gallery.live.com/liveItemDetail.aspx?li=195af345-360c-4411-aa24-f1bd90dd5655&amp;bt=1&amp;pl=1" target="_blank">PDC Video on Cloud Computing with Azure</a></p>
<p>J9SYRP3G9ZUC</p>


<p>Related posts:<ol><li><a href='http://justenoughtechnology.com/windows-azure-now-available/' rel='bookmark' title='Permanent Link: Windows Azure Now Available'>Windows Azure Now Available</a></li>
<li><a href='http://justenoughtechnology.com/146/' rel='bookmark' title='Permanent Link: Windows Azure Videos'>Windows Azure Videos</a></li>
<li><a href='http://justenoughtechnology.com/java-vs-net-another-blast-from-the-past/' rel='bookmark' title='Permanent Link: Java vs. .Net &ndash; Another Blast From the Past'>Java vs. .Net &ndash; Another Blast From the Past</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://justenoughtechnology.com/good-azure-video-from-pdc09/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java vs. .Net &#8211; Another Blast From the Past</title>
		<link>http://justenoughtechnology.com/java-vs-net-another-blast-from-the-past/</link>
		<comments>http://justenoughtechnology.com/java-vs-net-another-blast-from-the-past/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 19:28:10 +0000</pubDate>
		<dc:creator>Dave Ranck</dc:creator>
				<category><![CDATA[Architecture and Design]]></category>
		<category><![CDATA[Business and Technology]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Cost Benefit Analysis]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[ROI]]></category>
		<category><![CDATA[TCO]]></category>

		<guid isPermaLink="false">http://justenoughtechnology.com/java-vs-net-another-blast-from-the-past/</guid>
		<description><![CDATA[Here’s another ancient article I wrote that I recently reread. It is interesting to see what has changed since this was first published on SearchSOA almost 8 years ago (see link at end of article). There are also many things that have not changed in those years. Companies continue to be faced with the question [...]


Related posts:<ol><li><a href='http://justenoughtechnology.com/choosing-between-java-and-net/' rel='bookmark' title='Permanent Link: Choosing Between Java and .Net'>Choosing Between Java and .Net</a></li>
<li><a href='http://justenoughtechnology.com/craftsmanship-and-software-development/' rel='bookmark' title='Permanent Link: Craftsmanship and Software Development'>Craftsmanship and Software Development</a></li>
<li><a href='http://justenoughtechnology.com/windows-azure-now-available/' rel='bookmark' title='Permanent Link: Windows Azure Now Available'>Windows Azure Now Available</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Here’s another ancient article I wrote that I recently reread. It is interesting to see what has changed since this was first published on <a href="http://searchsoa.techtarget.com/" target="_blank">SearchSOA</a> almost 8 years ago (see link at end of article). There are also many things that have not changed in those years. Companies continue to be faced with the question of what technology platform to choose for their Line of Business (<a href="http://en.wikipedia.org/wiki/Line_of_Business" target="_blank">LOB</a>) applications. Often decisions are made based on criteria that have not been properly matched to business objectives. Sometimes the result is that the new technology platform is abandoned in the not so distant future, with a corresponding loss of investment dollars.</p>
<p>With a <strong>Just Enough Technology</strong> approach, a company evaluates technology against its core problem or objectives. I work with business and technology leaders within a company to define their true objectives and then weigh the technology decisions with their business objectives as the main criteria. Read through this article on choosing between the Java and Microsoft platforms. Both technologies have evolved quite a bit since this was first published, but some of the core arguments remain to this day.</p>
<p><span id="more-241"></span></p>
<p><strong>The article:<br />
A user asks Dave, &#8220;Assume that we have a new mission critical Web application that we need to develop over the next six months. How would you recommend we compare &amp; contrast the pros/cons of J2EE vs. .NET as the platform (assuming we have the proper skills)?&#8221; </strong></p>
<p>There are many, many factors that come into play when deciding between J2EE and .NET. As a foundational statement, let me state that I personally believe you can build (and I have built) mission critical Web applications on both platforms. Sun Microsystems commissioned a white paper (see links at the end of this post) that states the theoretical scalability of each platform is unlimited. I say this because your decision should not based on whether or not you *can* build a more robust application in one or the other. It can be done.</p>
<p>As far as developing Web services, either platform offers a great foundation. Of course there are intrinsic advantages to each platform which I&#8217;ll list later. Web services and .NET are tightly integrated. It is *very* easy to create a basic Web service in .NET. It is simply a matter of placing a directive on each method you want exposed as a Web method. The compiler does the rest for you. Deployment is also a breeze. For the most part, you simply copy your files to the server and you&#8217;re done. Visual Studio .NET is also a development environment that has no peers, in my opinion. I still believe Microsoft has the edge in getting a project out the door as fast as possible.</p>
<p>J2EE on the other hand also has some good tools for creating Web services. IBM&#8217;s WebSphere Studio Application Developer 4 offers some great work-saving features for creating Web services. Basically you choose a Java bean or other object to &#8220;WebServicefy&#8221; and step through the wizard. When you are done, WebSphere Studio has created a wrapper for your object and all the SOAP, WSDL, etc. code needed. It also has created a JSP application to test your new Web service. It works and it is straightforward. I was able to create a simple Web service within 30 minutes of opening the environment for the first time. Pretty impressive for a Java IDE.</p>
<p>If you have developers skilled in one or the other platforms, then lean strongly toward that platform. The cost of training is high. Leveraging existing skills should be a priority.</p>
<p>That said then, what are the decision points one would consider when choosing between J2EE and .NET? Here are a few considerations and who I think has the advantage in each:</p>
<p><strong>Multi-Platform: J2EE</strong><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Currently if you need to create applications that run on more than one platform, Java is your only choice. This may change in future as .NET is ported to other platforms &#8211; we&#8217;ll see.</p>
<p><strong>Legacy Integration: J2EE?</strong><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
If you need to integrate legacy systems you may have an easier time in J2EE. IBM for example, provided the iron for many of these systems and has very workable solutions to connect to mainframes through WebSphere. On the other hand, you *could* create a Web service on the legacy platform, making this point moot.</p>
<p><strong>Multi-Language: .NET</strong><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
If you have developers in VB, C++, Java and want a unified environment for them to work in, .NET is your choice. All languages are created equal and work together, including cross-language inheritance.</p>
<p><strong>Choice of Vendors: J2EE</strong><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Is a choice of vendors important to you? There are advantages to a multi-vendor solution &#8211; you can choose the best-of-breed for each component of your system. There are also advantages to a single vendor solution, which include better interoperability between components. For example, .NET and SQL Server 2000 working together are a powerful, easy to use (relatively) combination.</p>
<p><strong>Vertical Scalability: J2EE</strong><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
If scaling up by buying bigger iron is your organizations preferred method, than lean toward J2EE.</p>
<p><strong>Horizontal Scalability: .NET</strong><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
If your organization likes the idea of a greater number of cheaper servers than there is probably an edge with .NET.</p>
<p>Finally, after all is said and done, many decisions are in reality based on shall we say, non-scientific criteria such as:</p>
<p>Like Microsoft: .NET<br />
Don&#8217;t: J2EE</p>
<p>I say this only partly tongue-in-cheek. Prejudice against Microsoft and the underlying technology goes deep with many technical folks and some business folks. It is a real factor in making this decision. There is also a prejudice in the Microsoft community against Java that is also based on less than scientific findings.</p>
<p><strong>LINKS</strong>:</p>
<p>Original Article:<br />
( <a title="http://searchsoa.techtarget.com/news/article/0,289142,sid26_gci819020,00.html" href="http://searchsoa.techtarget.com/news/article/0,289142,sid26_gci819020,00.html">http://searchsoa.techtarget.com/news/article/0,289142,sid26_gci819020,00.html</a> )</p>
<p><a href="http://www.theserverside.com/resources/article.jsp?l=J2EE-vs-DOTNET">J2EE vs. Microsoft .NET:</a> (Copyright2001 The Middleware Company Prepared for Sun Microsystems, Inc.<br />
<a href="http://www.tpc.org/">Transaction Processing Performance Council</a><br />
<a href="http://www.objectwatch.com/FinalJ2EEandDotNet.doc">Roger Sessions&#8217; comparison of .NET to J2EE</a><br />
<a href="http://www.sdmagazine.com/articles/2001/0103/0103a/0103a.htm">Software Dev Magazine article</a><br />
<a href="http://java.oreilly.com/news/farley_0800.html">O&#8217;Reilly article comparing J2EE and .NET</a></p>
<div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2164beb6-222a-4558-9129-4b0d931cf8d0" class="wlWriterEditableSmartContent" style="margin: 0px; display: inline; float: none; padding: 0px;">Technorati Tags: <a rel="tag" href="http://technorati.com/tags/SOA">SOA</a>,<a rel="tag" href="http://technorati.com/tags/Java">Java</a>,<a rel="tag" href="http://technorati.com/tags/.Net">.Net</a>,<a rel="tag" href="http://technorati.com/tags/Web+Services">Web Services</a>,<a rel="tag" href="http://technorati.com/tags/Scalability">Scalability</a>,<a rel="tag" href="http://technorati.com/tags/ROI">ROI</a>,<a rel="tag" href="http://technorati.com/tags/TCO">TCO</a></div>


<p>Related posts:<ol><li><a href='http://justenoughtechnology.com/choosing-between-java-and-net/' rel='bookmark' title='Permanent Link: Choosing Between Java and .Net'>Choosing Between Java and .Net</a></li>
<li><a href='http://justenoughtechnology.com/craftsmanship-and-software-development/' rel='bookmark' title='Permanent Link: Craftsmanship and Software Development'>Craftsmanship and Software Development</a></li>
<li><a href='http://justenoughtechnology.com/windows-azure-now-available/' rel='bookmark' title='Permanent Link: Windows Azure Now Available'>Windows Azure Now Available</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://justenoughtechnology.com/java-vs-net-another-blast-from-the-past/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Azure Now Available</title>
		<link>http://justenoughtechnology.com/windows-azure-now-available/</link>
		<comments>http://justenoughtechnology.com/windows-azure-now-available/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 02:07:55 +0000</pubDate>
		<dc:creator>Dave Ranck</dc:creator>
				<category><![CDATA[Business and Technology]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://justenoughtechnology.com/?p=183</guid>
		<description><![CDATA[Microsoft&#8217;s Windows Azure and SQL Azure cloud services are now generally available with full SLAs. This ends the free test period for those who signed up last month. This is a key release milestone for Microsoft. Azure has been in development for several years and in beta since late 2008. From the Azure team blog:
Starting [...]


Related posts:<ol><li><a href='http://justenoughtechnology.com/146/' rel='bookmark' title='Permanent Link: Windows Azure Videos'>Windows Azure Videos</a></li>
<li><a href='http://justenoughtechnology.com/good-azure-video-from-pdc09/' rel='bookmark' title='Permanent Link: Good Azure Video from PDC09'>Good Azure Video from PDC09</a></li>
<li><a href='http://justenoughtechnology.com/java-vs-net-another-blast-from-the-past/' rel='bookmark' title='Permanent Link: Java vs. .Net &ndash; Another Blast From the Past'>Java vs. .Net &ndash; Another Blast From the Past</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Microsoft&#8217;s Windows <a title="Azure Services Platform - Wikipedia, the free encyclopedia" href="http://en.wikipedia.org/wiki/Azure_Services_Platform" rel=nofollow target=_blank>Azure </a>and SQL Azure cloud services are now generally available with full <acronym style="border-bottom: 1px dotted; cursor: help" title="Service Level Agreement">SLA</acronym>s. This ends the free test period for those who signed up last month. This is a key release milestone for Microsoft. Azure has been in development for several years and in beta since late 2008. From the Azure team blog:</p>
<blockquote><p>Starting today, customers and partners in countries across the globe will be able to launch their Windows Azure and SQL Azure production applications and services with the support of the full <a href="http://www.microsoft.com/windowsazure/sla/" target=_blank>Service Level Agreements</a> (SLAs).Â The Windows Azure platform AppFabric Service Bus and Access Control will continue to be free until April 2010 for those that sign up for a commercial subscription. Additionally Microsoft codename &#8220;Dallas&#8221; will continue to be in a free CTP.</p></blockquote>
<p><a title="Azure Team Blog" href="http://blogs.msdn.com/windowsazure/archive/2010/02/01/windows-azure-platform-now-generally-available-in-21-countries.aspx" target=_blank>Read more on the Azure team blog.</a></p>


<p>Related posts:<ol><li><a href='http://justenoughtechnology.com/146/' rel='bookmark' title='Permanent Link: Windows Azure Videos'>Windows Azure Videos</a></li>
<li><a href='http://justenoughtechnology.com/good-azure-video-from-pdc09/' rel='bookmark' title='Permanent Link: Good Azure Video from PDC09'>Good Azure Video from PDC09</a></li>
<li><a href='http://justenoughtechnology.com/java-vs-net-another-blast-from-the-past/' rel='bookmark' title='Permanent Link: Java vs. .Net &ndash; Another Blast From the Past'>Java vs. .Net &ndash; Another Blast From the Past</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://justenoughtechnology.com/windows-azure-now-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Craftsmanship and Software Development</title>
		<link>http://justenoughtechnology.com/craftsmanship-and-software-development/</link>
		<comments>http://justenoughtechnology.com/craftsmanship-and-software-development/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 22:31:56 +0000</pubDate>
		<dc:creator>Dave Ranck</dc:creator>
				<category><![CDATA[Architecture and Design]]></category>
		<category><![CDATA[Business and Technology]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://justenoughtechnology.com/craftsmanship-and-software-development/197/</guid>
		<description><![CDATA[In a previous post I quoted a colleague who stated :
I like how they use the term “Craftsman” to describe what we do….[the craftsmen are] the ones who have taken the time to master the tools that have been made available to them to assist in their craft.
Craftsmanship in the manner used above,  refers to [...]


Related posts:<ol><li><a href='http://justenoughtechnology.com/test-dev/' rel='bookmark' title='Permanent Link: Is Software Engineering Dead?'>Is Software Engineering Dead?</a></li>
<li><a href='http://justenoughtechnology.com/why-do-we-need-software-architects/' rel='bookmark' title='Permanent Link: Why Do We Need Software Architects?'>Why Do We Need Software Architects?</a></li>
<li><a href='http://justenoughtechnology.com/choosing-between-java-and-net/' rel='bookmark' title='Permanent Link: Choosing Between Java and .Net'>Choosing Between Java and .Net</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>In a previous post I quoted a colleague who stated :</p>
<blockquote><p>I like how they use the term “Craftsman” to describe what we do….[the craftsmen are] the ones who have taken the time to master the tools that have been made available to them to assist in their craft.</p></blockquote>
<p>Craftsmanship in the manner used above,  refers to an attention to detail and a pride in one’s work product. A craftsman is more than a worker – he or she truly cares that they do things right and to the best of their ability. I agree with this thought in principle, but I want to expand on it a bit and speak to one difficulty with software craftsmanship as a methodology.<span id="more-197"></span></p>
<p>In today’s technological world we need craftsmen, but we also need more than craftsmen. As an allegory, look at home building. We care about the quality of construction in homes that we buy. We certainly want to make sure everything is up to code and if we live in an area subject hurricanes, we want to know the proper standards and materials have been used in construction. We want to be sure that the workers who raise the frame, do the plumbing and electrical work and do the interior finish work are adequately skilled in their craft. That said, we would not hire a cabinet maker to do the framing, an electrical engineer to run the wiring or a rocket scientist to handle the plumbing. We choose the right skills and tools for the job at hand.</p>
<p>Software development is still in large part a craft, an art. We are not yet at the stage where every aspect of software development is reduced to a kind of binary assembly line, where unskilled workers assemble programs from software “parts”. True, there are some benefits we can receive from using prebuilt libraries or components, saving development, testing and maintenance costs as we will discuss below. But we still need good, skilled developers to do the heavy lifting. Software is not like machinery. For the most part, you design and build a machine to do one thing. Software on the other hand is much more multi-faceted and when starting a software design, there really are almost unlimited options available. A problem can be solved in many, many ways. A craftsman is needed to help choose an appropriate solution.</p>
<p>But we are also beyond the time when every piece of software must be built from the ground up. There are many commercial and <a title="Open source - Wikipedia, the free encyclopedia" rel="nofollow" href="http://en.wikipedia.org/wiki/Open_source" target="_blank">open source</a> solutions available that can jumpstart projects or that can provide the backbone for common application functionality. These solutions include things like <a title="NHibernate - Wikipedia, the free encyclopedia" href="http://en.wikipedia.org/wiki/NHibernate" target="_blank">nHibernate</a>, Spring, and other persistence libraries that handle common operations in a manner that has been well-tested and which meets the needs of many projects. The Java community has made very good use of open source projects and libraries, some of which are now included in core Java. Why then aren’t these types of libraries used more frequently in Line of Business (LOB) applications? I believe business is often missing out on long and short term cost savings by not leveraging these open source or 3rd party solutions. One reason these solutions are sometimes not adopted (certainly not the only reason) is the inherent craftsman mentality of developers and architects. I call it the “<em>But we can do better</em>” syndrome.</p>
<p>You are probably familiar with the <a href="http://en.wikipedia.org/wiki/Pareto_principle" target="_blank">Pareto principle</a>, also know as the 80-20 rule. In  the cost-benefit analysis of software projects this rule can be stated as “80% of the benefit comes from 20% of the development effort”. What this means in practice: IT needs to concentrate on that 20% of the time and effort which provides the most benefit and spend a lot less time and effort on the remaining 80%. In reality, it is often difficult for technical people to do this. Why? The 20% tends to be more mundane from a technical perspective and there is a lot of interesting design and coding to be done in the 80%. There’s an old story programmers tell about the a programmer who said “I can write that function in 10 lines of code”. Another programmer said, “I can do it in 5 lines of code”. Finally, a third said “Well, I can do it only one line of code” and he proceeded to spend hours upon hours writing and rewriting the function until it worked with only one line of code. What is the problem with this story? The first programmer could have written the function in minutes, the second in an hour or two but it took the third programmer many hours to complete the task. On top of that, the third programmer’s code was so complicated and used so many programming “tricks&#8217;” that very few other programmers could understand how it worked.</p>
<p>The “We can do better” syndrome is difficult for business to fight. Better after all is well, better. If we can reduce the time it takes to execute a function by 500%, it should be worth the effort because of the performance savings. Right? What if it only took .5 milliseconds for the function to run before it was optimized? End users would see zero benefit from the added effort to increase performance.* But from the third programmer’s perspective, he did the right thing. He made the application more efficient according to his definition.</p>
<p>Programmers also tend to distrust code that came from an unknown source (or even from one of their colleagues). In the early days of distributed computing we had the grand notion of creating object libraries full of reusable code. The greatest obstacle we faced to reaching this goal was the unwillingness of developers to use another programmer’s code. They would rather create it themselves. There was always something that the library didn’t do or didn’t do “well enough” in their opinion.</p>
<p>The moral of the story is this: we must apply the same logic for selecting software solutions that we would in other areas of business. Good enough is good enough. If there is an open source library or 3rd party library available that meets the 80-20 rule and which will truly deliver on the project’s requirements, it should be strongly considered as an alternative to developing everything from scratch. In order to know when to use an existing library and when to build a new library, business and IT must work together, and IT must keep the business objectives as the first priority. On the other hand business must be clear about their objectives with IT. Those objectives are the measuring stick for evaluating software design alternatives.</p>
<p style="padding-left: 30px;"><em>* I am aware that in some instances such as recursive calls, .5 milliseconds can be a performance bottleneck. That isn’t the scenario I am using here.</em></p>


<p>Related posts:<ol><li><a href='http://justenoughtechnology.com/test-dev/' rel='bookmark' title='Permanent Link: Is Software Engineering Dead?'>Is Software Engineering Dead?</a></li>
<li><a href='http://justenoughtechnology.com/why-do-we-need-software-architects/' rel='bookmark' title='Permanent Link: Why Do We Need Software Architects?'>Why Do We Need Software Architects?</a></li>
<li><a href='http://justenoughtechnology.com/choosing-between-java-and-net/' rel='bookmark' title='Permanent Link: Choosing Between Java and .Net'>Choosing Between Java and .Net</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://justenoughtechnology.com/craftsmanship-and-software-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Do We Need Software Architects?</title>
		<link>http://justenoughtechnology.com/why-do-we-need-software-architects/</link>
		<comments>http://justenoughtechnology.com/why-do-we-need-software-architects/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 10:07:47 +0000</pubDate>
		<dc:creator>Dave Ranck</dc:creator>
				<category><![CDATA[Architecture and Design]]></category>
		<category><![CDATA[Business and Technology]]></category>
		<category><![CDATA[Process (SDLC)]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Planning]]></category>
		<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://justenoughtechnology.com/?p=109</guid>
		<description><![CDATA[Another Blast From The Past Article &#8211; Originally Published in Sept. 2003

I am a software architect, but I&#8217;m not a &#8220;Blue Sky&#8221; thinker; I&#8217;m more of a practical thinker.  I asked myself some questions about architects. What is a Software Architect and why do we need them? What do we expect from architects and why [...]


Related posts:<ol><li><a href='http://justenoughtechnology.com/why-just-enough-technology/' rel='bookmark' title='Permanent Link: Why Just Enough Technology?'>Why Just Enough Technology?</a></li>
<li><a href='http://justenoughtechnology.com/using-rational-xde-with-visual-studio-net/' rel='bookmark' title='Permanent Link: Using Rational XDE with Visual Studio .Net'>Using Rational XDE with Visual Studio .Net</a></li>
<li><a href='http://justenoughtechnology.com/craftsmanship-and-software-development/' rel='bookmark' title='Permanent Link: Craftsmanship and Software Development'>Craftsmanship and Software Development</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><em>Another Blast From The Past Article &#8211; Originally Published in Sept. 2003<br />
</em></p>
<p>I am a <a title="Software architect - Wikipedia, the free encyclopedia" rel="nofollow" href="http://en.wikipedia.org/wiki/Software_architect" target="_blank">software architect</a>, but I&#8217;m not a &#8220;Blue Sky&#8221; thinker; I&#8217;m more of a practical thinker.  I asked myself some questions about architects. What is a Software Architect and why do we need them? What do we expect from architects and why not just have a tech lead? Is there real benefit in an architect and are some projects too small for an architect? If so, what qualifies a project as needing an architect?<span id="more-109"></span></p>
<p>I believe and practice iterative development techniques and <a title="Agile software development - Wikipedia, the free encyclopedia" rel="nofollow" href="http://en.wikipedia.org/wiki/Agile_software_development" target="_blank">agile methodologies</a>. What I have found, is that even in the agile world, a strong architect can make a project and the lack of architecture (or more properly &#8211; architecting) can foil a project&#8217;s success. Martin Fowler has written an excellent treatise on Software Architects &#8211; <a href="http://web.archive.org/web/20040119124902/http:/martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf" target="_blank"><strong>Who Needs an Architect?</strong></a> (pdf).</p>
<p>In it, he states:</p>
<p><strong><em>Architectus Reloadus</em></strong><em> is the person who makes all the important decisions. The architect does this because a single mind is needed to ensure a system’s conceptual integrity, and perhaps because the architect doesn’t think that the team members are sufficiently skilled to make those decisions. Often, such decisions must be made early on so that everyone else has a plan to follow. </em><em></em></p>
<p><em><strong>Architectus Oryzus</strong><em> is a different kind of animal (if you can’t guess, try </em></em><a href="http://web.archive.org/web/20040119124902/http:/www.nd.edu/%7Earchives/latgramm.htm" target="_blank"><em>www.nd.edu/~archives/latgramm.htm</em></a><em>). This kind of architect must be very aware of what’s going on in the project, looking out for important issues and tackling them before they become a serious problem. When I see an architect like this, the most noticeable part of the work is the intense collaboration. In the morning, the architect programs with a developer, trying to harvest some common locking code. In the afternoon, the architect participates in a requirements session, helping explain to the requirements people the technical consequences of some of their ideas in nontechnical terms &#8212; such as development costs.</em></p>
<p>Do you remember <a title="Microsoft Solutions Framework - Wikipedia, the free encyclopedia" rel="nofollow" href="http://en.wikipedia.org/wiki/Microsoft_Solutions_Framework" target="_blank">MSF </a>(Microsoft Solutions Framework)? This is a development methodology that was distributed by Microsoft. The Lifecycle methodology was kind of iterative, but on a release cycle, rather than multiple iterations per release ala <a title="IBM Rational Unified Process - Wikipedia, the free encyclopedia" rel="nofollow" href="http://en.wikipedia.org/wiki/IBM_Rational_Unified_Process" target="_blank">RUP</a>. It tended (in my mind) toward product development rather than custom software projects or internal IT projects which are quite different from product projects.</p>
<p>What MSF did have is a very strong Team concept that bears close review today. Now they don&#8217;t really mention the concept of an Architect in relation to the development team, but they do put great emphasis on a tech lead (who would be doing what I expect an architect to do). The great principle here is that you need at least 3 leaders on a team:</p>
<ul>
<li>The Project      Manager (Program Manager in MSF)</li>
<li>The Tech Lead</li>
<li>The Product      Manager</li>
</ul>
<p>The tech Lead (Architect) takes on the million technical details of a project and the leads the design and development process. The Product Manager is a business representative whose job it is to coordinate the million business details of a project, gather requirements at the business level form stakeholders, and is the business Point of Contact for the project. The Project Manager is responsible for managing schedule, LOE against budget and is the buffer between the Architect (yes I switched terms in mid-stream, good catch) and the Product Manager.</p>
<p>The bottom line is that a strong team needs a good technical mind and a good business mind and a good manager / organizer mind. When the business folks are pushing for more features, the project manager is asking the architect what the impact is and then relaying that back to the business folks. No surprises, scope creep is managed. If a change is scope is really needed, all go into it with eyes wide open.</p>
<p>So then, why not just a tech lead? Because just as the skills required for project management differ from developer skills, architect skills differ somewhat from tech lead skills. A good tech lead certainly has architectural savvy to at least some extent. An architect though is used to always considering the big picture. He or she can step back &#8211; and *stay* back, keeping his mind on the larger view. The architect will let the tech lead and developers do their job without micro-management, and yet they are always there to help and advise if needed.</p>
<p>So do all project need a dedicated architect? Yes and no. Certainly on a smaller project the tech lead can function as the architect, but must keep in mind the big picture, the long-term view. Its easy to be inundated with micro-details and miss the larger issues that have great effect over the long haul. On a mid-size or larger project, having an architect (of the type Mr. Fowler describes) can make the difference between overwhelming success and the other alternative.</p>
<p>Take some time to read the article and ponder it. I think it will be more than worth your time. <a href="http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf" target="_blank"><strong>Get the article here.</strong></a></p>


<p>Related posts:<ol><li><a href='http://justenoughtechnology.com/why-just-enough-technology/' rel='bookmark' title='Permanent Link: Why Just Enough Technology?'>Why Just Enough Technology?</a></li>
<li><a href='http://justenoughtechnology.com/using-rational-xde-with-visual-studio-net/' rel='bookmark' title='Permanent Link: Using Rational XDE with Visual Studio .Net'>Using Rational XDE with Visual Studio .Net</a></li>
<li><a href='http://justenoughtechnology.com/craftsmanship-and-software-development/' rel='bookmark' title='Permanent Link: Craftsmanship and Software Development'>Craftsmanship and Software Development</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://justenoughtechnology.com/why-do-we-need-software-architects/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Choosing Between Java and .Net</title>
		<link>http://justenoughtechnology.com/choosing-between-java-and-net/</link>
		<comments>http://justenoughtechnology.com/choosing-between-java-and-net/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 07:22:25 +0000</pubDate>
		<dc:creator>Dave Ranck</dc:creator>
				<category><![CDATA[Architecture and Design]]></category>
		<category><![CDATA[Business and Technology]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Planning]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://justenoughtechnology.com/?p=113</guid>
		<description><![CDATA[Another Blast From The Past Article – Originally Published in Oct.  2004

I&#8217;ve been going over some articles I wrote over the years and have resurrected a few for Just Enough Technology. They are interesting in that the ideas are (usually) still valid and relevant in today&#8217;s world. This article was the basis of my [...]


Related posts:<ol><li><a href='http://justenoughtechnology.com/java-vs-net-another-blast-from-the-past/' rel='bookmark' title='Permanent Link: Java vs. .Net &ndash; Another Blast From the Past'>Java vs. .Net &ndash; Another Blast From the Past</a></li>
<li><a href='http://justenoughtechnology.com/craftsmanship-and-software-development/' rel='bookmark' title='Permanent Link: Craftsmanship and Software Development'>Craftsmanship and Software Development</a></li>
<li><a href='http://justenoughtechnology.com/why-just-enough-technology/' rel='bookmark' title='Permanent Link: Why Just Enough Technology?'>Why Just Enough Technology?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><em>Another Blast From The Past Article – Originally Published in Oct.  2004<br />
</em></p>
<p>I&#8217;ve been going over some articles I wrote over the years and have resurrected a few for Just Enough Technology. They are interesting in that the ideas are (usually) still valid and relevant in today&#8217;s world. This article was the basis of my focus on .Net over the last 7 or 8 years. I&#8217;ve created significant applications in both Java and .Net, and I am a great believer in choosing the right technology for the job. That could be Java or .Net or something else. This article contains some tidbits of truth concerning selecting the best technology based on real criteria &#8211; that is, criteria that are based on solving a business problem, not an arbitrary preference.<span id="more-113"></span></p>
<p><strong>How does one go about comparing the relative strengths of and differences between the Microsoft .Net platform and the J2EE platform?</strong></p>
<p>This question is being asked daily in one form or another in companies across the globe. In today&#8217;s Enterprise Application development world, there are 2 main players in the arena: Microsoft&#8217;s .Net and Sun&#8217;s J2EE. IT directors, CIO&#8217;s, software architects and developers are faced with the choice of a platform on which to base not only their next application, but possibly the company&#8217;s core applications for years to come. This decision is important to IT&#8217;s ability to respond to business needs, now and future and involves not only the evaluation of the technology itself, but of the company or companies behind the technology.</p>
<p>One might conclude that because of the importance of these decisions, that due diligence is routinely applied and objectivity is maintained when making such decisions. In my experience working with Fortune 1000 clients, I have surprisingly observed this not always to be the case. Often, management is influenced by the well-intentioned leading of respected technologists within the organization, who, though they thoroughly understand the technology they recommend, are not necessarily objective in their comparative evaluation of competing technologies. In some cases, I have seen this lead to the adoption of a technology platform which was just wrong for the company and which was ultimately discarded (incurring the cost of reworking the applications in another technology).</p>
<p>Before I continue, let me first say that I have a firm opinion on this subject. It is an opinion that has been reached through much experience, both hands-on as a software architect and from a high level as a business development consultant and architect. My purpose in this brief article is to outline my thinking and criteria for reaching this opinion, more than it is to present my conclusions. Perhaps there will be a follow-on article where I will dissect my reasoning more completely. Let me also state that I have designed and developed successful, even award-winning applications in both platforms. Core to my conclusions is the firm belief (borne from experience) that is equally possible to design performant Enterprise applications in either platform.</p>
<p>There are at least two components that must be considered when comparing these platforms; the technology itself and the company behind the technology that you will be partnering with. Starting from the preconception that either technology enables high-performing, enterprise-level application development, we must seek out the differentiators of each technology and its vendor(s). If both technologies support true enterprise application development, do they handle this task in the same manner or with the same degree of ease? Of course not, so lets list a few of these differences. For now I&#8217;ll simply list the individual points and we will cover them in more depth in a later article.</p>
<p><strong>.Net</strong></p>
<ul>
<li>A single vendor      solution</li>
<li>Designed to      specifically integrate with many other supporting applications from the      OS, to the database, to satellite applications such as BizTalk and CMS.</li>
<li>Includes the      best, most efficient development environment (IDE) available today (in my      opinion).</li>
<li>Greatly      facilitates UI development, particularly web UI development (this will be      enhanced even further with the upcoming release of ASP.Net 2.0),</li>
<li>Allows multiple      language use</li>
<li>Limited to the      Windows family of server OSs.</li>
<li>Very good direct      vendor support with add-ons and architecture guidance from the vendor.</li>
<li>Lends itself to      faster time to market development timeframes.</li>
<li>Tends toward a      horizontal scaling architecture</li>
</ul>
<p><strong>J2EE</strong></p>
<ul>
<li>A multiple vendor      solution</li>
<li>Each vendor      supplies differing supporting applications such as a CMS or workflow      management system.</li>
<li>Each vendor      supplies a differing application server such as WebLogic or WebSphere.</li>
<li>Core code is      based on the same JDK.</li>
<li>Multiple vendors      provide IDEs with different capabilities.</li>
<li>Provides Open      Source implementations of functional packages that may or may not find      their way into the core (Struts for example).</li>
<li>A single language      solution (theoretically it is possible to create compilers and runtimes      for other languages, but it is not done in practice)</li>
<li>Runs on multiple      OSs.</li>
<li>Support is      dependent on the vendor and may involve multiple vendors if a number of      vendors are chosen for various facets of the architecture.</li>
<li>Tends toward a      vertical scaling architecture</li>
</ul>
<p><strong>Reaching a conclusion</strong></p>
<p>The process for reaching a conclusion on an architectural platform must as we mentioned take into account the company(ies) behind each platform as well as the relative merits of each platform. If you know me or have been following my .Net site, you have divined that my decision has been for .Net. Part of my reasoning is that .Net is, for the most part, a single vendor solution. That is certainly not to say that .Net is not supported by a multitude of third party vendors, but the core framework is managed and developed by Microsoft. I believe this brings a decided edge to .Net in that Microsoft can coordinate efforts (as they are doing with .Net and Yukon) to strengthen .Net through supporting technologies. IBM can do this to some degree with the WebSphere family, but in practice it is more difficult for Java provider. If IBM is chosen as a vendor and the intention is to utilize many of the other WebSphere family of products, in essence, a decision has been made to go with a single vendor. It may be a good decision at that. What can be lost is the ease of porting applications or code to other vendors products or the ease of integrating other vendors products. This is one reason why I believe interoperability is of greater relevance than portability.</p>
<p>Another factor in reaching a decision must be the corporate culture of your organization and its openness to new ideas and new ways of thinking. Current skillsets must also be considered, but must not become the sole or even the major criterion. Skills can be taught or acquired through hiring. An objective evaluation of these factors must be made. If the IT group just does not like the technology chosen, successful implementation is almost impossible. In addition, the cost to retrain developers in a different technology must be appreciated.</p>
<p>When all is said and done, the criterion that should be foremost is the bottom line: Which platform will enable the highest positive business benefit? This is not always measured in terms of hard dollars (though it certainly often is), but in terms of &#8220;soft&#8221; dollars &#8211; productivity gains, client satisfaction level gains, employee satisfaction level gains, etc. It seems foundational &#8211; but also seems to be often forgotten &#8211; that software has no meaning unless it provides some business benefit. The greater the benefit, the &#8220;better&#8221; the software is. Technologists often concentrate on the internal benefits of software &#8211; it runs faster, it handles more transactions, etc. While these considerations are part of the equation, the bottom line is the relative business benefit. For an extreme example, an application built to handle hundreds of thousands of transactions but that takes thousands of developer hours to construct, test and maintain, may not have great relative business benefit for a departmental intranet application.</p>
<p>One more thought on this idea of business benefit. When evaluating software or platforms, it is important to correctly separate the benefits from the features. OK, it&#8217;s time for a pop-up quiz!</p>
<p>Which of the following is a benefit and which is a feature?<br />
a. The architecture is scalable<br />
b. The architecture can handle 500,000 tpmC</p>
<p>OK, this was a trick question, sorry! Actually, both answers are features. The benefits of these features might include things like: &#8220;Users will not experience application slow-downs even at peak usage times&#8221; or &#8220;We will not incur extra costs for rearchitecting the solution even if our user base quadruples&#8221;. You get the idea.</p>
<p>So what does all this have to do with choosing between J2EE and .Net? These ideas are basis of my thought process in making my evaluation. They are certainly not the only criteria, but I believe they describe how I think about technology in general. It is because of how I view technology as a part of the greater scheme of business in general that I am drawn to .Net and other Microsoft technologies. I always have the end in mind. The software is the means and not the end. The overall benefits of .Net in terms of development efficiency, ease of development, tool support, forward thinking by the vendor, and timely innovation lead to applications that can be developed faster, at less cost and with more features in my experience (providing greater business benefits).</p>
<p>One last illustration. We are all familiar with the resource triangle. There are three components to any development effort: Resources (people and dollars), Time and Features. They are all inter-related. By basing an architecture on a platform that can cut development time, add features and in some cases, cut resource costs, we have a winning solution. For me, that winning solution is .Net.</p>
<p><strong>Addendum: Perceptions</strong></p>
<p>The following are a few perceptions that are not based in hard truth, but are what I call &#8220;perceived truth&#8221; &#8211; preconceptions based on the perceiver&#8217;s viewpoint or other unrelated factors:</p>
<p><em>J2EE is more &#8220;industrial strength&#8221;</em> -<br />
this is simply untrue, though it can be said that some J2EE applications are more industrial strength than some COM or .Net applications. In a later article, we&#8217;ll explore this preconception more thoroughly. One reason for this perception, in my opinion, is the accessibility of Microsoft development tools. Microsoft has done an excellent job providing great tools that enable users who are not expert-level developers to create usable applications. One side affect of this is that some of these users attempt to build enterprise applications without the base understanding of the requisite architecture, design and best practices. There are no practical limits to the strength of .Net applications but best practices for architecture and design must be followed, both in .Net and in J2EE.</p>
<p><em>.Net is good for Rapid Prototyping or departmental applications, but the core architecture should be J2EE based</em> -<br />
It is true that .Net lends itself better to Rapid Prototyping and smaller, departmental applications, but this does not obviate its ability to be used to create true Enterprise applications. What is true, is that it is much more difficult to create departmental projects with J2EE. This has do in part  with the innate complexities of OOP that are usually not compensated for by the J2EE IDEs. J2EE in general does not easily lend itself to adoption by mere mortals, so to speak.</p>
<p><em>All of a company&#8217;s applications must be built using the same platform. We need to rewrite all of the legacy applications now</em> -<br />
The truth is that legacy applications have had a lot of investment poured into them over the years, both in terms of dollars and in terms of knowledge. In the real world we live in today, it is important for applications to interoperate, both to support legacy applications and to support the common reality that, especially in larger companies, more than one modern development platform may be present. Both J2EE and .Net provide the foundations for this kind of integration, though there are (of course) implementation differences.</p>


<p>Related posts:<ol><li><a href='http://justenoughtechnology.com/java-vs-net-another-blast-from-the-past/' rel='bookmark' title='Permanent Link: Java vs. .Net &ndash; Another Blast From the Past'>Java vs. .Net &ndash; Another Blast From the Past</a></li>
<li><a href='http://justenoughtechnology.com/craftsmanship-and-software-development/' rel='bookmark' title='Permanent Link: Craftsmanship and Software Development'>Craftsmanship and Software Development</a></li>
<li><a href='http://justenoughtechnology.com/why-just-enough-technology/' rel='bookmark' title='Permanent Link: Why Just Enough Technology?'>Why Just Enough Technology?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://justenoughtechnology.com/choosing-between-java-and-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
