<?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/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>producteering.org &#187; hari rengarajan</title>
	<atom:link href="http://producteering.org/author/hari-rengarajan-2/feed/" rel="self" type="application/rss+xml" />
	<link>http://producteering.org</link>
	<description>Software &#38; technology trends</description>
	<lastBuildDate>Thu, 22 Apr 2010 06:34:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<!-- podcast_generator="podPress/8.8" -->
		<copyright>&#xA9; </copyright>
		<managingEditor>selina.dsouza@aspiresys.com ()</managingEditor>
		<webMaster>selina.dsouza@aspiresys.com()</webMaster>
		<category></category>
		<itunes:keywords></itunes:keywords>
		<itunes:subtitle></itunes:subtitle>
		<itunes:summary>Just another Localhost.localdomain weblog</itunes:summary>
		<itunes:author></itunes:author>
		<itunes:category text="Society &amp; Culture"/>
		<itunes:owner>
			<itunes:name></itunes:name>
			<itunes:email>selina.dsouza@aspiresys.com</itunes:email>
		</itunes:owner>
		<itunes:block>No</itunes:block>
		<itunes:explicit>no</itunes:explicit>
		<itunes:image href="http://producteering.org/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<image>
			<url>http://producteering.org/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
			<title>producteering.org</title>
			<link>http://producteering.org</link>
			<width>144</width>
			<height>144</height>
		</image>
		<item>
		<title>Performance Engineering &#8211; Best Practices</title>
		<link>http://producteering.org/2009/06/26/performance-engineering-%e2%80%93-best-practices/</link>
		<comments>http://producteering.org/2009/06/26/performance-engineering-%e2%80%93-best-practices/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 13:34:37 +0000</pubDate>
		<dc:creator>hari rengarajan</dc:creator>
				<category><![CDATA[Best practices]]></category>
		<category><![CDATA[Performance engineering]]></category>
		<category><![CDATA[Unique to Producteering]]></category>
		<category><![CDATA[Producteering]]></category>

		<guid isPermaLink="false">http://producteering.org/?p=177</guid>
		<description><![CDATA[1. Use caching wisely: Use caching without hesitation. But cache different data for different amounts of time, based on how huge it is, how long it remains unaltered and how frequently it is accessed. Choose the appropriate caching technology or mechanism.
2. Minimize server round trips: Minimize the number of hits to the server during an [...]]]></description>
			<content:encoded><![CDATA[<p>1. <strong>Use caching wisely</strong>: Use caching without hesitation. But cache different data for different amounts of time, based on how huge it is, how long it remains unaltered and how frequently it is accessed. Choose the appropriate caching technology or mechanism.</p>
<p>2. <strong>Minimize server round trips</strong>: Minimize the number of hits to the server during an operation. For instance, while loading data or executing a set of operations.</p>
<p>3. <strong>Use memory sparsely</strong>: While using memory-critical system resources, stick to &lsquo;Acquire Late Release Early&rsquo; principle. For example, opening web/DB connections and creating IO streams. Also determine the data required for the current page and current request and load only as much.</p>
<p>4. <strong>Use lazy/ asynchronous processing whenever possible</strong>: Always reduce the amount of workload for a single request by opting to delegate part of the work to a background process, by opting to make an external system&rsquo;s processing asynchronous or by doing the processing later.</p>
<p>5. <strong>Use remote invocations selectively</strong>: Remote invocations are very expensive and have great impact on performance. Hence use them as selectively as possible.</p>
<p>6. <strong>Profile your code frequently</strong>: Use performance testing tools like SQL profilers and code profilers to benchmark your product&rsquo;s performance. Also deploy some code analysis tool(s) in parallel, and make sure your code passes through all performance parameters in the project-specific checklist you have arrived at.</p>
<p>7. <strong>Audit performance</strong>: Monitor and track (log) performance-related data at chosen parts of the code consistently to monitor performance.</p>
<p>8. <strong>Benchmark your product for performance</strong>: Test your application periodically with large quantity of data and use appropriate tools to benchmark your application for performance.</p>
]]></content:encoded>
			<wfw:commentRss>http://producteering.org/2009/06/26/performance-engineering-%e2%80%93-best-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Good Engineering Practices</title>
		<link>http://producteering.org/2009/05/07/good-engineering-practices/</link>
		<comments>http://producteering.org/2009/05/07/good-engineering-practices/#comments</comments>
		<pubDate>Thu, 07 May 2009 15:03:06 +0000</pubDate>
		<dc:creator>hari rengarajan</dc:creator>
				<category><![CDATA[Best practices]]></category>
		<category><![CDATA[Unique to Producteering]]></category>
		<category><![CDATA[Add new tag]]></category>

		<guid isPermaLink="false">http://producteering.org/?p=157</guid>
		<description><![CDATA[As we continuously strive to become better product engineers at Aspire Systems, we have been identifying different sets of best practices for our technology teams to follow. While many of these practices may see quite generic, we believe that it sets the base &#8211; especially for new members in the team, and can be a [...]]]></description>
			<content:encoded><![CDATA[<p>As we continuously strive to become better <a href="http://www.aspiresys.com/about-us/about-us/producteering.html">product engineers</a> at <a href="http://www.aspiresys.com">Aspire Systems</a>, we have been identifying different sets of best practices for our technology teams to follow. While many of these practices may see quite generic, we believe that it sets the base &ndash; especially for new members in the team, and can be a useful checklist for the more experienced folks as well.</p>
<p>We&rsquo;ve defined good engineering practices, coding and design practices, performance and usability engineering practices and testing best practices. We&rsquo;ll post them up here one by one, starting with our take on good engineering practices.</p>
<p>Please feel free to let us know whether you agree or disagree with any of these &ndash; whether you think some of them aren&#8217;t really applicable in some cases &ndash; or if you have any additions/modifications to these lists. I look forward to hearing from you.</p>
<p>Our list of <strong>good Engineering Practices</strong> that will help you produce higher quality output:</p>
<p>1.<strong> Dig deep into requirements: </strong> Collaborate frequently with all stakeholders and do more prototyping to clarify requirements. Use the Pareto rule: spend 20% of the effort required to identify 80% of the requirements, without getting into elaborate ceremonies. The remaining requirements will automatically fall in place once you start the iteration(s). Postpone doing any development work until you are clear with the concept (while everyone understands that you should expect changes).</p>
<p>2. <strong>Write structured code:</strong>  Think how you will structure your code before you start writing.  Write your code in small pieces &ndash; multiple functions and methods.  Extract common functionality into methods and never duplicate code.  Always look for reusing existing methods.</p>
<p>3. <strong>Use code analysis tools:</strong>  Make sure that you have a source code analysis tool such as FxCOP, PMD, etc. integrated with your IDE.  This will help you do code analysis easily and also help you adhere to coding standards.</p>
<p>4. <strong>Self review your work:</strong>  Make sure you review all your work products.  Never release deliverables without reviews.  Generate a report from your defect tracking tool and do a root cause analysis on the bugs you have introduced.  This will help you continually improve.</p>
<p>5. <strong>Write automated unit tests:</strong>  Always write automated unit test cases as a part of your work.  Integrate them as a part of your automated builds.</p>
<p>6. <strong>Test early and often:</strong>  Testing your work is your responsibility.  In addition to testing on your machine, always move your code to a fresh environment and test again.  Never release your deliverables without testing.</p>
<p>7. <strong>Document your code well:</strong>  Make sure you add inline comments in your code.  All functions and methods should be adequately commented.  Provide extensive commenting for complex logic.  Generate code documentation with tools like nDoc, javadoc and review it. </p>
<p>8. <strong>Synchronize your code everyday:</strong>  Make sure you synchronize your code with the repository on a daily basis.  This will ensure that you have up-to-date source code from everyone and will reduce integration issues.</p>
<p>9. <strong>Communicate extensively:</strong>  Communicate every day with your team and manager on your progress and challenges.  Update your project management system on a daily basis (time sheet, project plan, task status, defect status, wiki, burn-down chart, etc.).</p>
]]></content:encoded>
			<wfw:commentRss>http://producteering.org/2009/05/07/good-engineering-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

