<?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>Devon Hillard&#039;s Digital Sanctuary &#187; development practices</title>
	<atom:link href="http://www.digitalsanctuary.com/tech-blog/tag/development-practices/feed" rel="self" type="application/rss+xml" />
	<link>http://www.digitalsanctuary.com/tech-blog</link>
	<description>Java, ATG, Seam, and related Technologies</description>
	<lastBuildDate>Mon, 30 Jan 2012 23:04:32 +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>Terrible Code</title>
		<link>http://www.digitalsanctuary.com/tech-blog/java/atg/terrible-code.html</link>
		<comments>http://www.digitalsanctuary.com/tech-blog/java/atg/terrible-code.html#comments</comments>
		<pubDate>Tue, 03 Nov 2009 02:57:34 +0000</pubDate>
		<dc:creator>Devon</dc:creator>
				<category><![CDATA[ATG]]></category>
		<category><![CDATA[development practices]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.digitalsanctuary.com/tech-blog/?p=526</guid>
		<description><![CDATA[&#8220;qualifySkus&#8221; is confusing. Is it an array/list/collection of &#8220;qualifiedSKUs&#8221; or a flag that&#8217;s a result of &#8220;qualifyingSkus&#8221; or&#8230;. &#8220;qualifySKus&#8221; should be a constant with a nice comment, not an in-line String. The method getSkusRespository seems like it would return a &#8230; <a href="http://www.digitalsanctuary.com/tech-blog/java/atg/terrible-code.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<pre class="brush: java; title: ; notranslate">
request.setParameter(&quot;qualifySkus&quot;, getSkusRepository(d, cItem));
</pre>
<ol>
<li>&#8220;qualifySkus&#8221; is confusing.  Is it an array/list/collection of &#8220;qualifiedSKUs&#8221; or a flag that&#8217;s a result of &#8220;qualifyingSkus&#8221; or&#8230;.  </li>
<li>&#8220;qualifySKus&#8221; should be a constant with a nice comment, not an in-line String.</li>
<li>The method getSkusRespository seems like it would return a catalog repository, doesn&#8217;t it?  Instead it takes in a List of String SkuIds, loads up the corresponding SKU RepositoryItems, removes any that have the property &#8220;isLive&#8221; set to false, and removes any that have a current inventory stock level of zero.  It then returns an ArrayList of those filtered SKU RepositoryItems.  Perhaps a better name might be &#8220;getLiveInStockSKUs&#8221;?</li>
<li>What on earth is &#8220;d&#8221;?  Even looking at the full code of this class, it&#8217;s very difficult to tell what d is meant to contain.  It&#8217;s actually a List of Strings of SkuIds that are qualifying skus for a given promo.  &#8220;qualifiedSkus&#8221; would be a better name.</li>
<li>cItem is a commerce item.  However it&#8217;s not actually used by the getSkusRepository method at all.  There&#8217;s no reason to pass it in.</li>
<li>This line is in an ATG droplet and shoves the result of the getSkusRepository method into a request param before servicing an oparam.  However, as you can see, it doesn&#8217;t inspect the output of the method.  As I explained above, the method actually filters a list of SKUs based on isLive and current inventory state.  It&#8217;s very possible that there will be no live and in-stock SKUs, and the param&#8217;s value will be null or an empty list.  In that case, we&#8217;d actually want to render a different oparam, which is defined and called elsewhere, but not here.  Validate your output!</li>
</ol>
<p>That&#8217;s six issues in one line.  Please don&#8217;t write code like this.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalsanctuary.com/tech-blog/java/atg/terrible-code.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Project Process &#8211; ATG Development Practices</title>
		<link>http://www.digitalsanctuary.com/tech-blog/java/atg/project-process-atg-development-practices.html</link>
		<comments>http://www.digitalsanctuary.com/tech-blog/java/atg/project-process-atg-development-practices.html#comments</comments>
		<pubDate>Tue, 03 Jun 2008 01:57:00 +0000</pubDate>
		<dc:creator>Devon</dc:creator>
				<category><![CDATA[ATG]]></category>
		<category><![CDATA[development practices]]></category>

		<guid isPermaLink="false">http://www.digitalsanctuary.com/tech-blog/?p=115</guid>
		<description><![CDATA[I haven&#8217;t written a text description of this process yet, sorry. I&#8217;ve been really busy working on two upcoming things from Spark::red that I think you&#8217;ll all appreciate, so bear with me.]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.digitalsanctuary.com/tech-blog/wp-content/uploads/2008/05/project-lifecycle.png'><img src="http://www.digitalsanctuary.com/tech-blog/wp-content/uploads/2008/05/project-lifecycle-300x226.png" alt="" title="ATG Project Lifecycle" width="300" height="226" class="aligncenter size-medium wp-image-116" /></a></p>
<p>I haven&#8217;t written a text description of this process yet, sorry.</p>
<p>I&#8217;ve been really busy working on two upcoming things from Spark::red that I think you&#8217;ll all appreciate, so bear with me.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalsanctuary.com/tech-blog/java/atg/project-process-atg-development-practices.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Project Roles &#8211; ATG Development Practices</title>
		<link>http://www.digitalsanctuary.com/tech-blog/java/atg/project-roles-atg-development-practices.html</link>
		<comments>http://www.digitalsanctuary.com/tech-blog/java/atg/project-roles-atg-development-practices.html#comments</comments>
		<pubDate>Thu, 22 May 2008 16:13:51 +0000</pubDate>
		<dc:creator>Devon</dc:creator>
				<category><![CDATA[ATG]]></category>
		<category><![CDATA[development practices]]></category>

		<guid isPermaLink="false">http://www.digitalsanctuary.com/tech-blog/?p=113</guid>
		<description><![CDATA[Let&#8217;s define some roles for a full life-cycle ATG Development effort. Your company may not be arranged exactly like this, but it&#8217;s a good baseline I think. Client Representative The single face of the client. The sole conduit to and &#8230; <a href="http://www.digitalsanctuary.com/tech-blog/java/atg/project-roles-atg-development-practices.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s define some roles for a full life-cycle ATG Development effort.  Your company may not be arranged exactly like this, but it&#8217;s a good baseline I think.</p>
<p><strong>Client Representative</strong><br />
The single face of the client.  The sole conduit to and from the client.</p>
<p><strong>Project Manager/Dev Manager</strong><br />
The owner of the schedule, resources, project status, and interface between the project team and the rest of the company.  The solver of problems, overcomer of obstacles.</p>
<p><strong>Architect</strong><br />
ATG Architect.  Responsible for application design and quality.  Provides ATG knowledge and guidance to the team throughout the entire project lifecycle.  Provides mentorship, documentation, and more.</p>
<p><strong>Business Analyst</strong><br />
Responsible for documenting the business requirements and involved in the process of translating the business requirements to technical requirements and test scripts.</p>
<p><strong>Tech Lead</strong><br />
Leader of the technical implementation team.  Responsible for code quality, task distribution, and mentorship.  Point person for reporting on development status</p>
<p><strong>Tech Team</strong><br />
Team of JSP and Java developers.  Responsible for the ATG implementation.</p>
<p><strong>Creative Lead</strong><br />
Leader of the creative team.  Point person for creative issues and direction.</p>
<p><strong>Creative Team</strong><br />
Team of designers, and front end (html/css) developers.</p>
<p><strong>Test Lead</strong><br />
Leader of the test team.  Point person for ensuring test plans are created, and reporting on test pass status.</p>
<p><strong>Test Team</strong><br />
Team of testers.</p>
<p>&#8212;- edit: added on 5/23/08 &#8212;&#8212;<br />
<strong>DBA</strong><br />
Database Administrator to manage the database instances, and review SQL and table structures.</p>
<p>What do you think?  What would you add or change?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalsanctuary.com/tech-blog/java/atg/project-roles-atg-development-practices.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Starting Assumptions &#8211; ATG Development Practices</title>
		<link>http://www.digitalsanctuary.com/tech-blog/java/atg/starting-assumptions-atg-development-practices.html</link>
		<comments>http://www.digitalsanctuary.com/tech-blog/java/atg/starting-assumptions-atg-development-practices.html#comments</comments>
		<pubDate>Wed, 21 May 2008 18:30:21 +0000</pubDate>
		<dc:creator>Devon</dc:creator>
				<category><![CDATA[ATG]]></category>
		<category><![CDATA[development practices]]></category>

		<guid isPermaLink="false">http://www.digitalsanctuary.com/tech-blog/?p=114</guid>
		<description><![CDATA[We need to start with some basic assumptions to guide our solution. Here is my initial list: The applications being built will be important commerce or personalization sites, but will not be the sort of critical applications like nuclear plant &#8230; <a href="http://www.digitalsanctuary.com/tech-blog/java/atg/starting-assumptions-atg-development-practices.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>We need to start with some basic assumptions to guide our solution.</p>
<p>Here is my initial list:</p>
<ol>
<li>The applications being built will be important commerce or personalization sites, but will not be the sort of critical applications like nuclear plant software or air traffic controlling programs which require massive testing and documentation</li>
<li>The team may be geographically distributed</li>
<li>Time, Budget, Functionality, and Quality are all important, but we recognize the inherent truth of the saying: &#8220;you can have it: fast, cheap, good. pick two.&#8221;</li>
<li>The application should be considered as being built for an external client.  This may be because you work as an implementor, or simply that the &#8220;client&#8221; is your company&#8217;s business team</li>
<li>You should be able to be proud of what you&#8217;ve build, the code, the look, all of it</li>
<li>You should be delivering something of value to the client, ideally something with measurable value</li>
<li>You need to be as flexible as you can regarding changes, without impacting the delivery quality of date</li>
<li>The process should be well documented, repeatable, etc&#8230;</li>
<li>Communication is king</li>
<li>We can always improve</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalsanctuary.com/tech-blog/java/atg/starting-assumptions-atg-development-practices.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ATG Development Practices</title>
		<link>http://www.digitalsanctuary.com/tech-blog/java/atg/atg-development-practices.html</link>
		<comments>http://www.digitalsanctuary.com/tech-blog/java/atg/atg-development-practices.html#comments</comments>
		<pubDate>Wed, 21 May 2008 01:36:59 +0000</pubDate>
		<dc:creator>Devon</dc:creator>
				<category><![CDATA[ATG]]></category>
		<category><![CDATA[development practices]]></category>

		<guid isPermaLink="false">http://www.digitalsanctuary.com/tech-blog/?p=112</guid>
		<description><![CDATA[In a series of blog postings, and hopefully with substantial input from the ATG community, I am going to try to define ATG development best practices. From how to run a development project, to coding standards, and more. I know &#8230; <a href="http://www.digitalsanctuary.com/tech-blog/java/atg/atg-development-practices.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In a series of blog postings, and hopefully with substantial input from the ATG community, I am going to try to define ATG development best practices.  From how to run a development project, to coding standards, and more.  I know it will be impossible to make a perfect set of practices for everyone, there is no one size fits all, but based on some basic assumptions, I will strive for a great starting point, instead of a perfect solution.</p>
<p>It will take time, but will be well worth it in the end.</p>
<p>This practice definition will be focused on delivering the highest quality ATG applications, on time, and on budget, while maximizing flexibility to accommodate the client’s changing needs.</p>
<p>More specifically the process needs to:</p>
<ul>
<li>Ensure there is a fixed baseline of requirements to build against</li>
<li>Allow for accurate estimates, resourcing, budgeting, and scheduling</li>
<li>Leverage ATG expertise at many steps of the process, including strategy, requirements gathering, and creative concepts in order to maximize the benefit of the platform and minimize development pain (defined as time/cost/stress/quality-impact)</li>
<li>Support a geographically diverse team</li>
<li>Define the steps, flow, entrance and exit criteria, and roles for the process</li>
<li>Minimize time waste</li>
<li>Maximize communication and documentation</li>
<li>Be supported by a set of tools and practices to effectively enable the process</li>
<li>Deliver high quality (low defect) applications, on time and on budget</li>
</ul>
<p>And here are the things I will try to address:</p>
<ul>
<li>Project Roles</li>
<li>Project Process</li>
<li>Development Process</li>
<li>Change Request Process</li>
<li>Toolset to Support the Processes</li>
<li>Hardware, Environments, Software</li>
<li>Coding Standards and Best Practices</li>
<li>Bug Severity Guidelines</li>
<li>Test Phase Exit Criteria</li>
<li>Source Code Tagging and Branching Strategy and Naming Conventions</li>
<li>Versioning and Build Number Conventions and Tracking</li>
<li>Project Naming Conventions</li>
<li>Documentation Templates and Conventions</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalsanctuary.com/tech-blog/java/atg/atg-development-practices.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 1/27 queries in 0.006 seconds using disk: basic
Object Caching 473/524 objects using disk: basic

Served from: www.digitalsanctuary.com @ 2012-02-08 04:32:18 -->
