<?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; Unique to Producteering</title>
	<atom:link href="http://producteering.org/category/unique-to-producteering/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>Distributed R&amp;D: Beyond just Cost Benefits (Aspire Panel Discussion)</title>
		<link>http://producteering.org/2010/03/02/distributed-rd-beyond-just-cost-benefits-aspire-panel-discussion/</link>
		<comments>http://producteering.org/2010/03/02/distributed-rd-beyond-just-cost-benefits-aspire-panel-discussion/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 12:10:34 +0000</pubDate>
		<dc:creator>Ganesh Rajendran</dc:creator>
				<category><![CDATA[Best practices]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Aspire Systems]]></category>
		<category><![CDATA[Beyond Cost Benefits]]></category>
		<category><![CDATA[Cybit]]></category>
		<category><![CDATA[Derek Waugh]]></category>
		<category><![CDATA[Distributed R&D]]></category>
		<category><![CDATA[Globalization]]></category>
		<category><![CDATA[Gowri Subramanian]]></category>
		<category><![CDATA[ISV]]></category>
		<category><![CDATA[NCR]]></category>
		<category><![CDATA[offshore team]]></category>
		<category><![CDATA[packaged software vendors]]></category>
		<category><![CDATA[Pari Natarajan]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Steve Jones]]></category>
		<category><![CDATA[Zinnov]]></category>

		<guid isPermaLink="false">http://producteering.org/?p=292</guid>
		<description><![CDATA[The impact of distributed R&#38;D on software companies/teams
How do you leverage software/product engineering expertise of global players?
Challenges in outsourcing and how to overcome them?
Globalization - myths and realities
Best practices pertaining to globalization &#38; distributed development]]></description>
			<content:encoded><![CDATA[<p style="text-align: center">Hear from experienced practitioners who have set up offshore teams and worked with distributed teams spread across UK, India and other countries.</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<div style="text-align: center"><img src="http://www.aspiresys.com/images/events/pari-natarajan.jpg" alt="Pari Natarajan 			  " width="99" height="116" /></div>
</td>
<td width="4%"></td>
<td>
<div style="text-align: center"><img src="http://www.aspiresys.com/images/events/derek-waugh.jpg" alt="Derek Waugh" width="99" height="116" /></div>
</td>
<td width="4%"></td>
<td>
<div style="text-align: center"><img src="http://www.aspiresys.com/images/events/steve-jones.jpg" alt="Steve Jones" width="99" height="116" /></div>
</td>
<td width="4%"></td>
<td>
<div style="text-align: center"><img src="http://www.aspiresys.com/images/events/gowri_mgmt.jpg" alt="Gowri Subramanian" width="99" height="116" /></div>
</td>
</tr>
<tr style="text-align: center">
<td>
<div style="text-align: center"><strong>Moderator</strong></div>
</td>
<td></td>
<td>
<div style="text-align: center"><strong>Panelist</strong></div>
</td>
<td><strong><br />
</strong></td>
<td height="20">
<div><strong>Panelist</strong></div>
</td>
<td></td>
<td>
<div><strong>Panelist</strong></div>
</td>
</tr>
<tr style="text-align: center">
<td>
<div><strong>Pari Natarajan</strong></div>
</td>
<td></td>
<td>
<div><strong>Derek Waugh</strong></div>
</td>
<td><strong><br />
</strong></td>
<td>
<div><strong>Steve Jones</strong></div>
</td>
<td></td>
<td>
<div style="text-align: center"><strong>Gowri Subramanian</strong></div>
</td>
</tr>
<tr style="text-align: center">
<td>
<div style="text-align: center">CEO and Co-founder, Zinnov  Consulting</div>
</td>
<td></td>
<td>
<div>Director &#8211; Software Engineering, NCR</div>
</td>
<td></td>
<td>
<div>Technology Director, Cybit</div>
</td>
<td></td>
<td>
<div>Co-founder &amp; CEO, Aspire Systems</div>
</td>
</tr>
</tbody>
</table>
<p style="text-align: center">
<p style="text-align: center"><strong>Date:</strong> Tuesday, March 9, 2010<strong> </strong></p>
<p style="text-align: center"><strong>Time:</strong> 11 AM GMT</p>
<p style="text-align: center"><a href="https://www1.gotomeeting.com/register/363871032" target="_blank"><img src="http://www.aspiresys.com/web_inv_img/register.jpg" border="0" alt="Register" width="138" height="27" /></a></p>
<p style="text-align: center"><em>(Registration is Free)</em></p>
<p>Over the last several years, many packaged software vendors/ software providers have outsourced their development needs with cost-cutting in mind. However, that’s no longer the case. While having global R&amp;D delivery capabilities are important, there’s more to it that just cost advantages.</p>
<p>Today, from architecture and design to development and support, offshore R&amp;D teams are working hand-in-hand with their onsite counterparts to deliver innovative software at a faster pace and high quality. Global teams are now helping companies stay ahead of the curve, innovate and grow – and those who don’t utilize their capabilities are likely to be the ones left behind.</p>
<p>But not everyone reaps the benefits of globalization equally. So what are the factors that can help you leverage distributed R&amp;D?</p>
<p>Join Aspire Systems for a Panel discussion on <strong>“Distributed R&amp;D: Beyond just Cost Benefits”</strong>.  Some of the themes discussed will be:</p>
<ul>
<li>The impact of distributed R&amp;D on software companies/teams</li>
<li>How do you leverage software/product engineering expertise of global players?</li>
<li>Challenges in outsourcing and how to overcome them?</li>
<li> Globalization &#8211; myths and realities</li>
<li>Best practices pertaining to globalization &amp; distributed development</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://producteering.org/2010/03/02/distributed-rd-beyond-just-cost-benefits-aspire-panel-discussion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>&#8220;Building Software Solutions using Web 2.0 Technologies&#8221; &#8211; Webinar</title>
		<link>http://producteering.org/2009/10/27/panel-webinar-building-software-products-using-web-20-technologies/</link>
		<comments>http://producteering.org/2009/10/27/panel-webinar-building-software-products-using-web-20-technologies/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 09:23:50 +0000</pubDate>
		<dc:creator>Rajalakshmi</dc:creator>
				<category><![CDATA[Consumer internet]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Webinar]]></category>
		<category><![CDATA[Software development]]></category>

		<guid isPermaLink="false">http://producteering.org/?p=215</guid>
		<description><![CDATA[Successful software vendors have always built products with a user-centric mindset. Traditionally, meeting the functional requirements of end-users would generally be adequate for a product&#8217;s success. However, in today&#8217;s Web 2.0 paradigm, it has become imperative for software vendors to design solutions that empower users in addition to addressing the basic functional needs. Hence, software [...]]]></description>
			<content:encoded><![CDATA[<p>Successful software vendors have always built products with a user-centric mindset. Traditionally, meeting the functional requirements of end-users would generally be adequate for a product&#8217;s success. However, in today&#8217;s Web 2.0 paradigm, it has become imperative for software vendors to design solutions that empower users in addition to addressing the basic functional needs. Hence, software vendors now build solutions that are more intuitive and allow users to access what they want instantly and at minimal number of clicks.</p>
<p>Aspire together with our customer, <a href="http://www.ethics-lx.com" target="_blank">Biz-LX&trade;</a> is organizing an informative webinar where we discuss the journey of building a software solution using Web 2.0 tools such as RIA and mashups, and demonstrate the benefits of such an exercise with a real-time case study.</p>
<p>In this webinar you&rsquo;ll learn:</p>
<p>- Techniques used to design software solutions to allow better usability<br />
- How to evaluate and select Web 2.0 techologies suitable for your software?<br />
- The business benefits and implications of applying Web 2.0 designs to your software solution</p>
<p><strong>Date: Thursday, Nov 19, 2009<br />
Time: 11:00 AM ET/04:00 PM BST/ 09:30 PM IST</strong></p>
<p>Regsitration is FREE!</p>
<p>Click here to register:</p>
<p><a href="https://www1.gotomeeting.com/register/587477833">https://www1.gotomeeting.com/register/587477833</a></p>
<p><strong>Panelists:</strong></p>
<p><strong>Dave Strite</strong><br />
Chief Information Officer, <a href="http://www.ethics-lx.com" target="_blank">Biz-LX&trade;</a></p>
<p><strong>Elango Kanakaraji</strong><br />
Head &#8211; Web 2.0 Specialization, <a href="http://www.aspiresys.com" target="_blank">Aspire Systems</a></p>
]]></content:encoded>
			<wfw:commentRss>http://producteering.org/2009/10/27/panel-webinar-building-software-products-using-web-20-technologies/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Interview with John Moore on &#8220;Engineering challenges &amp; skills needed for technology teams&#8221;</title>
		<link>http://producteering.org/2009/08/28/interview-with-john-moore-of-swimfish-on-%e2%80%9cengineering-challenges-skills-needed-for-technology-teams%e2%80%9d/</link>
		<comments>http://producteering.org/2009/08/28/interview-with-john-moore-of-swimfish-on-%e2%80%9cengineering-challenges-skills-needed-for-technology-teams%e2%80%9d/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 07:00:50 +0000</pubDate>
		<dc:creator>Selina</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Producteering Interviews]]></category>
		<category><![CDATA[Scalability]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[bootstrapping]]></category>
		<category><![CDATA[Building engineering teams]]></category>
		<category><![CDATA[engineering skills]]></category>
		<category><![CDATA[enterprise 2.0]]></category>

		<guid isPermaLink="false">http://producteering.org/?p=195</guid>
		<description><![CDATA[John Moore, SVP Engineering and Chief Technology Officer of Swimfish Collaborative Technologies, a provider of business solutions and CRM, agreed to do an interview with us recently. John is a well known figure in technology and CRM circles.  For the last decade he has worked as a senior engineering manager for SaaS applications built [...]]]></description>
			<content:encoded><![CDATA[<p><strong>John Moore, SVP</strong> <strong>Engineering and Chief Technology Officer</strong> of <a href="http://www.swimfish.com/" target="_blank">Swimfish Collaborative Technologies</a>, a provider of business solutions and CRM, agreed to do an interview with us recently. John is a well known figure in technology and CRM circles.  For the last decade he has worked as a senior engineering manager for SaaS applications built upon the Microsoft technology stack. His background as a hands-on developer combined with strong QA experience has enabled him to consistently deliver high quality software on-time.</p>
<p>Here are some excerpts of the interview:</p>
<p><strong>In the recent past, you&#8217;ve built engineering teams for 2 startup SaaS companies &#8211; what do you look for when building these teams and what were the major challenges you&#8217;ve faced?</strong></p>
<p><strong>John:</strong>  I have been very fortunate in my career to have worked with a lot of talented people.  Early in my career I worked at Lotus Development on products like 1-2-3 and Lotus Notes and was able to learn a lot about how great teams are put together and, equally important, how energy, excitement, and motivation is maintained while working on projects.</p>
<p>Putting together a great team in any company starts with having a clear understanding of your goals, looking out from 3 &#8211; 24 months. From this understanding you build an understanding of your needs, enough to recognize the skills required.  From an individual perspective, the keys are character and skills.  The key attributes that I look for include:</p>
<ul>
<li>An expert understanding of the skills required for the job. If I need a C# developer with 5 years of experience and knowledge of MVC I expect to hire people with those skills.</li>
<li>I look for past examples of flexibility in their job roles. In startups you will be challenged to fill many roles, not just the one you were originally hired for.  I love these challenges; you learn a lot and become a much more rounded individual.  However, not everyone thrives under these conditions.</li>
<li>I look for ethics and honesty. I want to work with people who can be honest about their failures, their shortcomings.  When I ask people if they agree with a course of action I expect honesty.  I will never know all the answers and I want people who are unafraid to speak up for the betterment of the team.</li>
</ul>
<p>The most difficult thing in a startup environment is to bring enough attention to team and personnel development. I preach the importance of these things, I believe in these things, and I do better than many people I know.  However, I find it very difficult to meet my own personal standards on this front.  The challenges are varied, ranging from lack of money for training, lack of time for focusing on individual goals.  At the end of the day this is an area where I know I want to focus more energy.</p>
<p><strong>Is software usability a true differentiator when it comes to enterprise products? </strong></p>
<p><strong>John:</strong>  Yes, and no. Many enterprise products are more difficult to use than they should be.  Businesses will often have usability as a single item on a long checklist of features, and will sacrifice it over some other critical features.  As some Enterprise products are commoditized, however, you see a stronger emphasis on usability arising, as it becomes more important when product pricing brace to the bottom.</p>
<p><strong>From a software engineering perspective, what are the key things you would focus on to build highly scalable software?</strong></p>
<p><strong>John:</strong> As with everything else you need to understand the corporate goals and expected growth patterns for your software.  While there are no one-size-fits-all rule that I would provide I would always urge focusing on database scalability first.  It&#8217;s easier to scale web servers than database servers.  From a performance perspective, however, I often see the biggest performance bottlenecks arising client-side with an over-use, or incorrect use, of AJAX capabilities.  It is easy to bring the browser to a crawl if you are not diligent in your coding and testing efforts.</p>
<p><strong><a href="http://producteering.org/?page_id=196">Read the full interview</a><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://producteering.org/2009/08/28/interview-with-john-moore-of-swimfish-on-%e2%80%9cengineering-challenges-skills-needed-for-technology-teams%e2%80%9d/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<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>Test Engineering Practices</title>
		<link>http://producteering.org/2009/06/16/test-engineering-practices/</link>
		<comments>http://producteering.org/2009/06/16/test-engineering-practices/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 05:00:16 +0000</pubDate>
		<dc:creator>Vasu S</dc:creator>
				<category><![CDATA[Best practices]]></category>
		<category><![CDATA[Test engineering]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Application Testing]]></category>
		<category><![CDATA[Product testing]]></category>
		<category><![CDATA[Software testing]]></category>
		<category><![CDATA[testing practices]]></category>

		<guid isPermaLink="false">http://producteering.org/?p=175</guid>
		<description><![CDATA[&#8220;It is not enough to do your best; you must know what to do, and then do your best.&#8221; &#8211; Edwards Deming (American Quality Guru)
1. Identify the right set of Test Data for testing: 
Produce the right set of test data for testing. This test data (range of positive and negative values) will help you [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><em>&ldquo;It is not enough to do your best; you must know what to do, and then do your best.&rdquo; &ndash; </em><strong>Edwards Deming </strong>(American Quality Guru)</p>
<p>1. <strong>Identify the right set of Test Data for testing: </strong><br />
Produce the right set of test data for testing. This test data (range of positive and negative values) will help you uncover the issues quickly</p>
<p>2. <strong>Make the test environment identical to production environment: </strong><br />
Have a thorough understanding of the test environment and adhere exactly to the same hardware/software requirements replicating the production environment (like operating system, database, application server, browser, patches etc.)</p>
<p>3. <strong>Complete unit testing before you do integration / system testing: </strong><br />
Test your units first, and once you&#8217;re convinced that they have no errors, start integrating them slowly, testing in groups of two, then threes, etc., until you finish testing the entire suite</p>
<p>4. <strong>Focus on Numbers: </strong><br />
Always collect quantitative data during different phases of your testing.  During performance testing, get clear and exact numbers on the response time, throughput and resource utilization goals</p>
<p>5. <strong>Use 80/20 rule or Critical Path Testing when required: </strong><br />
Identify the right testcases that will provide maximum impact when testing the application. Identify specific test cases which will prove effective during multi-platform testing. For example, identify a page that has maximum controls and run them once in all the browsers</p>
<p>6. <strong>Test from the user&rsquo;s perspective: </strong><br />
Focus on testing the functionality from an end user perspective. Discuss with the product management team in understanding how they approach the application. Interact with product support teams to know customer support issues which may give you idea on issues. Focus on specific areas of testing based on application needs. For example, security is of paramount importance when testing credit card or banking applications.</p>
<p>7. <strong>Perform Root Cause Analysis for Defects: </strong><br />
Mark defect as unit, functional, integration, system, etc at the time of filing them to perform effective root cause analysis.  Perform root cause analysis periodically. Put in a prevention mechanism to avoid such defects in the future.</p>
<p>During execution, do not ignore failures. Troubleshooting the root cause of &lsquo;fail&rsquo; will lead you to the solution of the problem.</p>
<p>8. <strong>Write clear, descriptive and unambiguous bug reports: </strong><br />
Be precise while writing the defect summary and its description.  While writing the description, document it clearly and make sure that the developer does not misinterpret it. Attach snapshots wherever required</p>
]]></content:encoded>
			<wfw:commentRss>http://producteering.org/2009/06/16/test-engineering-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usability Engineering &#8211; Good practices</title>
		<link>http://producteering.org/2009/06/06/usability-engineering-%e2%80%93-good-practices/</link>
		<comments>http://producteering.org/2009/06/06/usability-engineering-%e2%80%93-good-practices/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 04:39:47 +0000</pubDate>
		<dc:creator>Santosh</dc:creator>
				<category><![CDATA[Best practices]]></category>
		<category><![CDATA[Unique to Producteering]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://producteering.org/?p=172</guid>
		<description><![CDATA[There is no perfect recipe for obtaining a fantastic product that users will love. However, when it comes to usability, some general guidelines and practices can be considered and followed. They are:
1. Know your end user and their working environment: Find out how the software you are developing will be used and get to know [...]]]></description>
			<content:encoded><![CDATA[<p>There is no perfect recipe for obtaining a fantastic product that users will love. However, when it comes to usability, some general guidelines and practices can be considered and followed. They are:</p>
<p>1. <strong>Know your end user and their working environment</strong>: Find out how the software you are developing will be used and get to know the end-user&rsquo;s working environment. Look at the product from the end user&rsquo;s perspective and use the existing product yourself to get a better idea. If possible, try to interact with the end user on certain functionalities to understand his/her expectations of the product.</p>
<p>2. <strong>Know the data that you are going to present to the user</strong>: Consider the volume of data, how the user is going to use the data (e.g. reports, graphs, etc.) while designing the user interface. This will impact the kind of controls you would choose to present the information and how the user would utilize the information.</p>
<p>3. <strong>Keep the UI simple</strong>: Show only useful and relevant information to the user. Do not clutter the screens with too many controls, buttons and other widgets. Think about how to present the information (data) in a powerful way to the user (e.g. grids, images, graphs etc.).</p>
<p>4. <strong>Navigation is important</strong>: Simpler the navigation &ndash; faster the task accomplishment. Provide clear entry and exit points for different functionalities. Ensure that the user can return to the appropriate location of the page from where the last action was taken. Make your navigation flexible to accommodate future requirements (e.g. tabs).</p>
<p>5. <strong>Be Consistent</strong>: Consistency in both appearance and behavior enables users to build an accurate mental model of the way the application works and accurate mental models lead to lower training and support costs. Use templates and a consistent approach while designing screens.</p>
<p>6. <strong>Create a match between your application and the real world</strong>: Always use words, phrases, and concepts that are familiar to the user. For example, say &ldquo;Patient Chart&rdquo; instead of &ldquo;Patient Database Record&rdquo;, show calendar icon for dates and so on.</p>
<p>7. <strong>Use standard GUI controls without altering their behavior</strong>: Users know how to use standard GUI controls. Do not change their behavior for your requirements. Avoid the usage of non-standard GUI controls, whenever possible. Position the controls for easy usage and group them properly.</p>
<p>8. <strong>Design for minimum inputs required from the user</strong>: Ensure that common inputs are required only once from the user. Do not ask the users to do more work for data entry, retrieval of information and operations. Spend more time on programming and minimize the user&rsquo;s work (wherever possible, pre-populate the data).</p>
<p>9. <strong>Keep your user informed</strong>: Always let the user know what is happening in your application by providing appropriate feedback. When the user performs an action, provide feedback to indicate that the system has received the input and is operating on it. For example, if the user is deleting critical data, ask for confirmation before deleting the data. Make sure that the error messages use simple language, states the problem and provide solutions so that the user can fix the problem.</p>
<p>10. <strong>Expect that the user makes mistakes</strong>: Ensure that no matter what the user does,they can&rsquo;t mess up. If they make a mistake, provide a mechanism to undo these mistakes and ensure that data is protected.</p>
<p>11. <strong>Consider technology impacts on UI design</strong>: Consider implementation techniques like Ajax, multiple image/content servers, personalization techniques to make the user experience pleasant.</p>
<p>12. <strong>Do time-study</strong>: User should be able to access important areas of the application with minimum amount of time and effort. Provide multiple paths to the user for all the important areas of the application. Do a time study on how the user would use your screens.</p>
<p>13. <strong>Do Hallway testing</strong>: Bring 2-3 people to play around your product and observe carefully, without commenting, while they are using it. Listen to their feedback &ndash; what they say and what they don&rsquo;t.</p>
]]></content:encoded>
			<wfw:commentRss>http://producteering.org/2009/06/06/usability-engineering-%e2%80%93-good-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enterprise Product Frameworks: A sure-fire way to reduce development time, cost &amp; bugs!</title>
		<link>http://producteering.org/2009/05/27/enterprise-product-frameworks-a-sure-fire-way-to-reduce-development-time-cost-bugs/</link>
		<comments>http://producteering.org/2009/05/27/enterprise-product-frameworks-a-sure-fire-way-to-reduce-development-time-cost-bugs/#comments</comments>
		<pubDate>Wed, 27 May 2009 09:47:00 +0000</pubDate>
		<dc:creator>Srivandya</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Unique to Producteering]]></category>
		<category><![CDATA[Webinar]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[increase developer productivity]]></category>
		<category><![CDATA[pre-built components]]></category>

		<guid isPermaLink="false">http://producteering.org/?p=163</guid>
		<description><![CDATA[ Building software is a complex effort &#8211; and when you need to be early-to-market with a quality product, it is even more challenging. Framework-driven development is an approach that attempts to increase developer productivity by making use of pre-built components and a solid underlying structure, which has already been tested.
 Frameworks help maintain developer [...]]]></description>
			<content:encoded><![CDATA[<p> Building software is a complex effort &ndash; and when you need to be early-to-market with a quality product, it is even more challenging. Framework-driven development is an approach that attempts to increase developer productivity by making use of pre-built components and a solid underlying structure, which has already been tested.</p>
<p> Frameworks help maintain developer discipline, limit unnecessary re-invention of the wheel and provide features that are almost universal requirements. Enterprise product frameworks go one step further by providing a pre-built product architecture layer with many cross-concerns and design decisions addressed. This helps development teams focus on solving business issues and reduces development time by more than 30%.</p>
<p>&ldquo;<strong>Propel</strong>&rdquo; is Aspire Systems&rsquo; enterprise product framework, that reduces the time and cost to develop a software product by about 30%. It comes with a pre-built, tested product architecture layer and can help developers focus on solving business issues, instead of worrying about basic design decisions and other cross-concerns.</p>
<p>Aspire Systems hosted a webinar on the importance of <strong>Enterprise Product Frameworks</strong> this month.</p>
<p>Some other key take-aways from this session:</p>
<p>â€¢ How product frameworks can be leveraged to your advantage.<br />
â€¢ The quality and other indirect benefits of using frameworks.<br />
â€¢ How Propel can reduce your development time and costs by 30%.<br />
â€¢ Real-life experience of Ajuba Solutions on how they use Propel to develop their solutions rapidly.</p>
<p>The recorded webinar can be viewed by registering <a href="https://www1.gotomeeting.com/register/176377233">here<br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://producteering.org/2009/05/27/enterprise-product-frameworks-a-sure-fire-way-to-reduce-development-time-cost-bugs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Good Design Practices</title>
		<link>http://producteering.org/2009/05/27/good-design-practices/</link>
		<comments>http://producteering.org/2009/05/27/good-design-practices/#comments</comments>
		<pubDate>Wed, 27 May 2009 07:31:28 +0000</pubDate>
		<dc:creator>vm_chellappan</dc:creator>
				<category><![CDATA[Best practices]]></category>
		<category><![CDATA[Unique to Producteering]]></category>

		<guid isPermaLink="false">http://producteering.org/?p=161</guid>
		<description><![CDATA[Many quality problems are a result of design and design adherence issues
1. Keep it simple: Simplify your design and do not complicate or over-engineer it. Frequently iterate through the design and look for avenues to improve.
2. Validate your assumptions: Design issues lead to major challenges in the product. So, if you have questions, get them [...]]]></description>
			<content:encoded><![CDATA[<p>Many quality problems are a result of design and design adherence issues</p>
<p>1. <strong>Keep it simple</strong>: Simplify your design and do not complicate or over-engineer it. Frequently iterate through the design and look for avenues to improve.<br />
2. <strong>Validate your assumptions</strong>: Design issues lead to major challenges in the product. So, if you have questions, get them clarified before you finalize the design.<br />
3. <strong>Pay undivided attention to NFRs</strong>: Along with your functional requirements, design your product to fulfill non-functional requirements. Consider NFRs at the beginning of the design.<br />
4. <strong>Use proven design patterns</strong>: Design patterns help in solving commonly encountered problems. Use design patterns wherever possible as it will help you uncover issues that can cause major problems during development.<br />
5. <strong>Design interfaces first</strong>: This will help you start thinking about integration right at the beginning and will help in reducing integration challenges in future. This will also set the boundary for coding.<br />
6. <strong>Build prototypes to validate your design</strong>: For every architectural and design step, build proof-of-concepts and prototypes to validate your design. This will help the design gain acceptance across the teams and also showcase how it works.<br />
7. <strong>Communicate your design effectively</strong>: It is as important to communicate as it is to do proper design. Always use UML to depict your design; use a tool for depicting your design.<br />
8. <strong>Go for reusable components and breakup the interface into logical pieces</strong>:  Reusable components help reduce development efforts and also increase the quality of the work &ndash; check with your architect though before picking up components. Choose components from reliable sources and make sure you comply with their licensing requirements (if any).<br />
9. <strong>Incorporate statistics in your design</strong>: Numbers are very important. Bring in mechanisms to get performance statistics, usage statistics etc. into your design. This will help you a lot while analyzing the overall performance of the product.</p>
]]></content:encoded>
			<wfw:commentRss>http://producteering.org/2009/05/27/good-design-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Good Coding Practices</title>
		<link>http://producteering.org/2009/05/14/good-coding-practices/</link>
		<comments>http://producteering.org/2009/05/14/good-coding-practices/#comments</comments>
		<pubDate>Thu, 14 May 2009 14:50:15 +0000</pubDate>
		<dc:creator>vm_chellappan</dc:creator>
				<category><![CDATA[Best practices]]></category>
		<category><![CDATA[Unique to Producteering]]></category>

		<guid isPermaLink="false">http://producteering.org/?p=158</guid>
		<description><![CDATA[Most of the effort in the software business goes into the maintenance of code that already exists &#8211; Wietse Venema
1. Adhere to your design: Follow your architecture and High Level Design. For example, always write code with respect to the layering architecture mentioned in your design. Know where to write each piece of code. 
2. [...]]]></description>
			<content:encoded><![CDATA[<p><em>Most of the effort in the software business goes into the maintenance of code that already exists &#8211; <strong>Wietse Venema</strong></em></p>
<p>1. <strong>Adhere to your design:</strong> Follow your architecture and High Level Design. For example, always write code with respect to the layering architecture mentioned in your design. Know where to write each piece of code. </p>
<p>2. <strong> Use reusable components:</strong> Wherever possible, design and implement reusable components. Also check for existing reusable components in your project and across other projects in your organization before developing a new one.</p>
<p>3. <strong>Prepare LLD before coding:</strong> Design the LLD for your piece of functionality/work in terms of standard UML based interaction or Sequence Diagram for validating the design. This will help you in bringing a thorough consideration of requirements for your design without expecting surprises at a later stage. This will also act as a validation gate before the implementation is started, capturing short comings (if any) in the design with respect to the requirements.</p>
<p>4. <strong>Don&#8217;t over-engineer your code:</strong> Follow a minimalist approach to meet business requirements; however, your software should be malleable enough to meet changes in requirements without major rework.</p>
<p>5. <strong>Adhere to coding conventions:</strong> Don&rsquo;t introduce any new conventions of your own in the code, always adhere to the standards defined in the project. If you have any concern with the prevailing standards then raise a flag to the appropriate person before following your own standards. This will help in having maintainable code.</p>
<p>6. <strong>Attempt 0 compiler warnings:</strong> Always try to make sure that your piece of work compiles with 0 compiler warnings; no matter how existing/old code has been written.</p>
<p>7. <strong>Centralized database control: </strong>Make sure that a single person manages the database related changes e.g. table, field level changes, stored procedures etc.  Wherever possible make sure that you bring SQL into your source code repository.</p>
]]></content:encoded>
			<wfw:commentRss>http://producteering.org/2009/05/14/good-coding-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>
