<?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>Learn Software Development &#187; Quality</title>
	<atom:link href="http://learnsoftwareprocesses.com/category/quality/feed/" rel="self" type="application/rss+xml" />
	<link>http://learnsoftwareprocesses.com</link>
	<description>All about the processes involved in software development</description>
	<lastBuildDate>Sun, 20 May 2012 19:17:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>What happens when your product is not stable close to release date ? &#8211; Part 1</title>
		<link>http://learnsoftwareprocesses.com/2012/05/07/what-happens-when-your-product-is-not-stable-close-to-release-date/</link>
		<comments>http://learnsoftwareprocesses.com/2012/05/07/what-happens-when-your-product-is-not-stable-close-to-release-date/#comments</comments>
		<pubDate>Mon, 07 May 2012 20:19:36 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Quality]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Release pressure]]></category>
		<category><![CDATA[Schedule]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software processes]]></category>
		<category><![CDATA[Software quality]]></category>
		<category><![CDATA[Software testing]]></category>
		<category><![CDATA[Test processes]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=1077</guid>
		<description><![CDATA[<p>This is probably one of the most controversial topics in software development. You have a software on which the company has dedicated an insane amount of effort on, the software contributes a significant percentage (upwards of 25%) of the revenue of the company and it is a well know software. This could be MS-Office, could [...]]]></description>
			<content:encoded><![CDATA[<p>This is probably one of the most controversial topics in software development. You have a software on which the company has dedicated an insane amount of effort on, the software contributes a significant percentage (upwards of 25%) of the revenue of the company and it is a well know software. This could be MS-Office, could be Photoshop, could be the latest release of Apple OS, or could be other similar software that are very well known. Now, these software have a known release date, and given the power and money riding on these software, it is extremely important that the software makes its release date. The problems if the date gets delayed are many: The company suffers at the hands of the market and analysts, its reputation takes a dip, revenue already slotted for the current quarter has to be scaled back, and somebody in the chain of management has to take a hit.<br />
However, what happens when you reach a scenario where the software is not yet fully ready ? There are still bugs in the software, not everything is fully stable, and quality teams are hesitant to release the software. In some cases, the apprehension of the teams are unfounded, and the software is good enough to release and earn accolades in the market. However, the difficulty comes when the software is not yet ready, when the apprehensions of the quality teams is correct. In such a case, if the software were to be released, things could get problematic for the company real quick. A release that has suspect quality gets pilloried real fast; with more social media and more active consumers, items such as reduced ratings on Amazon and a lot of comments of poor quality on Facebook / twitter can cause huge damage to the reputation of the company and will most certainly lead to forced removal of people in the company.<br />
So the challenge is to determine which is the current state. This is probably one of the most important decisions that the senior management team of the group has to decide, and it is a very hard decision. The chance of making a mistake in this area is incredible, and if there are obvious mistakes, then it is fairly career limiting for the people who did make the mistake. And you certainly don&#8217;t want to be the senior management person who released a product that was of bad quality, and at the same time you don&#8217;t want to be known as the person who was unable to take a realistic call of whether the product quality was good or bad. The previous sentence was just a confirmation about the difficult position that management is in when trying to evaluate the current position.</p>
<p>Read this book for some more advice in this area: Judgement Calls: Making Good Decisions in Difficult Situations &#8211; <iframe src="http://rcm.amazon.com/e/cm?t=learnsoftware-20&#038;o=1&#038;p=8&#038;l=as1&#038;asins=0671898833&#038;ref=qf_sp_asin_til&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p>
<p>In the next part (<a href="http://learnsoftwareprocesses.com/2012/05/08/what-happens-when-your-product-is-not-stable-close-to-release-date-part-2/">Part 2</a>), I will talk more about this decision, the factors that guide it, and what all to do ..</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://learnsoftwareprocesses.com/2012/05/07/what-happens-when-your-product-is-not-stable-close-to-release-date/' addthis:title='What happens when your product is not stable close to release date ? &#8211; Part 1 '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2012/05/07/what-happens-when-your-product-is-not-stable-close-to-release-date/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is the difference between static and dynamic testing?</title>
		<link>http://learnsoftwareprocesses.com/2012/02/20/what-is-the-difference-between-static-and-dynamic-testing/</link>
		<comments>http://learnsoftwareprocesses.com/2012/02/20/what-is-the-difference-between-static-and-dynamic-testing/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 18:28:47 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[QE]]></category>
		<category><![CDATA[Quality]]></category>
		<category><![CDATA[Terms]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Dynamic testing]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software processes]]></category>
		<category><![CDATA[Software quality]]></category>
		<category><![CDATA[Software testing]]></category>
		<category><![CDATA[Static testing]]></category>
		<category><![CDATA[Test processes]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=994</guid>
		<description><![CDATA[<p>Static testing and dynamic testing are one of the frequently discussed testing methodologies. Dynamic testing and static testing form two major and extremely important categories of software testing methodologies. Most of us are clear with the meaning of the terms “static” and “dynamic”. Keeping in mid the meaning of these terms, it is very easy [...]]]></description>
			<content:encoded><![CDATA[<p>Static testing and dynamic testing are one of the frequently discussed testing methodologies. Dynamic testing and static testing form two major and extremely important categories of software testing methodologies. Most of us are clear with the meaning of the terms “static” and “dynamic”. Keeping in mid the meaning of these terms, it is very easy to define the terms “static testing” and “dynamic testing”. Static testing and dynamic testing are also known as “static analysis” and “dynamic analysis” respectively. We shall describe these two terms simultaneously in the form of a list of differences between them. So while understanding these two methodologies you might as well as be able to compare them also.<br />
1. Static means stationary, not moving or not in use. So from the term itself we deduce the definition of the static testing i.e., static testing is a testing methodology which practically does not involves the software system or application during the testing process. The term “dynamic” means moving or in use. So for dynamic testing or analysis also we deduce that it is a type of testing which practically involves the software system or application in the testing process.<br />
2. Static testing is all about the static behavior of a software system or application whereas the dynamic testing is concerned about how the software system or application performs dynamically i.e., its dynamic behavior.  It usually involves testing of the reflexes of the system i.e., the way the software system responds or reacts towards the variables that are dynamic in nature.<br />
3. Static testing makes use of static variables i.e., the variables which are not suppose to change with time and thus are constant. The dynamic testing makes use of the dynamic variables which are not constant but change with the time along with the execution of the program. It is not necessary that the values should compulsorily change during the execution. The point here is that the dynamic variables have the tendency to get modified whereas the static variables do not possess this tendency or property.<br />
4. If one wants to perform a dynamic test for any program, he/ she need to compile the software, run it and work with it. Dynamic testing involves extensive work of inputting data values to the variables as well as the checking of the output and whether or not it is up to the expectations of the programmer. Like in every other testing methodology here also the actual program output is checked against the desired program output. At the end the Input and output data is checked for validation of the software. Many methodologies have been developed for dynamic testing. Few have been listed below:<br />
     	Unit tests<br />
     	System tests<br />
     	Integration tests and<br />
     	Acceptance test<br />
Dynamic testing involves a detailed workout. On the other hand, static testing is way too lenient when it comes to the testing efforts. It is not so extensive and is typically involved with the determination of the sanity of the code, document or algorithm. It is pretty much involved with the syntax checking of the program code and manual review of the documentation or the source code to find errors and bugs. This is the basic aim of static testing.<br />
5. Dynamic testing forms an extremely important part of the validation process in contrast to the static testing which forms a major part of the verification process.<br />
6. Functional test techniques or black box testing techniques as they are called, are what are employed by the Dynamic testing process. White box testing techniques or structural test techniques constitute the static testing. </p>
<table>
<tr>
<td>Introduction to Software Testing</td>
<td>Testing Computer Software, 2nd Edition</td>
<td>Software Testing Foundations</td>
</tr>
<tr>
<td><iframe src="http://rcm.amazon.com/e/cm?t=learnsoftware-20&#038;o=1&#038;p=8&#038;l=as1&#038;asins=0521880386&#038;ref=qf_sp_asin_til&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
<td><iframe src="http://rcm.amazon.com/e/cm?t=learnsoftware-20&#038;o=1&#038;p=8&#038;l=as1&#038;asins=0471358460&#038;ref=qf_sp_asin_til&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
<td><iframe src="http://rcm.amazon.com/e/cm?t=learnsoftware-20&#038;o=1&#038;p=8&#038;l=as1&#038;asins=1933952784&#038;ref=qf_sp_asin_til&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
</tr>
</table>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://learnsoftwareprocesses.com/2012/02/20/what-is-the-difference-between-static-and-dynamic-testing/' addthis:title='What is the difference between static and dynamic testing? '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2012/02/20/what-is-the-difference-between-static-and-dynamic-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Different types of software errors and handling them properly</title>
		<link>http://learnsoftwareprocesses.com/2012/02/14/different-types-of-software-errors-and-handling-them-properly/</link>
		<comments>http://learnsoftwareprocesses.com/2012/02/14/different-types-of-software-errors-and-handling-them-properly/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 18:58:14 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Bug]]></category>
		<category><![CDATA[Defect]]></category>
		<category><![CDATA[Problems]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[QE]]></category>
		<category><![CDATA[Quality]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Techniques]]></category>
		<category><![CDATA[Defect handling]]></category>
		<category><![CDATA[Defects]]></category>
		<category><![CDATA[Error handler]]></category>
		<category><![CDATA[Error handling]]></category>
		<category><![CDATA[Errors]]></category>
		<category><![CDATA[Software processes]]></category>
		<category><![CDATA[Software systems]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Test processes]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=981</guid>
		<description><![CDATA[<p>Errors are a major headache to software programmers, developers as well as testers. They cause the whole software system or application to falter, produce unexpected results and cause the software to behave abnormally. Some errors cause more harm while some cause less, some of them are easy to discover whereas some are hideous and cause [...]]]></description>
			<content:encoded><![CDATA[<p>Errors are a major headache to software programmers, developers as well as testers. They cause the whole software system or application to falter, produce unexpected results and cause the software to behave abnormally. Some errors cause more harm while some cause less, some of them are easy to discover whereas some are hideous and cause huge frustration to developers and testers. Some errors are as active and disruptive like a volcano and others are dormant. Every software system or application suffers from many errors, and it is now seen as impossible to remove all the errors from a software system.<br />
Therefore error handling becomes an important factor in deciding the success of a program. Error handling is the way a program is built to handle the errors that disturb its functioning.<br />
- The error handling procedure should be very strong and smart.<br />
- Error handling requires a lot decision making.<br />
- The error handling process, like other processes, is also a victim of defects and can sometimes not work properly.<br />
The main steps involved in an Error handling process are detection, anticipation and resolution of the errors that occur during the execution of the software program or application. Some applications even employ programs called “error handlers” developed specifically for handling the errors. A software system or application is said to have good error handling capabilities if it is able to recover from errors without causing the whole program to terminate, or if it is not able to handle that error, properly terminate the program without causing any data loss. Such forceful termination is nothing but an error handling mechanism.<br />
The basic factors causing the run time errors are invalid input data and adverse function parameters.<br />
Lack of memory is another defect causing factor.<br />
A Software application comprises of various small programs. These programs may conflict with each other during the run time.  Similarly web applications also experience errors due to electrical noise and malware or other undue pressure on the server.<br />
A software system or application can overcome these errors by its error handling process. Thus we can define the error handling defects as the defects that reduce the efficiency of the error handling process.<br />
On the initiation of the error handling process, the discrepancy between the expected behavior and actual behavior is identified. Whenever there is some discrepancy in the behavior of the program, a defect is created. The test script that was being executed at the time of encounter of the defect is tested. This process is called defect creation. After this, the discovered defect is verified i.e., whether or not the defect is valid. A severity level is assigned to the defect. This severity level indicates the impact and visibility of the defect on the program. The defect can cause the core functionality to go out of order or stop working. It can affect the operational environment. Such defects prevent the user from accessing the features and functionalities of the software system or application.<br />
Incorrect navigation links are also a defect.<br />
According to the level of severity of the encountered errors and the problems they can cause, they are assigned priorities. This process is defect prioritization. Several priority codes have been defined. For example, there are some defects that do not even allow the testing to take place. Defects causing such errors are given the highest priority. The defect is once again confirmed and this process is called defect confirmation. After the defect confirmation the defect is analyzed, the affected code is redesigned, developed and tested again for any shortcomings. This process following the defect confirmation is called defect resolution. The defects after being resolved are once again reviewed by the developer and certain test scripts are run to confirm that the defect has been resolved. After the verification the defect is closed.</p>
<table>
<tr>
<td>Lessons Learned in Software Testing</td>
<td>Software Testing: An ISTQB-ISEB Foundation Guide</td>
<td>Software Testing (2nd Edition)</td>
</tr>
<tr>
<td><iframe src="http://rcm.amazon.com/e/cm?t=learnsoftware-20&#038;o=1&#038;p=8&#038;l=as1&#038;asins=0471081124&#038;ref=qf_sp_asin_til&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
<td><iframe src="http://rcm.amazon.com/e/cm?t=learnsoftware-20&#038;o=1&#038;p=8&#038;l=as1&#038;asins=1906124760&#038;ref=qf_sp_asin_til&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
<td><iframe src="http://rcm.amazon.com/e/cm?t=learnsoftware-20&#038;o=1&#038;p=8&#038;l=as1&#038;asins=0672327988&#038;ref=qf_sp_asin_til&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
</tr>
</table>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://learnsoftwareprocesses.com/2012/02/14/different-types-of-software-errors-and-handling-them-properly/' addthis:title='Different types of software errors and handling them properly '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2012/02/14/different-types-of-software-errors-and-handling-them-properly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Delivering to multiple clients &#8211; need to deliver through the Sprint rather than one deliverable at the end</title>
		<link>http://learnsoftwareprocesses.com/2010/10/03/delivering-to-multiple-clients-need-to-deliver-through-the-sprint-rather-than-one-deliverable-at-the-end/</link>
		<comments>http://learnsoftwareprocesses.com/2010/10/03/delivering-to-multiple-clients-need-to-deliver-through-the-sprint-rather-than-one-deliverable-at-the-end/#comments</comments>
		<pubDate>Sun, 03 Oct 2010 18:43:32 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Product Owner]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[QE]]></category>
		<category><![CDATA[Quality]]></category>
		<category><![CDATA[Release]]></category>
		<category><![CDATA[Schedule]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[ScrumMaster]]></category>
		<category><![CDATA[Sprint]]></category>
		<category><![CDATA[Sprint Backlog]]></category>
		<category><![CDATA[Expectation]]></category>
		<category><![CDATA[High level of quality]]></category>
		<category><![CDATA[Interim Delivery]]></category>
		<category><![CDATA[Multiple Clients]]></category>
		<category><![CDATA[Sprint length]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=673</guid>
		<description><![CDATA[<p>We all learn things as we see stuff happening, and one of the items that I learnt was about a team that had changed to using the Scrum model of development, and was learning how to deal with multiple clients. Consider the case of large software companies such as Microsoft, Apple, and many others, where [...]]]></description>
			<content:encoded><![CDATA[<p>We all learn things as we see stuff happening, and one of the items that I learnt was about a team that had changed to using the Scrum model of development, and was learning how to deal with multiple clients. Consider the case of large software companies such as Microsoft, Apple, and many others, where there are many different groups working on different products. However, the products that they are working on have many common needs, such as code for showing UI, code for handling calls to various media items such as disk drives, CD devices, cameras, etc. It does not make sense for separate teams to write their own code for such handling, and hence it is far more feasible for there to be a single team that works on developing these technologies, and the output of these common teams is used by the various product teams.<br />
One of the biggest problems faced by such common teams (or we can call them technology teams) is their need to match their output schedule to the schedules of the various product teams, and this is something that remains in flux. Different products have their own schedules (with these typically not being very flexible, since there could be the need to meet a specific timeline such as having a new version of the product ready for Christmas, or to be available to meet the perception of financial analysts, or to thwart the release of a competitive product, and so on). So, the common situation is that when the technology team starts interactions with the various product teams (and we can call them the client teams), they are presented with schedules that do not seem to easily integrate with each other. One team may want a specific release near the end of a month, while for another group, there is a &#8216;drop dead&#8217; need to have specific features in by the middle of the month. Reconciling them is easy if one of the teams is much stronger in terms of influence, since then the schedule will be driven by the more powerful team. However, when this is not the case, then the release timelines can get difficult.<br />
There was one such team that was run by a colleague of mine. His team used to work on the traditional waterfall, and that was a disaster zone since they had to forever be ready to release for some team or the other. After much consultation, the team decided that a Scrum model would work better, especially since they could time the length of their Sprints, and have software available in a fairly good state at the end of every Sprint. So, they worked out a Sprint schedule whereby they worked out a Product Owner, and all requests needed to go through the Product Owner, and the time period of every Sprint was 4 weeks.<br />
However, by the start of the second Sprint itself, it became clear that 4 weeks was just not making it. They had expectations from client teams that would just not work based on a release every 4 weeks (for example, there was a team that was very near release, and needed quick support for bug fixes &#8211; so they needed a turnaround time of a week for getting a new release that fixed bugs; the monthly cycle would just not work for them).<br />
The technology team did an evaluation, and really did not want to move away from the 4 week sprint cycle (they felt that they were not mature enough in Scrum to try and handle a Sprint cycle of 1-2 weeks, and wanted to ensure that their team got a month to work and release features). Eventually, they came out with a solution that seemed complicated, but that seemed to work. They would still work on a 4 week Sprint cycle, but added some additional tasks to the Sprint backlog for coordinating a weekly release. This required some dedicated coordination from the ScrumMaster and some team members and went through some additional challenges, but after around a month, they were able to do this in a way that met the needs of the client teams. The team would ensure that when tasks were added for the Sprint backlog, there was an effort to time the expected output of the tasks, and then testing was added so that at the end of every week, a release was possible with a high level of quality. One could call this as saying that they had moved to a Sprint cycle of 1 week, but this was not true, specifically when it came to planning for the Sprint (that was done one a monthly basis). </p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://learnsoftwareprocesses.com/2010/10/03/delivering-to-multiple-clients-need-to-deliver-through-the-sprint-rather-than-one-deliverable-at-the-end/' addthis:title='Delivering to multiple clients &#8211; need to deliver through the Sprint rather than one deliverable at the end '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2010/10/03/delivering-to-multiple-clients-need-to-deliver-through-the-sprint-rather-than-one-deliverable-at-the-end/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Engineering Practices Not Taken Care of by Scrum – Some details</title>
		<link>http://learnsoftwareprocesses.com/2010/08/31/engineering-practices-not-taken-care-of-by-scrum-%e2%80%93-some-details/</link>
		<comments>http://learnsoftwareprocesses.com/2010/08/31/engineering-practices-not-taken-care-of-by-scrum-%e2%80%93-some-details/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 19:07:46 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Issues]]></category>
		<category><![CDATA[Pitfalls]]></category>
		<category><![CDATA[Problems]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Product Owner]]></category>
		<category><![CDATA[Quality]]></category>
		<category><![CDATA[Relationships]]></category>
		<category><![CDATA[Scope]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Engineering Methods]]></category>
		<category><![CDATA[People]]></category>
		<category><![CDATA[Processes]]></category>
		<category><![CDATA[Team]]></category>
		<category><![CDATA[Velocity]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=661</guid>
		<description><![CDATA[<p>Scrum never talks about engineering practices which is a good thing but this sometimes lands teams into trouble. The teams not only adopt the Scrum practices but also the principles which makes their progress sluggish and results in the code base being in a mess. This is a situation which is present in most of [...]]]></description>
			<content:encoded><![CDATA[<p>Scrum never talks about engineering practices which is a good thing but this sometimes lands teams into trouble. The teams not only adopt the Scrum practices but also the principles which makes their progress sluggish and results in the code base being in a mess. This is a situation which is present in most of the cases where a failure has happened and the teams state that they have been implementing Scrum. Given that it is far easier to blame a process rather than do the necessary hard introspection, teams blame Scrum about not being able to provide engineering practices but they miss the entire point; Scrum is not about engineering practices, it’s about management. Engineering practices are whole and sole responsibility of the teams. Scrum only creates organized teams. They organize themselves, they organize their tools and they organize their engineering practices, and Scrum then opens up the entire process in terms of more information that teams have to learn to handle, and use to improve the way that they do things.<br />
Consider some examples: The definition of Done (DoD) is defined by the development team. The criteria for done can be different for different teams; some teams might consider a piece done once the code has been reviewed others may consider is done only then functional tests are carried out and still others may call it done when the documentation is also done. It becomes necessary to keep an optimal level of done so that technical debt does not come into picture too much. And what is &#8216;technical debt&#8217; ? Well, the concept of technical debt states that while adding a piece of functionality, two different approaches can be used. The first one is doing a quick job and the other one is a clean design. The quick design would mostly be messy, and one of the bigger problems is that making further changes become harder in future. So doing things in a quick and dirty way, results in technical debt which in turn requires extra effort to be put when future development is done. Doing a quick job is useful when you need to meet a deadline and can afford the extra effort later. However, you need to be sure that this is the approach you want to take, and not be surprised at the extra effort needed to be put in later.<br />
The main difference between classical approach (Waterfall, etc) and scrum approach of development is that in scrum developers have more freedom to define level of done and amount of work to be done. They decide on the User stories to work in each of the sprint (through the estimation, although the priority comes from the Product Owner). Developers who do not use professional practices fail; but they fail independently of the processes used; blaming the processes of Scrum is convenient, but some inspection by external parties can easily reveal problems in the way that they do things.<br />
There is sometimes a talk about too much quality being pumped into the product. Sometimes it may be a cause of concern for the owner if the team takes too much time for quality. The concept of iron triangle comes into picture here. This concepts states that Scope (features, functionalities etc.) , Resources (cost) and Schedule (time) can be considered to be three vertices of a triangle and Quality is the area enclosed by this triangle. Different groups have different priorities: users want more scope, senior management wants cut in time, financial team wants cut in budget and development team wants more quality. The end aim is to strike a balance into all the four entities. Scrum sets resources and time and lets developers decide the scope. Speed is scope/time and it’s a measure of output. If the product owner wants a higher velocity then he must work towards removing impediments; but dropping of engineering practices is not a solution. Compromise in quality is a slippery slope best avoided, and can result in so many problems later that any benefits from reducing quality are to be avoided. Consider advising a stuntman to drop safety equipment; he will never and so should be the case with developers (and even more so with the people responsible for the quality of the features and the product). </p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://learnsoftwareprocesses.com/2010/08/31/engineering-practices-not-taken-care-of-by-scrum-%e2%80%93-some-details/' addthis:title='Engineering Practices Not Taken Care of by Scrum – Some details '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2010/08/31/engineering-practices-not-taken-care-of-by-scrum-%e2%80%93-some-details/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

