<?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>Danilo Gurovich &#187; Dev process</title>
	<atom:link href="http://gurovich.com/site/category/enterprise-development/dev-processes/feed/" rel="self" type="application/rss+xml" />
	<link>http://gurovich.com/site</link>
	<description>Strategic eCommerce Technology and Architecture</description>
	<lastBuildDate>Mon, 25 Sep 2023 14:32:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>The Dinosaur Feed Pen</title>
		<link>http://gurovich.com/site/2011/07/19/the-dinosaur-feed-pen/</link>
		<comments>http://gurovich.com/site/2011/07/19/the-dinosaur-feed-pen/#comments</comments>
		<pubDate>Tue, 19 Jul 2011 22:50:31 +0000</pubDate>
		<dc:creator>Danilo Gurovich</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Dev process]]></category>
		<category><![CDATA[Enterprise Development]]></category>
		<category><![CDATA[development environment]]></category>
		<category><![CDATA[dinosaur feed pen]]></category>
		<category><![CDATA[facebook environment]]></category>
		<category><![CDATA[google environment]]></category>
		<category><![CDATA[hate cubicles]]></category>
		<category><![CDATA[innovative office]]></category>
		<category><![CDATA[no cubicles]]></category>

		<guid isPermaLink="false">http://gurovich.com/site/?p=1340</guid>
		<description><![CDATA[I&#8217;ve just spent more than a year working in a development group. We sit around a big oval table and work. We meet there, write code there, prepare presentations there, eat lunch there. There&#8217;s no &#8220;head&#8221; of the table; no &#8220;kids table&#8221;. It&#8217;s an island, and everyone&#8217;s on it. We&#8217;re all equals, peers and have [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">I&#8217;ve just spent more than a year working in a development group. We sit around a big oval table and work. We meet there, write code there, prepare presentations there, eat lunch there. There&#8217;s no &#8220;head&#8221; of the table; no &#8220;kids table&#8221;. It&#8217;s an island, and everyone&#8217;s on it. We&#8217;re all equals, peers and have as much to learn as we have to teach. There&#8217;s no politics. No heroes. No wallflowers. There&#8217;s just &#8220;the work&#8221;. Oh, and it&#8217;s just plain fun. Every freekin&#8217; day.</p>
<p style="text-align: left;"><a href="http://gurovich.com/site/wp-content/uploads/2011/07/tron-28-office-cubicles.jpg"><img class="size-full wp-image-1345 alignnone" title="tron-28-office-cubicles" src="http://gurovich.com/site/wp-content/uploads/2011/07/tron-28-office-cubicles.jpg" alt="" width="475" height="220" /></a></p>
<p>Cubicles are the worst invention in the history of business. I&#8217;m still trying to think about how/why somebody thought this was a good idea. The only thing I can come up with is a secret society of Janitors, maintenance people and office furniture salespersons have formed some kind of plutocracy that actually control how we work.</p>
<p>Cubes make sense if you just take them in a two-dimensional plane. They are configurable in thousands of ways. You get a desk. You get a chair. You get some drawers and overhead storage. It locks. When you&#8217;re not there, you can put everything away and it&#8217;s all pretty and clean. And beige, or gray, or some kind of color that a tribe in Peru may call &#8220;Llama Vomit&#8221;. They were made for another place and time.</p>
<p>I have sat in cubes for the last 15 years except on a few wonderful occasions. They all pretty much looked the same. High walls that caused you to &#8220;gopher&#8221; when any kind of sound or personal communication was needed. Cramped and created so you face away from your door, so collaborating with anyone or even coming into another&#8217;s cube is an unexpected interruption at best, downright startling at worst. If you&#8217;ve been sentenced to a cube, how many of you have &#8220;rear view mirrors&#8221; or your monitor is positioned in such a way as you can see shadows behind you?</p>
<p>Of course, if you&#8217;re some kind of &#8220;middle manager&#8221;, you might have one of the &#8220;bigger&#8221; cubes that have a &#8220;desk&#8221; that protrudes through the middle and allows others to sit at it facing you. You get to be the &#8220;boss&#8221;, because it&#8217;s &#8220;your&#8221; cube, &#8220;your&#8221; desk, and others are there to seek your patronage. Now think about it. You&#8217;re really not going to do any &#8220;serious&#8221; business and your superiors sitting in their offices are showing that they have given you no &#8220;real&#8221; power. If you raise your voice above a whisper, you&#8217;ll be heard by persons 20 feet away. Nothing important or sensitive can be discussed there, so a &#8220;meeting room&#8221; must be booked or squatted in. Worthless.</p>
<p>Cubes have fabric walls and fixed furniture. Want to do some design? Where do you put the whiteboards? How do you collaborate? There&#8217;s drawers everywhere, and cubes are designed to stick your monitor in the corner (designed when monitors were 17&#8243; wide and 20&#8243; deep, too) and anyone working with you at your desk will be constantly banging their knees in the crappy &#8220;guest&#8221; chair that he&#8217;s borrowed from the cube around the wall.</p>
<p>Then there&#8217;s the cube farm. Row upon row of cubes in a giant room. 6 feet high, 50-75 feet wide and 150 feet long. The rows have hastily-printed pieces of paper in fourteen-point type that tells you who &#8220;lives&#8221; down that row. It&#8217;s like some kind of weird Stalinist housing project gone horribly wrong.</p>
<p>But it&#8217;s really easy to keep &#8220;looking&#8221; clean (whether it&#8217;s actually &#8220;sanitary&#8221; is debatable). I&#8217;t easy for your boss to walk down the row and quickly see who&#8217;s there and if everyone&#8217;s working. Everyone has their place. Everyone knows their job. Everyone is pounding away, waiting for 5 o&#8217;clock or a meeting to come up on their dilapidated, ancient version of Outlook, or the biannual review.</p>
<p>It&#8217;s also a Petri Dish of the germs that kill a company.  People don&#8217;t collaborate. People have to book meeting rooms just to have any kind of communication, and that communication is delayed until the meeting room can be booked or until the &#8220;weekly&#8221; standing meeting because nobody actually talks or can collaborate in a free flowing environment. If someone has a question, they must get up, find the target person&#8217;s cube and interrupt whatever they are doing, simply because they have no idea if they are busy or not and have wasted time walking many yards across a room just to get a quick answer, and as soon as they &#8220;peek in&#8221;, the unwanted distraction has occurred. Politics and backstabbing occur in a cubicle environment. People &#8220;go back&#8221; to their cubes to stew, and only communicate by email or instant messenger. How many times have you read a message or mail and misread the intention of the sender? How often has a sender sent you an email and beat the thing to your cube so he/she can interrupt you anyway, just to ensure that you&#8217;ve been &#8220;papered&#8221;? How many times have you heard gossip wafting over your cube?</p>
<p>Cubes are STUPID-expensive and?inefficient. A single cubicle can cost upwards of $2000. Each cube takes up large amounts of empty space. It is expensive to move, very heavy and incredibly bulky to store. They have all the character of a minivan. An area that has 5 cubicles can support 10 persons sitting around a large, comfortable table with the best chairs, open lighting, a possible view out the window and&#8230; wait for it&#8230; face-to-face interaction!</p>
<p>What I&#8217;ve found out as I&#8217;ve sat around a table with 6 colleagues is:</p>
<ul>
<li>You can&#8217;t lie to anyone when you stare them in the face 8 hours a day, 200 days a year</li>
<li>Nobody gossips, ever</li>
<li>There is no disciplinary action &#8212; your peers keep you on the straight and narrow &#8212; you have to face your colleagues and pull your weight</li>
<li>If you have a question, you either ask the person you&#8217;re working with, or you wait until they have a free moment</li>
<li>Meetings start and end on time, and most of the time, nobody gets up. We schedule meetings not only by looking at calendars, we actually go around the room and make sure that the time is good for everyone.</li>
<li>We more often than not eat lunch together at our table</li>
<li>There&#8217;s no heroes, no chumps, no wallflowers and everyone carries their own weight</li>
<li>If there is a knowledge gap that needs to be filled, the group will find a solution through pair programming, mentoring or pointing out the best places to find the information</li>
<li>There&#8217;s just not a lot of paper, ever</li>
<li>People TALK instead of EMAIL; the amount of time I&#8217;ve spent reading my email has dropped dramatically. I don&#8217;t even leave my email program up in plain site, anticipating some communication.</li>
<li>The room is bigger &#8212; with no walls, the air flows freely around the room, light comes in from the windows and shadows are cast by human beings</li>
<li>There are no &#8220;cold cubes&#8221; or &#8220;hot cubes&#8221; because of ceiling vent positioning</li>
<li>We&#8217;re all happy to come to work. <em>Stupid-happy</em>. We all get along. We know things about our families and care about making sure that everyone is lifted to make the team, and the company a better place</li>
<li>It&#8217;s better to &#8220;run with the Buffalo&#8221; instead of standing in your own poop with like a <strong>steer</strong></li>
</ul>
<p>And the biggest thing I&#8217;ve learned? We innovate. We invent. We create great code because we&#8217;ve combined our best practices. There&#8217;s no real &#8220;leader&#8221;, no &#8220;tail end charlie&#8221;. We write code with few bugs.</p>
<h3 style="text-align: center;">We get things done.</h3>
<p>I&#8217;m doing the best work of my career. I have the best working relationships of my career. I have the best bosses in my career, I know exactly what is expected of me, have confidence in my place in my group, and feel empowered and sometimes humbled by the abilities of my colleagues. I feel respected and willingly give respect. I am happy.</p>
<p>The cube has become a <em>Dinosaur Feed Pen</em>. It&#8217;s long past it&#8217;s sell-by date in the modern corporation. In fact, it might be the single-largest factor in an unhappy and unproductive environment. Let me tell you, the happier your workers are, the better off you are. Would you like happy or sad people to build your car? How about unhappy airline mechanics? Do you want people that write the code, the intellectual capital of your eCommerce or IT department to feel like people are watching them all the time, or that they will be constantly interrupted, or wasting time to go somewhere to &#8220;get some air&#8221;? Companies face the necessity of cutting budgets and squeezing dimes to make a dollar. Simply sitting around a table with a great wireless connection, a projector, screen, places to put cards and some whiteboard space, will yield huge dividends.</p>
]]></content:encoded>
			<wfw:commentRss>http://gurovich.com/site/2011/07/19/the-dinosaur-feed-pen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Process and Situational Awareness for eCommerce Development</title>
		<link>http://gurovich.com/site/2010/03/23/process-and-situational-awareness-for-ecommerce-development/</link>
		<comments>http://gurovich.com/site/2010/03/23/process-and-situational-awareness-for-ecommerce-development/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 13:03:36 +0000</pubDate>
		<dc:creator>Danilo Gurovich</dc:creator>
				<category><![CDATA[Dev process]]></category>
		<category><![CDATA[Enterprise Development]]></category>
		<category><![CDATA[Business and Technology alignment]]></category>
		<category><![CDATA[Development Processes]]></category>
		<category><![CDATA[eCommerce Development Processes]]></category>
		<category><![CDATA[eCommerce Management]]></category>
		<category><![CDATA[Metrics and eCommerce]]></category>

		<guid isPermaLink="false">http://danilogurovich.wordpress.com/2007/06/12/process-and-situational-awareness-for-ecommerce-development/</guid>
		<description><![CDATA[Update from an article originally published by me in 2007 Alignment is everything For many years, managers in the software industry submitted budgets that were unrealistic to Business Unit managers that had no clue as to what to question, what to approve or where to cut. As business has grown up and increased its expectations [...]]]></description>
			<content:encoded><![CDATA[<p><sup><i>Update from an article originally published by me in 2007</i></sup></p>
<h2>Alignment is everything</h2>
<p>For many years, managers in the software industry submitted budgets that were unrealistic to Business Unit managers that had no clue as to what to question, what to approve or where to cut. As business has grown up and increased its expectations of IT departments, Development and Infrastructure has also been forced to mature and face the fact that they aren&#8217;t an &#8220;overhead&#8221; cost. This is especially true in eCommerce.</p>
<h2>The Best is the enemy of the Good</h2>
<p>I&#8217;ve never met an Engineer or Manager of Engineers that didn&#8217;t see an infrastructure project as vital to the organization&#8217;s ongoing health and stability. I&#8217;ve seen (and <em>been</em>) that Manager before. They&#8217;ve actually been wrong more than they&#8217;ve been right. The reason for this is the lack of a complete picture of the goals of the organization as a whole, the priorities for various Development/Infrastructure (DEV-INF) projects, and the fact that budgeting exists because <i>resources are finite</i>. Sometimes an eCommerce site can limp along for years on a code base that is far from the ideal architecturally, but it may cost far less to maintain and extend it than to upgrade it to the &#8220;Next Great Killer Platform&#8221; at the cost of revenue-driven projects.</p>
<h2>The Holistic view of a Budget</h2>
<p>While all projects will have some value, it&#8217;s important to prioritize projects in alignment with the overall organization&#8217;s strategy and objectives. There is no use in a complete re-architecture of the site when current demands of Marketing, Consumer Experience and other various Business Units cannot be met. The goal in eCommerce is simple. Keep the business growing, keep the site in &#8220;five nines&#8221;, and refine the user experience to increase conversion. DEV-INF budgets must play in this ballpark or, as a development leader, all credibility with Business Units will be lost; ultimately will leding to a breakdown in communications between Engineering and Business, which is a crisis in an eCommerce workplace.</p>
<h2>Metrics are the key</h2>
<p>Once projects are aligned with Corporate Objectives, it&#8217;s vital to show all cost drivers for these expenses. Many times the cost of ongoing maintenance is not factored in, but can be as much as 65% of an overall budget. This is also true for time budgeted for QE/QA. While the individual Engineer writing code may only write 250 lines that finally make it into production in a three-month long project, how many times he/she had to write it, how much time was eaten up managing and checking this code, and finally what documentation, knowledge transfer and future extendibility these 250 lines will have also affect costs. All these things must be taken into consideration.</p>
<p>Budgeting isn&#8217;t just all planning. Once the planning is complete, the spending begins. Vital in this aspect is accountability and assessment of performance. Hard, industry-standard metrics exist to gauge the performance of DEV-INF budget items. In eCommerce I&#8217;ve found many easily measured values:</p>
<ol>
<li>Actual vs. Proposed Development times.</li>
<li>Actual vs. Proposed Resources.</li>
<li>Pre-release bugs.</li>
<li>Post-release bugs.</li>
<li>Effects upon site stability and performance.</li>
<li>Did the Project &#8220;Do&#8221; what the owners said it would do?</li>
<li>Were the expectations of Business Units met, and are these stakeholders satisfied with the results?</li>
<li>Did any problems that come up get handled in appropriate manners?</li>
<li>Were in-place processes broken?</li>
</ol>
<h2>Approaches</h2>
<p>Approaches to DEV-INF budgeting should be aligned with the current culture and expectations of the Business. They must have significant buy-in by various business stakeholders. If business drivers have &#8220;skin in the game&#8221; as to line-items in a DEV-INF budget, this automatically give credibility to it and also act as a check to make sure that I&#8217;ve done my homework. Many successful organizations use the <i>Consolidated Projects Approach</i> to budgeting and allocation for DEV-INF projects with outstanding success. In a nutshell:</p>
<p>Consolidated Projects List basic points:</p>
<ul>
<li>IT budget planning process starts before the organization&#8217;s process.</li>
<li>IT managers submit summary project data for consolidation into a single spreadsheet</li>
<li>These projects are then sorted and prioritized by DEV-INF managers before submission to the overall business Prioritization Committee.</li>
<li>The Prioritization Committee decides how these projects are to be aligned, budgeted and implemented within the entire Organization&#8217;s overall Business needs and strategies.</li>
</ul>
<p>This approach provides Senior Executives with a complete picture of all proposed projects, their costs, and priority ranking; these units will have a &#8220;30,000 foot&#8221; picture to make a more informed decision. Total project requirements may now be viewed as a single picture to senior management; priorities become a decision factor. No single group can drive pet projects or non-revenue generating development without prioritization or fully understanding what the business impact or opportunity costs involved are.</p>
<p>This process may be extended with <i>Gate Checks</i> to assure relevance to the goals of the company as time changes. This is especially true with larger organizations that may be widely distributed.  Projects can often times have huge scope (ah &#8212; to de-scope, another topic!) and can take months of development time.? The needs of a business can change over this period, and any project that is underway should have enough flexibility to move with the times or the business stakeholders or group as a whole should have the gumption to kill or suspend development indefinitely or until such time as solid metrics warrant completion.</p>
]]></content:encoded>
			<wfw:commentRss>http://gurovich.com/site/2010/03/23/process-and-situational-awareness-for-ecommerce-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Overlapping Schedule Process for Maintenance and Enhancement of Complex Web Properties</title>
		<link>http://gurovich.com/site/2008/07/22/the-overlapping-schedule-process-for-maintenance-and-enhancement-of-complex-web-properties/</link>
		<comments>http://gurovich.com/site/2008/07/22/the-overlapping-schedule-process-for-maintenance-and-enhancement-of-complex-web-properties/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 02:09:48 +0000</pubDate>
		<dc:creator>Danilo Gurovich</dc:creator>
				<category><![CDATA[Dev process]]></category>
		<category><![CDATA[Enterprise Development]]></category>
		<category><![CDATA[Development Processes]]></category>
		<category><![CDATA[eCommerce Development Processes]]></category>
		<category><![CDATA[eCommerce Process]]></category>
		<category><![CDATA[JIRA]]></category>
		<category><![CDATA[Overlapping Schedule Model]]></category>
		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://danilogurovich.wordpress.com/?p=56</guid>
		<description><![CDATA[Building a Consistent, Predictable and Efficient Environment for Enterprise eCommerce Applications.   Predictable Schedules Create Outstanding Teams When many eCommerce shops first set up, there are usually a few developers wearing many hats; they have access to everything, develop within specific areas and channels, and check in code for deployment as it becomes ready. While [...]]]></description>
			<content:encoded><![CDATA[<p><em><span style="font-weight:normal;">Building a Consistent, Predictable and Efficient Environment for Enterprise eCommerce Applications.</span></em><br />
 </p>
<h2>Predictable Schedules Create Outstanding Teams</h2>
<p>When many eCommerce shops first set up, there are usually a few developers wearing many hats; they have access to everything, develop within specific areas and channels, and check in code for deployment as it becomes ready.  While this type of development will work as a business starts, it will soon become unmanageable and will result undesired consequences as changes are not integrated, and business priorities are not addressed, or worse.</p>
<p>Predictability and easily enforced processes set all stakeholders within an application free to do their jobs and collaborate at the highest levels possible.  With a strong process, planned changes will be scheduled for deployment with a high degree of accuracy.  Engineers enjoy complete and accurate requirements, and know what is expected of them throughout each cycle.  Quality Assurance will have time to create plans and fully test changes, and Releases to Production will no longer be a nail-biting, all-hands-on-deck stress-fest.</p>
<p>The following proposed process details the steps necessary for day-to-day development, maintenance and enhancements for the IHO/Offer Channels applications.  They are exclusive of longer-term enhancements and development requiring multiple-week pulls.  Only those issues that may be completed in short periods will applies here,.  This is significant because with most mature applications, nearly 75% of all issues encompass this type of development.</p>
<h3>Tracking the status of Issues</h3>
<p>An Issue Tracking System is a “blog-like” application that allows issues to be tracked throughout the development/release cycle.  Its main features include fields to track:<span id="more-73"></span></p>
<ul>
<li>Who the Business Stakeholder is for the issue (i.e. owner)</li>
<li>Who has responsibility for the Issue’s forward progress at a point in time</li>
<li>The Scheduled Release Date</li>
<li>An identifier for the issue so that communication may occur around it</li>
<li>A field to delinieate the Issue’s status</li>
<li>Attachments to the Issue for requirements or any information needed to proceed in the process</li>
<li>A &#8220;Comments&#8221; section that allows all stakeholders to create a chronological and permanent record of what happened to the issue over its lifecycle</li>
</ul>
<p>Other features of a robust issue tracking system are excellent aggregation and reporting tools, integration with Wiki pages, email notifications and IDE integration.  The tool chosen by many, and arguably a “best of breed” is <a title="Atlassian's JIRA software" href="http://www.atlassian.com" target="_blank">“JIRA” from Atlassian Software</a>.</p>
<h3>Assumptions</h3>
<p>Many, if not most, of the web applications built in an enterprise are ongoing products that require maintenance, small tweaks and enhancements on an ongoing basis.  While larger changes to the system occur on a much more infrequent basis, it is essential that these be separated out into a different schedule and allow for the ongoing implementations to occur on a regular schedule that has no dependencies upon larger, more complex deployments.</p>
<p>There are several assumptions that must be made to completely embrace the Overlapping Schedule Model fully:</p>
<ol>
<li>There will always be more issues and tweaks needed than resources available</li>
<li>A method for communicating issues between all stakeholders exists</li>
<li>There is a need for predictability and pacing</li>
<li>While not perfect, the application has some stability</li>
</ol>
<h2>The <em>Overlapping Schedule</em> Model</h2>
<p>An Overlapping Schedule is a very efficient model to keep the all business process stakeholders fully engaged, collaborative and running at peak efficiency.  It uses tight structure to coordinate activities in three separate areas, Business, Development, and Release/QA. While Business Stakeholders are planning future releases, the Engineering Team is developing the next release, and the QA and Release Management is readying/deploying the current release for production.</p>
<p>Figure 1 shows the basic development cycle and it’s overlapping steps, creating a never-ending, continuous process that keeps all resources utilized at maximum efficiency:</p>
<p> </p>
<div id="attachment_58" class="wp-caption aligncenter" style="width: 437px"><a href="http://danilogurovich.files.wordpress.com/2008/07/osm_overview1.jpg"><img class="size-full wp-image-58" src="http://danilogurovich.files.wordpress.com/2008/07/osm_overview1.jpg" alt="Main stakeholder activities in the Overlapping Schedule Model." width="427" height="471" /></a><p class="wp-caption-text">Main stakeholder activities in the Overlapping Schedule Model.</p></div>
<h3>The Details of the Process</h3>
<p>Collaboration exists at various points between all stakeholder groups to allow for seamless transitions and predictable behaviors.  Issues planned for release will be vetted between Business and Engineering for resourcing purposes, Developers will interface with Business to demonstrate functionality, and Engineers, Business and QA will collaborate with Release Management in the “Go-No-Go” process gate as final release is set (other collaborations are spelled out in the details below).</p>
<p>An Issue planned in one week will be released on the second Thursday following.  Metrics can be attached to every step in the process.  Everyone knows what to do and when to do it, and communication between the disparate groups are formalized and clarified.  The entire process becomes engrained within the fabric of the company.  The team implementing it becomes responsible for the continuous and uninterrupted revenue operations of the application.  This “Profit Team” process is outlined:</p>
<p> </p>
<div id="attachment_59" class="wp-caption aligncenter" style="width: 429px"><a href="http://danilogurovich.files.wordpress.com/2008/07/osm_single_cycle.jpg"><img class="size-full wp-image-59" src="http://danilogurovich.files.wordpress.com/2008/07/osm_single_cycle.jpg" alt="Single Cycle Process Flow for Overlapping Schedule Model" width="419" height="435" /></a><p class="wp-caption-text">Single Cycle Process Flow for Overlapping Schedule Model</p></div>
<h2>The Steps</h2>
<h2>Starting at the End – Release</h2>
<p><em>Time: Thursday, 2pm</em></p>
<p>Release is scheduled for Thursday at 2pm. This is no arbitrary time. Releases should never occur on Fridays or Mondays because there is no time for <em>Go-No-Go</em> meetings or mitigation in the event of emergencies. Tuesdays and Wednesdays are also out because of the need to QA all issues thoroughly, and this has to happen through unbroken week and not broken up by a weekend. (Mon-Fri).</p>
<p>Thursday becomes the release day by elimination.  It is impossible to release first thing in the morning (the <em>Go-No-Go</em> meeting must occur first), and time must be made for a “burn in” period after release to production. This means that after lunch is the best time, but since preparation must occur immediately before the release, so it can&#8217;t be done before lunch  (e.g.Thursday, 2pm).”</p>
<p>The Release of the current, tested and accepted code signifies the very end of the process and the beginning of a new one, so this point is a perfect place to point out the criteria for starting the next cycle &#8212; this occurs when new enhancements have been identified and a decision has been made to move them forward into production.</p>
<p>These identified issues are only in their basic state. They have no prioritization. All of their requirements may not be complete, and the majority certainly haven’t been resourced.  They are probably known only to the business stakeholders and have no release date.</p>
<h3>Adding New Enhancements/Maintenance to the Issue Tracker</h3>
<p><em>Time: Thursday Morning – Friday Morning</em></p>
<p>Identified Issues are entered into the Issue Tracking System with their status marked as <em>“Prioritization”</em>. Once all the issues are added to the Tracking system, the process can move forward. At this point, the business stakeholders are still the only group <em>actively</em> involved in the process.</p>
<h3>Add Supporting Docs</h3>
<p><em>Time: Thursday Morning – Friday Morning</em><br />
With all the issues in the Tracking System, any supporting documentation that is available at this point is added to the corresponding issue, along with any commentary that will give the prioritization committee enough information to put the issues in the right order for development and eventual release.</p>
<h3>Prioritization – The First Big Step</h3>
<p><em>Time: Friday Noon</em><br />
Lunch is served as Business Stakeholders engage to prioritize the issues in the system for eventual deployment.  Still only a Business Stakeholder exercise, the process is now setting up to collaborate with the rest of the stakeholders.  Issues are prioritized and prepared to meet the Development Managers for mapping to resources.</p>
<h3>Meet the Engineers – Dev/Resource Alignment Meeting</h3>
<p><em>Time: Friday Afternoon</em><br />
The Program Coordinator for the business generates a report containing all issues prioritized for the next release. Their status at this time should be marked as <em>“Requirements”</em> in the Issue Tracker. The Coordinator and Development Manager(s) should be prepared meet and map each issue to Engineering Resources for Implementation. The Program Coordinator will go through each issue with the Manager(s), and the Managers will assign a resource to each issue. At this point a “contract” is being made between the Business and Development groups, spelling out just what can and will be done for the next release cycle.</p>
<p>It is the Development Manager’s responsibility to carefully look at each Issue and ensure that most, if not all requirements are complete and formatted for maximum understanding with respect to the assigned engineer. All gaps must be pointed out and recorded against each issue for its corresponding business owner’s follow-up.</p>
<p>It is also possible that the prioritized issues may lack the development resources necessary to for completion within the next release cycle (developers may be unavailable, an emergency may have supplanted resources, etc.). When this occurs, they will be re-prioritized and sent back into the queue for the next week. A team can only do so much, and creating situations requiring extraordinary effort will “raise the bar” and eventually burn out the team. Consistency is critical, and this step is the decision gate to ensure that all follow-on processes go smoothly.</p>
<p>Once all issues have been mapped to resources and the Business-to-Development hand-off is complete, all issues that are to be worked on are marked <em>“Ready for Development”</em>.</p>
<h3>Finalize Requirements</h3>
<p><em>Time: Friday Afternoon – Monday Morning</em><br />
At this point, there is an “Engineering Perspective” to the issues. The Program Coordinator has the opportunity to work with the stakeholders of the individual issues and update any requirements and answer any questions that have arisen from the Dev/Resource Alignment meeting. The stakeholders can have some informal contact with their assigned engineer, and set up stakeholder – engineer/developer meeting, also known as a JAD session.</p>
<h3>Dev/Biz JAD session – Is This What You Want?</h3>
<p><em>Time: Monday 11am</em></p>
<p>As soon as possible on the Monday morning of the Development week, the Business Stakeholder and any other interested parties should meet with the assigned developer of the Issue to have an overview of what is to be built and positively identify every unclear detail surrounding it’s development. This is called a Joint Application Design/Developemnt (<strong>JAD</strong>) session.</p>
<p>The JAD process does for computer systems development what <a href="http://en.wikipedia.org/wiki/Henry_Ford"><span>Henry Ford</span></a> did for the manufacture of automobiles (a method of organizing machinery, materials, and labor so that a car could be put together much faster and cheaper than ever before – the assembly line). The goal in systems development is to identify what the users really need and then set up a system or process that will provide it. Traditional methods have several built-in delay factors that get worse as more people become involved. JAD cures this by addressing four simple assumptions:</p>
<ul>
<li>People who actually do a job have the best understanding of that job.</li>
<li>People who are trained in information technology have the best understanding of the possibilities of that technology.</li>
<li>Information systems and business processes rarely exist in isolation &#8212; they transcend the confines of any single system or office and affect work in related departments. People working in these related areas have valuable insight on the role of a system within a larger community.</li>
<li>The best information systems are designed when all of these groups work together on a project as equal partners.</li>
</ul>
<p>The outcome of the JAD session should show in evidence:<br />
   </p>
<ul>
<li>Definition of the Issue to the satisfaction of both parties.</li>
<li>Understanding and translation of all requirements</li>
<li>Obtained approval from all parties with respect to the forward development of the issue.</li>
<li>Surety that all decisions and changes are reflected in the Issue Tracker.</li>
<li>An Agreed upon time for demonstration before the code is checked in for QA</li>
</ul>
<p>With the completion of this step, the Issue is marked “In Development”.</p>
<p><em>For more information on a JAD session, consult </em><a href="http://www.umsl.edu/~sauterv/analysis/JAD.html">http://www.umsl.edu/~sauterv/analysis/JAD.html.</a><a href="http://www.umsl.edu/~sauterv/analysis/JAD.html"></a></p>
<h3>Development – Where the Rubber Meets the Road</h3>
<p><em>Time: Monday 11am – Friday 12pm</em></p>
<p>The Developer will now build what has been set forth in the Issue Tracker and based upon the learnings from the JAD session. If any problems or roadblocks occur, they should log the problem clearly in the Issue Tracker, mark the Issue “Development Problem”, and notify their Manager and the Stakeholder for the Issue.</p>
<p>Development on the issue can continue until the Code Freeze/Check-in time of Friday, 12pm. Any Issues being worked on after that point are at risk for being pushed off to another cycle, and will need to be addressed by stakeholders.</p>
<p>As necessary, a demonstration should take place based upon a time set up in the JAD session. This demonstration should answer the question “is this what you asked me to build?”  It is important to have some time left in the Development Week to make any last minute corrections to the implementation.</p>
<p>During the Development Cycle, the QA team will be pulling the Issues that are to be tested from the Reporting System of the Issue Tracker, and setting up their tests. They may be asking any Stakeholders questions based upon the testing needs of the particular issue.</p>
<h3>Ready For QA Code Check-in</h3>
<p><em>Time: Friday 12pm</em></p>
<p><em></em>All code is checked into the Source Control System at the Friday deadline. The Release manager will merge the newly developed code into QA Branch. The QA team will begin reviewing issues to set up tests and begin next week’s three-day testing cycle.</p>
<p>Developers will prepare next for the next Development Week. All checked in Issues status is set &lt;em&gt;“Ready for QA”&lt;/em&gt; at time of check in.</p>
<blockquote><p><em>It is important to check development code in when finished and not wait till the last minute to prevent collisions, over-writing of code and any last minute problems that can surround more than one person trying to check in the same file(s). Check in soon and often should be a mantra.</em></p></blockquote>
<h3>Sandbox Demo to Business</h3>
<p><em>Time: Friday Afternoon</em></p>
<p><em></em>Developers demonstrate changes to Business Stakeholders on an “as needed basis” . All Business Stakeholders sign off on their particular issues and agree that QA can take over and start testing. This is the Final gate check for Development. Issue Tracker Status is marked &lt;em&gt;“QA”&lt;/em&gt; by QA personnel.</p>
<p> </p>
<div id="attachment_65" class="wp-caption alignleft" style="width: 138px"><a href="http://danilogurovich.files.wordpress.com/2008/07/qa-processes2.jpg"><img class="size-thumbnail wp-image-65" src="http://danilogurovich.files.wordpress.com/2008/07/qa-processes2.jpg?w=128" alt="Dev/QA process &quot;swim lanes&quot; - blended colors represent collaborations. click to enlarge." width="128" height="88" /></a><p class="wp-caption-text">Dev/QA process &quot;swim lanes&quot; - blended colors represent collaborations. click to enlarge.</p></div>
<h3>QA Complete, Final Business Check</h3>
<p><em>Time: Wednesday afternoon</em><br />
The business stakeholder will view the corresponding implementations to their issues served from the QA machines. Any final defects may be addressed, or the Issue may be delayed for another cycle.<br />
If all is ok, the Issue Tracker Status for QA complete is <em>“Ready for Production”</em>.  Business has final say. </p>
<h3>Move Code to Head/Staging</h3>
<p><em>Time: Wednesday 4pm</em><br />
Release manager will take all issues marked <em>“Ready for Production”</em> and merge to the Production Staging Branch.  If Staging exists, it is set to staging for final demonstrations, review and any business collaborations on an as-needed basis  (sometimes there are outside dependencies that may need to have a “production-level” deployment to expose any final issues, or be observed by external stakeholders.  This is the place to do this.</p>
<h3>Last Minute Gut Check</h3>
<p><em>Time: Thursday Morning</em><br />
Final Business reviews.  Go-No-Go meeting.  Any last minute issues are addressed before launch.  Afternoon begins with ITOPS/Release Coordination for Production and launch.</p>
<h3>Release – OK, Let’s start at the top!</h3>
<p><em>Time: Thursday, 2pm</em><br />
Code is launched to production.  The deployment must be watched throughout the afternoon for any production/emergency issues.  Business stakeholders should review their changes on production sites.  Any outside communication with external stakeholders is handled.  Issues marked <em>“Production”</em> in Issue Tracker.  Issues from previous week marked <em>“Production”</em> are now marked <em>“Closed”</em>.</p>
<h2>The Three P Method:  P1, P2, P3.</h2>
<p>Below is an industry-standard practice of prioritizing issues with respect to their urgency.  They are categorized as P1 – P3, the most urgent being P1.  Each has impact to issues that are “already” in the queue for development, which must be taken under consideration.</p>
<ul>
<li>P1 &#8212; when a fix is needed to affect a serious break that will affect the company legally, morally, or for revenue impact over a set value (usually 50k or so).  Everything is dropped and a release to production is done ASAP, outside of the schedule.  Depending upon the impact, an upcoming release may be delayed for a week or certain issues may not be completed for the next scheduled release.  A post-mortem is required to decide what the effect to the normal schedule is.<em>A P1 fix usually requires a VP for “go-forward” approval. Often a meeting of stakeholders must occur to gather information with respect to impact and fixes.</em></li>
<li>P2 &#8212; when a fix is needed to affect a break within the system.  In this scenario, the break is fixed for the very next scheduled release &#8212; other issues being worked on may be affected, but no special release is done.  Only in the rarest of cases is a Post-Mortem needed.  Needs Director-level approval.</li>
<li>P3 &#8212; anything within the normal schedule.  Planned for one week, developed for a week, QA&#8217;d and released the following week.</li>
</ul>
<h2>The Overlapping Schedule Model Process within the Issue Tracker</h2>
<p>The JIRA issue tracking system aligns workflow with Issues to allow for clean and simple end-to-end tracking of issues aligned closely to physical business processes.  It employs a “status-transition” method to follow the process.  Each “status” may have various “transitions” that allow for different scenarios.  By clicking on a particular transition, the workflow will change to a corresponding status, and the path chosen will be reflected in the next available transitions available to the JIRA User.</p>
<p>The Diagram below shows the workflow available to the Team using JIRA and implementing the Overlapping Schedule Model.  The workflow has been mapped out and attached to the Schemes available to the IHO.  This model can be used or extended for other development channels.  Note various paths that do not take a particular Issue into production, and other paths that have various conditions that must be satisfied to move forward.  The “straightest” path to production is indicated by bold blue lines, showing the transitions and their corresponding status indicators.</p>
<div id="attachment_66" class="wp-caption alignleft" style="width: 138px"><a href="http://danilogurovich.files.wordpress.com/2008/07/osm.jpg"><img class="size-thumbnail wp-image-66" src="http://danilogurovich.files.wordpress.com/2008/07/osm.jpg?w=128" alt="Overlapping Schedule Model Workflow. click to enlarge" width="128" height="95" /></a><p class="wp-caption-text">Overlapping Schedule Model Workflow. click to enlarge</p></div>
]]></content:encoded>
			<wfw:commentRss>http://gurovich.com/site/2008/07/22/the-overlapping-schedule-process-for-maintenance-and-enhancement-of-complex-web-properties/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Engineering Constraints &#8212; Taking Responsiblity and Delivering</title>
		<link>http://gurovich.com/site/2007/08/12/software-engineering-constraints-taking-responsiblity-and-delivering/</link>
		<comments>http://gurovich.com/site/2007/08/12/software-engineering-constraints-taking-responsiblity-and-delivering/#comments</comments>
		<pubDate>Sun, 12 Aug 2007 19:34:49 +0000</pubDate>
		<dc:creator>Danilo Gurovich</dc:creator>
				<category><![CDATA[Dev process]]></category>
		<category><![CDATA[Enterprise Development]]></category>

		<guid isPermaLink="false">http://danilogurovich.wordpress.com/2007/08/12/software-engineering-constraints-taking-responsiblity-and-delivering/</guid>
		<description><![CDATA[&#8220;As soon as I put a man in command of the army, they all wanted ME to be the general. Now it isn&#8217;t so with Grant. He hasn&#8217;t told me what his plans are. I don&#8217;t know and I don&#8217;t want to know. I am glad to find a man who can go ahead without [...]]]></description>
			<content:encoded><![CDATA[<p><em>&#8220;As soon as I put a man in command of the army, they all wanted ME to be the general. Now it isn&#8217;t so with Grant. He hasn&#8217;t told me what his plans are. I don&#8217;t know and I don&#8217;t want to know. I am glad to find a man who can go ahead without me. He doesn&#8217;t ask impossibilities of me, and he&#8217;s the first general I&#8217;ve had that didn&#8217;t.&#8221;</em></p>
<p align="right">&#8211; Abraham Lincoln, upon appointing Grant to overall command of the Union Army</p>
<p align="left"> </p>
<p align="left">Constraints are things that we live with in our daily lives, accept them, and move on.   With software engineering groups that are well-established and have strong leadership, constraints can get legs of their own and become excuses for not delivering projects on time, not building something correctly, or even stepping outside Enterprise Goals because &#8220;they do not fit within our design.&#8221;  Many times the inability for an engineering team to confront a constraint will go so far as to create blame, cast dispersion and create a poison atmosphere to anyone that &#8220;gets in their way&#8221;.<span id="more-36"></span></p>
<p align="left">If engineers faced no constraints, the Golden Gate Bridge would have been built out of Titanium, painted in gold leaf and had the busts of every designer on the pilasters of the side rails.  Constraints in a Software Engineering environment can be obvious, like the language for the code to be written in, the database that will be connected, legacy systems integration points and the office environment that everyone writes their code.  Less obvious (some would debate the &#8220;less&#8221; here!) constraints are deployment systems and hardware, delivery dates, Quality Engineering/Assurance windows, customer demographics, Marketing and Advertising purchase windows, integration dependencies from other teams, long-term maintenance of hardware and software, etc&#8230;</p>
<p align="left">Consider a &#8220;Software Team&#8221; that is responsible for building high-transaction software for a large enterprise.  This enterprise has instituted the standardization of all hardware within an infrastructure to allow for better purchasing, streamlined maintenance and quicker deployments.  The benefits from a shared infrastructure environment are obvious from a cost-savings standpoint, and when the ITOPS group engages the teams building software (and vice-versa), hardware that meets the enterprise goals for both teams will be integrated into the final implementation.  This software team did not participate, and further, believes that the ITOPS group has very little competence.</p>
<p align="left">The &#8220;Software Team&#8221; purchases all of its hardware outside of the system and any products that need to integrate must do so on their terms.  Often the kernels of the OS are different, requiring the ITOPS team to have additional resources and skills to maintain this completely separate branch of hardware and deployments.  Since the &#8220;Software Team&#8221; is politically powerful, it gets what it wants.  The company suffers because the arrogance of a Software Team and their inability to live within constraints causes other teams to pick up their slack.</p>
<p align="left">Another constraint is to provide services that are consumable by all clients.  If a team is Java-centric and only builds services that can be consumed by Java clients, this causes a great deal of difficulty for other teams within an organization that do not develop within a JVM.  Soap, REST and other XML-RPC interfaces should always be considered first, along with other OS/Language independent methods. Groups that build products for themselves and do not collaborate with their client teams are not facing up to constraints, and will always deliver inadequate products that are late, incomplete and full of excuses.</p>
<p align="left">Excuses.  Excuses abound within a team that cannot face up to constraints.  &#8220;Wha-happa-wuz&#8221;  will be the first things heard by management, along with a list of &#8220;things out of their control&#8221; that affected why their product was late, broken, inadequate or some combination of all three.</p>
<p align="left"><strong>Constraints are things that affect your product but are &#8220;out of your control&#8221;.</strong></p>
<p align="left">Just because you can&#8217;t build your bridge out of Titanium, or your clients don&#8217;t use Java, or your ITOPS team can&#8217;t buy you the latest T-2000 running Debian Linux, means that you have an excuse to deliver less than you promised.  Careful planning, collaboration with internal and external stakeholders, and holding yourself responsible for what you say and do is the professional way of doing things. Here is a checklist of often-ignored constraints:</p>
<ul>
<li>Is the software being delivered in-line with the business stakeholders vision?</li>
<li>Are you trying to force external resources into a particular technology?</li>
<li>Can your product/application be supported on the existing/implemented hardware platforms?</li>
<li>Has the schedule been set to allow for the usual delays in deployment, testing and configuration?</li>
<li>Have all consumers or clients of your product/application been consulted and had a chance to fully comment?</li>
<li>Is your team really the proper group to be building the software?</li>
<li>Is your schedule realistic?</li>
<li>Are non-engineering stakeholders like marketing and sales properly informed of all risks and deliverables?</li>
</ul>
<p>This article is intended more as a &#8220;gut check&#8221; to an engineering team.  If, as a team, products are consistently late, stuck in testing, not meeting expectations or hard to maintain, it is &#8220;gut check time&#8221;.  It&#8217;s very easy to blame others; demand &#8220;impossiblities&#8221; of management and other groups and cast dispersions.  It is a harder, but more successful approach, to look at what impedes the group, accept them as constraints and work within them.</p>
<p align="left"> </p>
]]></content:encoded>
			<wfw:commentRss>http://gurovich.com/site/2007/08/12/software-engineering-constraints-taking-responsiblity-and-delivering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Development/Quality Assurance Process:  The pitfall of Involuntary Prototyping</title>
		<link>http://gurovich.com/site/2007/06/29/involuntary-prototyping-in-qa/</link>
		<comments>http://gurovich.com/site/2007/06/29/involuntary-prototyping-in-qa/#comments</comments>
		<pubDate>Fri, 29 Jun 2007 18:46:51 +0000</pubDate>
		<dc:creator>Danilo Gurovich</dc:creator>
				<category><![CDATA[Dev process]]></category>
		<category><![CDATA[Enterprise Development]]></category>

		<guid isPermaLink="false">http://danilogurovich.wordpress.com/2007/06/29/involuntary-prototyping-in-qa/</guid>
		<description><![CDATA[Is your Engineering Development project stalled in QA? Have expectations throughout your organization been lowered to the point where extremely long, ponderous QA cycles are planned for and expected? This could be the result of an Involuntary Prototyping process that can become a trap that is expensive, not only from a product time line/opportunity cost [...]]]></description>
			<content:encoded><![CDATA[<p>Is your Engineering Development project stalled in QA?  Have expectations throughout your organization been lowered to the point where extremely long, ponderous QA cycles are planned for and expected?  This could be the result of an Involuntary Prototyping process that can become a trap that is expensive, not only from a product time line/opportunity cost basis, but also in employee morale and resource turnover.</p>
<p>Projects in general are date-driven, that is the business goals are to deploy something in a specified time-frame and with necessary features with reasonable quality.  Planning around this is difficult but not impossible &#8212; often QA takes a back seat to development with respect to time-weight concerns, causing any delays in development to be thrown on the backs of QA teams, demanding that they complete the same amount of testing with less time.  As development is delayed, the reluctance to accurately modify the schedule to a reasonable period decreases &#8212; stakeholders become more and more optimistic with their times, and consequently, any shock to the system will result in blown schedules and scrambling to &#8220;make the date&#8221;.  This scrambling can bring on Involuntary Prototyping &#8212; when this happens, be prepared for a <em>bear to eat your schedule and poop it off a cliff</em>.</p>
<p><span id="more-34"></span></p>
<p><strong>The Role of QA</strong></p>
<p>The role of Quality Assurance (QA) in an enterprise is to use a planned and systematic approach to the evaluation of the quality of software product/applications, and their adherence to standards, processes, and procedures.  QA warrants that standards and procedures are established and followed throughout a product/application life cycle.<br />
Software development and control processes must include highly defined and published approval points, where a QA evaluation of the product may be accomplished in line with applicable standards. This involves collaboration with Development Groups through all stages of a product’s life cycle.  Acceptance Testing provides a quantifiable gate for formally moving a product/application from the Development Phase to the QA Phase.<br />
QA predicts their expected testing time with the assumption that they will get a Functionally Complete build from development that can pass a full Acceptance Tests (generally a build with all Designed Functionality included with zero or very few blocked areas of code).  As projects get delayed because builds are not ready, resources become less and less available, and additional, serialized projects either have to wait or be taken on by smaller, ad hoc teams and offshore resources.  Keeping offshore resources aligned with the onsite project teams requires complete documentation, plans and tight management.  With  at-risk projects, this is almost never the case.</p>
<p><strong>Increased Project Risk Results in Process Failure</strong></p>
<p>QA takes all projects at face value and goes to work. At-risk, large projects often force QA to take builds <em>before they are complete</em> in order to give them a fighting chance to make their release dates. These functionally incomplete projects soon become overwhelmed, and <em>anti-processes </em>form; reulting project delays become inevitable.</p>
<p>By testing for designed features and issuing, tracking and closing bugs that should have been caught before QA actual, <em>mission-critical problems that must be found are deferred at best or just neglected,</em> as the time for deployment draws near and the Product/Development teams’ launch pressures increase.<br />
Delays in the QA process from a product with more-than-expected issues and compressed dates in guarantee a lapse into an “<em>in for a penny, in for a pound</em>” mentality.  In the end the project will face delay, and all projects serialized behind it will be correspondingly backlogged in dramatic fashion, creating a potentially exponential expansion in delays as projects, dependencies and development resources are repurposed in a haphazard manner.</p>
<p>This inefficiency rolls up quickly.  Initial show-stopping bugs trigger new builds.  Builds are often weekly, causing resources to cycle between fully utilized to dormant depending upon their roles in the process.  Risks also increase with respect to changes in configuration and regression.</p>
<p><strong>Prototyping and its Pitfalls</strong></p>
<p>If an incomplete product is sent through a Formal QA Testing Cycle, the result will be continuous builds, large numbers of bugs and issues, and further development/test cycles before a Release Candidate may be obtained.  This process is known as “Prototyping”.<br />
<em><br />
“A prototype is an easily modified and extensible model (representation, simulation or demonstration) of a planned software system, likely including its interface and input/output functionality. It is not a production-ready, fully-functional product ready for QA testing and deployment”</em></p>
<p>While prototyping is excellent for functional gap analysis and continuous improvement of an application under development, inefficiencies exist when a centralized QA team must test products from many different channels with limited resources.  These resources will become overwhelmed when shocks to the system occur.  These system shocks are identified as:</p>
<blockquote><p>•    Loss of resources or rapid turnover<br />
•    Increased production from development teams<br />
•    Increase in the number of products to deploy<br />
•    Geographical and cultural issues from off shoring<br />
•    Political issues and pet projects disrupting the schedule</p></blockquote>
<p>As these shocks manifest themselves singularly, management must move to allow for scheduling issues, level resources and argue against artificial schedule changes.  Delays are inevitable as resources are shuffled, and the output of the QA Team will degrade.<br />
<strong><br />
</strong> If these shocks come in as a group, management may become overwhelmed at the number of changes needed to be made and QA may have to place projects on “hold”, create an ad hoc triage process to test applications that may not be in alignment with business goals, and possibly lose <em>all ability to test prod</em><em>ucts for indefinite periods of time</em>.  Multiple shocks will also affect team morale and possibly create attrition issues and collisions of will between them and various Development/Business groups.<br />
Prototyping most large organization is not deliberate.  When a product is released to QA, the expectation of the Development/Business group is that Acceptance Candidacy has occurred and the product is to be tested and sent to production.  When Designed Functionality is not met and major roadblocks are found, the product devolves into an Involuntary Prototype and the peculiar, often repeated and destructive dance of negotiation, multiple builds, huge bug backlogs and long delays commence.<br />
<a title="Involuntary Prototyping Process" href="../files/2007/06/inv_proto_antiprocessblog.jpg"></a></p>
<p style="text-align:center;"><a title="Involuntary Prototyping Process" href="../files/2007/06/inv_proto_antiprocessblog.jpg"><img src="../files/2007/06/inv_proto_antiprocessblog.jpg" alt="Involuntary Prototyping Process" /></a></p>
<h5>Figure 1 &#8212; The Involuntary Prototype anti-process showing relaxed QE Acceptance standards and the cyclical nature of bug fixes and testing.</h5>
<p><strong>A Demonstrably Complete Product must be the Standard for Acceptance</strong></p>
<p>To prevent Involuntary Prototyping during an application lifecycle, all products entering the QE environment must meet a minimum acceptable standard for initial testing:</p>
<blockquote><p>•    All Designed Functionality for an expected release must be met in an environment that is identical to, or certifiably mimics, the environment that QE will test the application in<br />
•    All Use Cases for the application must be documented, published to, and completely understood by QE stakeholders before initial Acceptance Testing.<br />
•    QA Environments must be understood, deployable and created.<br />
•    Product Managers and Development Leads must certify in writing that the product/application meets all Designed Functionality, with a checklist of all Use Cases tested.<br />
•    The expectations surrounding the schedule for QA testing and later deployment phases.<br />
•    All documentation, in a coherent and meaningful format, must be published to the QA group in advance of any Acceptance Testing so that QA may formulate its test plans.</p></blockquote>
<p>This <strong>Acceptance Candidate</strong>, as defined above, is a<em> functionally complete, verifiable, documented and demonstrable</em> build that represents what the development group certifies as a potential Release Candidate.<br />
<strong>QA must Reject Products that do not meet their Acceptance Threshold</strong></p>
<p>QA must perform a full <strong>Acceptance Test</strong> before a Formal QA Testing Cycle may begin.  It should be institutionalized throughout the entire organization that the mission of QA is to maintain corporate standards, and in a testing environment concentrate wholly on identifying problems with edge cases and border conditions, performance and difficult to find, non-obvious bugs.</p>
<p><em><br />
A professional QA group is NOT in the business of identifying and logging Designed Functionality issues and sloppy development such as spelling errors, layout mistakes, non-functioning log-ins, network and connectivity issues</em>.  The responsibility for identifying and fixing the aforementioned issues must lie solely and completely with the Product/Development group that is responsible for the engineering of said product/application.  Any product/application submitted for QA testing should be regarded as complete and demonstrably tested from the aspect of all Functional Design attributes.<br />
Current development processes/groups may have various and disparate methods of engaging QA, and also have widely different views with respect to the role of QA within an organization.  The engagement process and role QA changes in the an organization&#8217;s Development Doctrine and Executive Championing.  The changes to the process should allow for most, if not all organizations to continue using successful, ingrained strategies, only needing to add QA touch points and additional demonstrations to ensure that all product/application stakeholders have met their responsibilities for delivering an application that is Functionally Complete and passing the required Acceptance Candidate Test.<br />
The following items would be the expected minimum requirements for a product/application to be accepted for a full, Formal QA Testing Cycle.</p>
<blockquote><p>•    The Acceptance Threshold must be determined at project kick off and revisited before delivery to QA<br />
•    Full documentation of Use Cases and Deployment Diagrams must be available to QA resources for testing and configuration.<br />
•    Before Acceptance Testing begins, the Product Manager will verify the functionality of the product is complete through a Acceptance Candidate Test.<br />
•    Products not meeting the Acceptance Test will be rejected from QA and possibly lose their “window”, at the very least they will need to be re-entered into the testing queue.<br />
•    Disputes over Acceptance Testing, Rejecting and Product Acceptance will be mediated by the senior staff for the product and QA departments, with minutes and notes from the meetings sent to the VP-level staff for review.</p></blockquote>
<p>These bullets should be easily integrated within most current development processes, and indeed many groups meet most, if not all, of the above responsibilities.  The object is to formalize the process into the “DNA” of the Product/Development groups and give the QA team a “gate” and set of rules that allow for responsible and sensible pushback that allows for the entire organization to benefit, and reduce the bottleneck around QA entry and exit points.</p>
<h3>The Complete Process as Integrated within the Development Cycle</h3>
<p>Involvement with QA should begin as early as possible, and frequent touchbacks are a method of guaranteeing success.<br />
As the Development Process is kicked off, documentation and expectations are transmitted to the QA group to communicate an understanding of the product/application and set a baseline for acceptance criteria.  This documentation should include, but is not limited to, all design documentation, Use Cases, Product Requirements, and schedule expectations.  As development continues, this document repository should be updated and extended as needs arise.<br />
During the development phases, Product Managers and development stakeholders should get together on a pre-determined basis with QA resources as optional observers to demonstrate the features that have been added to the product and self-police any limitations or errors that have arisen at that point.  Issues around any shortcomings in Designed Functionality should be created and addressed before the final Acceptance Candidate Test.<br />
Once the development phase has reached conclusion, the Acceptance Candidate Test should be conducted, ensuring that all Designed Functionality, configuration, layout, spelling and craftsmanship are complete and up to industry standards.  The Acceptance Candidate Test should guarantee that the product/application would pass the QA Acceptance Test either through the publishing of results or by direct observation from a responsible QA stakeholder.  At this point the Product Manager and Development Lead verifies and guarantees in writing that Designed Functionality is complete.<br />
Upon passing the Acceptance Candidate Test, the product is Ready for the QA Acceptance test.  If the Acceptance Candidate Test has been properly conducted and communicated with QA, this test may be nothing more than a required formality.  It also will allow QA to familiarize itself with the product/application, receive any training needed to test it correctly, finalize test plans and communicate any forward-looking concerns.  If for any reason the QA Acceptance test fails, QA will reject the application wholly and the product will be sent back to development accompanied with a full report as to why the rejection occurred.  This report shall be communicated to all stakeholders, managers and interested executives within the Product/Development group.<br />
Figure 2 represents the integration of Development and QA processes to prevent Involuntary Prototyping and ensure that all Designed Functionality has been met before a Formal QA Testing Cycle begins.</p>
<p align="center"><a title="New Develpoment QA Process" href="http://danilogurovich.files.wordpress.com/2007/06/newqeprocessblog.jpg"><img src="http://danilogurovich.files.wordpress.com/2007/06/newqeprocessblog.jpg" alt="New Develpoment QA Process" /></a></p>
<h5>Figure 2 &#8212; QE &amp; Development Process Integration to prevent Involuntary Prototyping</h5>
<p>Once the Acceptance Test passes, the Formal QA Testing Cycle begins.  This cycle is similar, if not identical to, what the current cycle entails, except the burden of finding and logging Designed Functionality problems will be virtually non-existent, and issues that will cause full cycles to stall should occur with very low frequencies.  Bugs will be logged and if required, new builds and testing cycles will occur as needed.  Once this Testing Cycle ends, the product will be cleared for deployment.</p>
]]></content:encoded>
			<wfw:commentRss>http://gurovich.com/site/2007/06/29/involuntary-prototyping-in-qa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
