<?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>BrainsLink</title>
	<atom:link href="http://brainslink.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://brainslink.com</link>
	<description></description>
	<lastBuildDate>Wed, 19 Jun 2013 02:05:33 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Collaborative Team Behaviors Have to Be Nurtured</title>
		<link>http://brainslink.com/2013/06/collaborative-team-behaviors-have-to-be-nurtured/</link>
		<comments>http://brainslink.com/2013/06/collaborative-team-behaviors-have-to-be-nurtured/#comments</comments>
		<pubDate>Wed, 19 Jun 2013 02:05:33 +0000</pubDate>
		<dc:creator>Vin</dc:creator>
				<category><![CDATA[Technique]]></category>

		<guid isPermaLink="false">http://brainslink.com/?p=2669</guid>
		<description><![CDATA[Great software development teams don&#8217;t just materialize as if beamed in by a Star Trek transporter. They can&#8217;t be formed by managers who hand-pick the &#8220;best and the brightest&#8221; to [...]]]></description>
				<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-2672" alt="hive" src="http://brainslink.com/wp-content/uploads/2013/06/hive.jpg" width="160" height="240" />Great software development teams don&#8217;t just materialize as if beamed in by a Star Trek transporter. They can&#8217;t be formed by managers who hand-pick the &#8220;best and the brightest&#8221; to work on a critical project either. Great teams form when people are challenged and have to think for themselves.</p>
<p>Here&#8217;s a simple example. Let&#8217;s say we have a team following Scrum principles. They have a well-groomed and prioritized sprint backlog. Well into the sprint, one of the software developers finishes working on a story. There are more stories in the backlog and plenty of time left to work on them. What should the developer do?</p>
<p>He might simply access the sprint backlog and select the story at the top of the priority list. Makes sense, right? There&#8217;s nothing wrong with that approach, however, it doesn&#8217;t do anything to encourage teamwork and collaboration. It&#8217;s simply a lone developer doing his thing.</p>
<h3>Leverage the Opportunity</h3>
<p>What if he asked his teammates if any of them needed help? &#8212; <em>Is anyone stuck? Is anyone falling behind?</em> &#8212; Ideally, the Scrum Master should already know the answers. In fact, everyone on the team should know via the daily standup meetings. The general idea is to get stories through the development process as quickly as possible. Having lots of stories in progress is inefficient and wasteful. The Scrum Master needs to keep things moving.</p>
<p>Another possibility is to have the Scrum Master consider the developer&#8217;s strengths. For example, if this developer excels at writing efficient database queries and one of the in-progress stories demands this skill, maybe having the story handed-off to this developer will help the team best. You could also consider having the developer pair with the one implementing the (query) story to take advantage of a learning opportunity.</p>
<h3>Swarm Problems</h3>
<p>Similarly, great teams solve problems together whenever possible. They don&#8217;t dump problems on outsiders and wait for a fix. They don&#8217;t expect team members to solve problems in isolation. Instead, they openly discuss problems, impediments, bottlenecks, etc. and brainstorm ways of handling them. Again, the daily standups are the right place to raise awareness of issues. (Brainstorming needs to be done outside of the standups as you know.)</p>
<p>Managers and others in leadership roles often want to jump in and solve problems. That raises two concerns. 1) The team members grow increasingly dependent on such behavior and don&#8217;t learn good problem-solving skills. 2) Forcing a solution on the team may result in backlash and unintended consequences. Solutions need buy-in. The best way to get buy-in is to have the team solve its own problems.</p>
<p>Get the idea? Great teams don&#8217;t blindly follow procedures. They exercise good judgment and have a genuine interest in helping each other. This doesn&#8217;t just happen. Scrum Masters, Product Owners, and organizational managers need to encourage collaborative behaviors.</p>
<p>photo credit: <a href="http://www.flickr.com/photos/27466406@N00/5665125007/">arripay</a> via <a href="http://photopin.com">photopin</a> <a href="http://creativecommons.org/licenses/by-sa/2.0/">cc</a></p>
]]></content:encoded>
			<wfw:commentRss>http://brainslink.com/2013/06/collaborative-team-behaviors-have-to-be-nurtured/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>5 Ideas for Engaging Business People in Your Software Project</title>
		<link>http://brainslink.com/2013/06/5-ideas-for-engaging-business-people-in-your-software-project/</link>
		<comments>http://brainslink.com/2013/06/5-ideas-for-engaging-business-people-in-your-software-project/#comments</comments>
		<pubDate>Mon, 17 Jun 2013 01:05:53 +0000</pubDate>
		<dc:creator>Vin</dc:creator>
				<category><![CDATA[People]]></category>

		<guid isPermaLink="false">http://brainslink.com/?p=2663</guid>
		<description><![CDATA[Getting the business stakeholders and end users to actively participate in a software development project can be tough. They are accustomed to submitting software requests and receiving working software several [...]]]></description>
				<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-2665" alt="engaged" src="http://brainslink.com/wp-content/uploads/2013/06/engaged.jpg" width="240" height="160" />Getting the business stakeholders and end users to actively participate in a software development project can be tough. They are accustomed to submitting software requests and receiving working software several months later. They don&#8217;t like the process or the lengthy wait time but they&#8217;ve been conditioned to expect it. Once the software arrives (which doesn&#8217;t always happen), they submit defect reports, complain about missing features, and start the process over for the next release.</p>
<p>The whole approach is absurd but everyone feels powerless. It&#8217;s accepted &#8212; at least in part &#8212; because everyone is busy. Business people have jobs to do. They don&#8217;t have time to help software developers do their jobs too.</p>
<p>Now your software development team wants to collaborate with the business team. You might want to try an agile approach like Scrum or maybe you simply want to try an iterative waterfall technique. How do you get the business folks engaged in the software development effort early and keep them engaged? Here are five ideas to consider. What you ultimately decide to do depends upon your company&#8217;s culture and the level of executive support the project receives.</p>
<ul>
<li><strong>Face It:</strong> Find reasons for face-to-face conversations with the stakeholders and power users. Make them feel needed and involved. It builds trust and establishes accountability. If people are spread out across the country or around the globe, schedule phone calls to solicit feedback. (But please don&#8217;t schedule weekly <em>status meetings</em>. These conversations should be spontaneous.)</li>
<li><strong>Visualize It:</strong> Prominently display the team&#8217;s progress. <em>No gantt charts, please!</em> Simple graphics are best. Even a kanban-like wallboard showing the release backlog and a few status columns with a progression towards done can work. Something as simple as taking a photo of the wallboard each week and emailing it around can help improve information flow.</li>
<li><strong>Show It:</strong> Schedule working sessions to demonstrate the software and get feedback. Don&#8217;t worry about missing features and defects. <em>It&#8217;s a work in progress.</em> Show &#8216;em what you got and ask &#8216;em what they need. Schedule these sessions on an as-needed basis. Try to make them fun as well as informative.</li>
<li><strong>Use It:</strong> In some cultures, early software deployments are taboo. The software can only be deployed when management says it&#8217;s done. In such circumstances, setup a workstation (or several) where people can drop by and actually use the software. Consider holding <em>&#8220;lunch and learn&#8221;</em> events to get people to try out the new software.</li>
<li><strong>Score It:</strong> If you use traditional alpha/beta cycles during software projects, don&#8217;t just ask for opinions. <em>Create a score card.</em> Don&#8217;t just deploy the software and ask for open-ended feedback. Pass out detailed assessment forms and ask everyone to fill them out. You&#8217;ll get better and deeper feedback.</li>
</ul>
<p>I hope that at least one or two of these ideas resonate with your enterprise environment. Try to be open and transparent. Seek inclusion and teamwork. When people feel needed, they are more likely to collaborate.</p>
<p>photo credit: <a href="http://www.flickr.com/photos/billnwmsu/3741152632/">billnwmsu</a> via <a href="http://photopin.com">photopin</a> <a href="http://creativecommons.org/licenses/by-nc-nd/2.0/">cc</a></p>
]]></content:encoded>
			<wfw:commentRss>http://brainslink.com/2013/06/5-ideas-for-engaging-business-people-in-your-software-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Development and Dieting Have Something in Common</title>
		<link>http://brainslink.com/2013/06/software-development-and-dieting-have-something-in-common/</link>
		<comments>http://brainslink.com/2013/06/software-development-and-dieting-have-something-in-common/#comments</comments>
		<pubDate>Fri, 14 Jun 2013 02:02:59 +0000</pubDate>
		<dc:creator>Vin</dc:creator>
				<category><![CDATA[Principle]]></category>

		<guid isPermaLink="false">http://brainslink.com/?p=2656</guid>
		<description><![CDATA[Any change to the way we do things is disruptive. Any deviation from our normal routine is unsettling. Forget about the holy wars around what constitutes the &#8220;best&#8221; software development [...]]]></description>
				<content:encoded><![CDATA[<p><img class="alignleft  wp-image-2658" alt="exercise" src="http://brainslink.com/wp-content/uploads/2013/06/exercise.jpg" width="168" height="192" />Any change to the way we do things is disruptive. Any deviation from our normal routine is unsettling. Forget about the holy wars around what constitutes the &#8220;best&#8221; software development approach or whose diet plan produces the &#8220;best&#8221; results. The challenges of creating software and dieting are the same.</p>
<p>Why would a company change the way it builds software systems? Companies change their approach to software development once they conclude that what they&#8217;re doing is too big, too slow, or too costly. They want better, faster, cheaper results.</p>
<p>Why would a person decide to go on a diet? People decide to lose weight when they believe they are too big, too slow, or too costly (as in having to buy a new wardrobe). We&#8217;d all like to be healthier, fitter, and more appealing, right?</p>
<h3>Consider the Challenges</h3>
<p>Whether it&#8217;s a company writing software or a person losing weight, the challenges are similar. Many companies struggle with software projects that are usually late, over budget or unreliable. Making major improvements is difficult. Flawed processes don&#8217;t just heal themselves. It takes a lot of work.</p>
<p>As for the challenge of losing weight, it&#8217;s hard to do. It may be a few pounds or a hundred pounds. Regardless of the amount, you have to make some some basic lifestyle changes. Excess weight doesn&#8217;t just magically melt away as some marketing campaigns would like us to believe.</p>
<p>The basic steps to solving either problem are the same. The steps might look like the following (along with some examples):</p>
<ul>
<li>Establish goals
<ul>
<li><strong>Company:</strong> reduce time to market by 20% or lower customer support costs by 30%</li>
<li><strong>Person:</strong> lose 50 pounds, run a marathon, or fit into an existing wardrobe</li>
</ul>
</li>
<li>Evaluate approaches
<ul>
<li><strong>Company:</strong> iterative waterfall, Scrum or XP</li>
<li><strong>Person:</strong> Weight Watchers, Jenny Craig or South Beach Diet</li>
</ul>
</li>
<li>Prepare to follow the approach
<ul>
<li><strong>Company:</strong> identify training materials and train employees</li>
<li><strong>Person:</strong> study the diet and chat with others that have followed it</li>
</ul>
</li>
<li>Purchase necessary items
<ul>
<li><strong>Company:</strong> buy equipment and software; setup office space</li>
<li><strong>Person:</strong> buy cooking tools and food items</li>
</ul>
</li>
<li>Start the effort and track progress
<ul>
<li><strong>Company:</strong> use charts and graphs to show progress</li>
<li><strong>Person:</strong> track weight and strength/endurance</li>
</ul>
</li>
</ul>
<p>I could go on but you get the idea. The similarities are striking.</p>
<p>If you don&#8217;t have clear goals, you&#8217;ll either fail from lack of direction or you&#8217;ll accept whatever outcome you get and call it a day. Proper preparation is also critically important, as is tracking progress. It all has to come together to achieve a successful outcome.</p>
<p>Oh, I almost forgot! The most important aspect of any change endeavor is <strong><em>commitment</em></strong>. Some things will go wrong along the way. Mistakes will happen. The journey certainly won&#8217;t be smooth sailing. Those that succeed in any endeavor are those that defined clear goals at the outset and were committed to success from the beginning.</p>
<p>That&#8217;s hard to do as an individual and it&#8217;s even tougher as an enterprise organization.</p>
<p>photo credit: <a href="http://www.flickr.com/photos/djrome/4252303107/">Rance Costa</a> via <a href="http://photopin.com">photopin</a> <a href="http://creativecommons.org/licenses/by/2.0/">cc</a></p>
]]></content:encoded>
			<wfw:commentRss>http://brainslink.com/2013/06/software-development-and-dieting-have-something-in-common/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Managing Requirements Is Not Just for Dummies</title>
		<link>http://brainslink.com/2013/06/managing-requirements-is-not-just-for-dummies/</link>
		<comments>http://brainslink.com/2013/06/managing-requirements-is-not-just-for-dummies/#comments</comments>
		<pubDate>Wed, 12 Jun 2013 02:50:29 +0000</pubDate>
		<dc:creator>Vin</dc:creator>
				<category><![CDATA[People]]></category>

		<guid isPermaLink="false">http://brainslink.com/?p=2648</guid>
		<description><![CDATA[I just finished reading &#8220;Requirements Definition &#38; Management for Dummies&#8221; by Robert D. Schneider, Tony Higgins and Keith Barrett. The eBook is being freely distributed by Blueprint Software Systems (registration [...]]]></description>
				<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-2650" alt="dummies" src="http://brainslink.com/wp-content/uploads/2013/06/dummies.jpg" width="240" height="180" />I just finished reading <em>&#8220;Requirements Definition &amp; Management for Dummies&#8221;</em> by Robert D. Schneider, Tony Higgins and Keith Barrett. The <a href="http://www.blueprintsys.com/asset/ebook-requirements-definition-and-management-for-dummies/" target="_blank">eBook</a> is being freely distributed by <a href="http://www.blueprintsys.com/products/" target="_blank">Blueprint Software Systems</a> (registration required). While it&#8217;s intended to draw attention to Blueprint&#8217;s requirements management software, it&#8217;s not just marketing literature. The book makes some good points.</p>
<p>Much of the material is centered on the role of business analysts in software development. I know some will argue that agile projects don&#8217;t need business analysts. I agree &#8212; on <em>small</em> projects. I disagree on enterprise-scale projects. Big, complex undertakings need high-level analysis and design and it has to be done in an agile way. Blueprint gets it.</p>
<p>Here are a few excerpts that got my attention:</p>
<p><strong>From Chapter 1: Meeting the Business Analyst</strong></p>
<p><em>&#8220;In many ways the role of a business analyst parallels that of an author writing a story or screenplay — either way, you could call it &#8220;The Voyages of the Enterprise.&#8221; Indeed, the business analyst must tell the story of the application that the business needs and do so in such a way that the business stakeholders can easily consume the story and confirm that it meets their needs, and that the technology stakeholders (that is, testers, architects, and developers) can read it and understand what they need to test, design, and develop. As with any good story, the business analyst must use appropriate language, add in clear illustrations, and provide good visual imagery.&#8221;</em></p>
<p>I love the story analogy. Business teams don&#8217;t want to read technical documentation. They don&#8217;t understand all the acronyms and they don&#8217;t care. Conversely, technical teams thrive on technical details. Someone has to bridge the gap.</p>
<p><strong>From Chapter 2: Conquering the Challenges of Business Analysis</strong></p>
<p><em>&#8220;The challenges business analysts face are even more formidable because their daily responsibilities are in continual flux and undergoing ceaseless transformations. Why? &#8230; end-users take advantage of only 45 percent of delivered features (according to the Standish Chaos Report), and rework consumes 40–50 percent of project budgets (Boehm and Basili). Issues that the project team could have addressed when defining requirements are key contributors to these unfortunate numbers. In fact, faulty requirements form the root cause for 75–85 percent of rework (Leffingwell).&#8221;</em></p>
<p><em>&#8220;Good requirements and agile (development) are absolutely compatible &#8230; These requirements are detailed for each iteration individually to a level consistent with other methods just before implementation.&#8221;</em></p>
<p>This approach mimics the way agile teams write epics and decompose them into stories just in time for the target sprint. That&#8217;s an approach that benefits every software development team.</p>
<p><strong>From Chapter 3: Building a Better Business Analysis Experience</strong></p>
<p><em>&#8220;Three major (yet surprisingly simple to follow) strategies make the job of creating software requirements easier:</em></p>
<p><em>* Getting visual</em></p>
<p><em>* Getting social</em></p>
<p><em>* Getting going&#8221;</em></p>
<p>Blueprint advocates using diagrams, charts and graphs not just words, sentences and paragraphs. Visual representations are more likely to be understood and remembered. They also advocate frequent interactions and exchanges among team members. It&#8217;s not simply a matter of point-to-point communications, information has to be shared and accessible to everyone on the team.</p>
<p>While I&#8217;ve never used the Blueprint software and thus cannot recommend it, I can recommend the book as worthwhile reading. It&#8217;s concise and easy to follow.</p>
<p>photo credit: <a href="http://www.flickr.com/photos/lansinglibrary/454834828/">Lansing Public Library, Lansing Illinois</a> via <a href="http://photopin.com">photopin</a> <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/">cc</a></p>
]]></content:encoded>
			<wfw:commentRss>http://brainslink.com/2013/06/managing-requirements-is-not-just-for-dummies/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Even When You Build the Right Software, You Can Still Get It Wrong</title>
		<link>http://brainslink.com/2013/06/even-when-you-build-the-right-software-you-can-still-get-it-wrong/</link>
		<comments>http://brainslink.com/2013/06/even-when-you-build-the-right-software-you-can-still-get-it-wrong/#comments</comments>
		<pubDate>Mon, 10 Jun 2013 02:05:59 +0000</pubDate>
		<dc:creator>Vin</dc:creator>
				<category><![CDATA[Principle]]></category>

		<guid isPermaLink="false">http://brainslink.com/?p=2642</guid>
		<description><![CDATA[Is it more important to build the right software or more important to build the software right? The lazy answer is something like &#8220;&#8230;they&#8217;re equally important&#8230;&#8221;. Let&#8217;s not be lazy. [...]]]></description>
				<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-2645" alt="keepright" src="http://brainslink.com/wp-content/uploads/2013/06/keepright.jpg" width="100" height="100" />Is it more important to build the right software or more important to build the software right? The lazy answer is something like <em>&#8220;&#8230;they&#8217;re equally important&#8230;&#8221;</em>. Let&#8217;s not be lazy. Let&#8217;s think about this.</p>
<h3>Build the Right Software</h3>
<p>You can build the world&#8217;s best software system but if it doesn&#8217;t do what the customer needs, you&#8217;ve wasted time and money. For example, if you&#8217;ve built a system to generate comprehensive enterprise reports but the customer needs a system to do big-data analytics, you&#8217;ve failed. The reports may be easy to create and a pleasure to read but without the big-data analytics piece, they&#8217;re lipstick on a pig.</p>
<p>It&#8217;s astounding to me that this happens as often as it does. Everyone seems to think they understand what the &#8220;right software&#8221; is and what it needs to do. Yet when the system is ultimately delivered, key stakeholders conclude that critical features are missing. Then the blame game begins.</p>
<h3>Build the Software Right</h3>
<p>The other perspective is building the software right. Software that does exactly what the customer needs but is unreliable, fails. If the system was built is such a way that it&#8217;s slow and crashes frequently, no one will be happy. It&#8217;s great that it solves the specified business problem but if no one can effectively use it, what&#8217;s the point?</p>
<p>This too happens far more often than it should. There&#8217;s a joke among software developers who say <em>&#8220;It works on my machine.&#8221;</em> Just because the software works well in controlled environments like development and QA doesn&#8217;t mean it will work in real world environments.</p>
<h3>There&#8217;s No Simple Answer</h3>
<p>So which is more important? Would you rather have good, reliable software even it&#8217;s missing critical features and functions or poor, unreliable software that includes all the things you need it to do?</p>
<p>It&#8217;s clearly a rhetorical question. You&#8217;d need a lot more information to answer it. What features are missing? How often does it crash? Can the missing features be added quickly? Can the software defects be fixed readily? Of course, most delivered software systems fall between these two extremes &#8212; some features are missing and some aspects of the software are unreliable but, in general, things usually work fairly well.</p>
<p>Here&#8217;s the problem. When features and functions are left out &#8212; completely left out as in no one considered them &#8212; adding them to the system after delivery may be an incredible amount of work. The software may need to be deconstructed and rebuilt to include the missing pieces. Imagine building a house and failing to include a bathroom at the far end of the structure. Carving out the space and running the piping could be an enormous job. It would have been simple when the house was merely a shell, but not now.</p>
<p>Reliability problems discovered late in the effort are not so easily corrected either. I&#8217;ve seen software systems taken apart and reconstructed to resolve performance problems. I&#8217;ve seen defects that appeared to be minor result in major changes to the code. Imagine that bathroom again. If the plumbing and electrical services are inadequate to meet the needs of the bathroom fixtures, major rework will be needed to upgrade those systems. It will be highly disruptive.</p>
<h3>You Can Have It All</h3>
<p>It appears that the lazy answer &#8212; <em>&#8220;&#8230;they&#8217;re equally important&#8230;&#8221;</em> &#8212; may be the best answer. We need to define the software right and we need to build it right. Ultimately, it takes both to deliver great software.Why settle for good or adequate when you can deliver great?</p>
<p>How do you do that? Follow basic agile development principles.</p>
<ul>
<li>Be sure that the business and technical teams collaborate early and often.</li>
<li>Deliver working software regularly and schedule formal review meetings to get feedback.</li>
<li>Expect changes and be open to new ideas.</li>
<li>Study software frameworks and good design practices. Use them!</li>
</ul>
<p>photo credit: <a href="http://www.flickr.com/photos/70815929@N07/6407288121/">marsmet471</a> via <a href="http://photopin.com">photopin</a> <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/">cc</a></p>
]]></content:encoded>
			<wfw:commentRss>http://brainslink.com/2013/06/even-when-you-build-the-right-software-you-can-still-get-it-wrong/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scrum Isn&#8217;t the Problem But You Might Be</title>
		<link>http://brainslink.com/2013/06/scrum-isnt-the-problem-but-you-might-be/</link>
		<comments>http://brainslink.com/2013/06/scrum-isnt-the-problem-but-you-might-be/#comments</comments>
		<pubDate>Fri, 07 Jun 2013 01:54:18 +0000</pubDate>
		<dc:creator>Vin</dc:creator>
				<category><![CDATA[People]]></category>

		<guid isPermaLink="false">http://brainslink.com/?p=2635</guid>
		<description><![CDATA[Some people claim that Scrum is incomplete, unpredictable and chaotic. Sadly, it&#8217;s all true and the same can be said about waterfall, Kanban, Lean, XP and every other approach to [...]]]></description>
				<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-2638" alt="chaos" src="http://brainslink.com/wp-content/uploads/2013/06/chaos.jpg" width="136" height="192" />Some people claim that Scrum is <em>incomplete, unpredictable and chaotic</em>. Sadly, it&#8217;s all true and the same can be said about waterfall, Kanban, Lean, XP and every other approach to building software systems. People making such comments are looking for a step-by-step approach to guaranteed software development success. (If I could define such an approach, I&#8217;d make millions as a consultant, author and speaker!)</p>
<p>But the news isn&#8217;t all depressing. Scrum provides excellent guidelines for delivering great software. Let&#8217;s look st those perceived problems more closely.</p>
<p><strong>Scrum is incomplete</strong> &#8212; and so is every other software development approach I&#8217;ve ever seen. Any approach that has wide applicability will be incomplete when applied to your specific situation. Your environment, people and business rules are unique. If you&#8217;re looking for a development approach customized to your situation, you need to hire a consultant/coach to work with you for several months or more.</p>
<p><strong>Scrum is unpredictable</strong> &#8212; when the people using it are not disciplined. Don&#8217;t blame Scrum if your backlog is out of control. Don&#8217;t blame Scrum if you can&#8217;t predict what will get released when. No development approach will make up for your lack of discipline. People solve problems. People deliver software. Scrum can help enforce some discipline but people need to be fully engaged in the effort and properly trained.</p>
<p><strong>Scrum is chaotic</strong> &#8212; when no one steps up and provides leadership. Teams need oversight and direction. Scrum offers opportunities to oversee and direct every day &#8212; if applied correctly and supported by a good Scrum Master and a strong Product Owner. If the development team implements Scrum without adequate business support, it will indeed look like the developers are out of control.</p>
<h3>Software development is not easy.</h3>
<p>Wouldn&#8217;t it be great if there was a pill for software development? Give two of them to each developer every day for six weeks and out pops great software! Crazy, right? Yet, that seems to be what many people are looking for. They want a simple, lightweight, development process that includes step-by-step instructions and delivers great software.</p>
<h3>Delivering great software is hard work.</h3>
<p>Software development is highly complex and so are the risks. The degree of complexity and level of risk reflect your underlying business model. Small firms with simple needs can build simple software systems with relatively little risk. Large firms with complex needs have to build complex software systems and take bigger risks.</p>
<p>Thankfully, there are huge benefits to companies and their shareholders when software teams deliver what the business needs. It&#8217;s usually well worth the risk.</p>
<p>Let&#8217;s stop blaming the approach and the tools when software projects fail. In the end, people make all the difference. If your people are misaligned with your approach, you will fail. It doesn&#8217;t matter which development approach you select. Stop blaming your approach. Start training and supporting your people.</p>
<p>photo credit: <a href="http://www.flickr.com/photos/davidr_/6467975081/">DavidR_</a> via <a href="http://photopin.com">photopin</a> <a href="http://creativecommons.org/licenses/by-nc/2.0/">cc</a></p>
]]></content:encoded>
			<wfw:commentRss>http://brainslink.com/2013/06/scrum-isnt-the-problem-but-you-might-be/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Projects Can Be Like Combat and Scope Is the DMZ</title>
		<link>http://brainslink.com/2013/06/software-projects-can-be-like-combat-and-scope-is-the-dmz/</link>
		<comments>http://brainslink.com/2013/06/software-projects-can-be-like-combat-and-scope-is-the-dmz/#comments</comments>
		<pubDate>Wed, 05 Jun 2013 01:56:50 +0000</pubDate>
		<dc:creator>Vin</dc:creator>
				<category><![CDATA[Business]]></category>

		<guid isPermaLink="false">http://brainslink.com/?p=2628</guid>
		<description><![CDATA[Change of scope. I&#8217;m sure you&#8217;ve heard that phrase before. In some companies, it&#8217;s ubiquitous. In fact, some project managers love scope changes because they offer opportunities to adjust the [...]]]></description>
				<content:encoded><![CDATA[<p><em><img class="alignleft size-full wp-image-2630" alt="dmz" src="http://brainslink.com/wp-content/uploads/2013/06/dmz.jpg" width="180" height="240" />Change of scope.</em> I&#8217;m sure you&#8217;ve heard that phrase before. In some companies, it&#8217;s ubiquitous. In fact, some project managers love scope changes because they offer opportunities to adjust the schedule. The sinister sister of scope changes is <em>&#8220;scope creep&#8221;</em>.</p>
<p>What is scope creep? It&#8217;s a risk faced by projects that try to lock down the business requirements at the outset of a project. Once the requirements are locked, any request that results in additional work causes scope creep. Every time the business stakeholders change a requirement or add a new one the project manager yells &#8220;change in scope&#8221; to squeeze more time and money out of the business.</p>
<p>Unmanaged scope creep is bad because if work is added without extending the schedule or allocating additional people, the risk of failure increases. In theory, if scope is properly managed, it cannot creep &#8212; approved changes with associated impact assessments don&#8217;t increase risk.</p>
<h3>You stay on your side. I&#8217;ll stay on mine.</h3>
<p>Unfortunately, scope often becomes a kind of demilitarized zone between the business and development teams. The business team encroaches into the DMZ in search of capability they need but may have omitted. The development team fights back claiming the requested capability is additional work requiring a change request and schedule/budget increases. Each side digs in to protect its interests.</p>
<p>Agile software development projects don&#8217;t have to deal with scope creep because they let scope float. It&#8217;s a fallacy to believe that scope can be locked down on any enterprise-scale project. It&#8217;s impossible. Business people cannot predict the future. Their needs are constantly evolving and growing. What they need today &#8212; <em>right now</em> &#8212; will not be the same as what they&#8217;ll need in a few weeks or months.</p>
<h3>Gold plating only makes it worse.</h3>
<p>Some businesses attack the prediction issue by piling on software features in anticipation of what their needs will be in the future. That&#8217;s called <em>gold plating</em> and it&#8217;s equally bad. Gold plating the requirements results in bloated software that takes longer to deliver and is harder to use. Worst of all, it&#8217;s unlikely to meet the predicted needs of a rapidly growing business.</p>
<p>The scope of an enterprise-scale project cannot be fully determined and locked down at the outset. Any attempt to do so is foolhardy. It&#8217;s time to abandon the concept of scope creep. If scope isn&#8217;t locked down, it can&#8217;t creep. We also eliminate the need for change control and all the paperwork and review cycles that go with it.</p>
<p>Schedule and budget can and should be tightly controlled. Go ahead. Establish an end date (with some intermediate milestones). Allocate funding with a not-to-exceed dollar figure. Let scope float as needed to hit the date and meet the budget.</p>
<p>It&#8217;s less combative and it&#8217;s much easier to manage.</p>
<p>photo credit: <a href="http://www.flickr.com/photos/petirrojo/3986134394/">Petirrojo</a> via <a href="http://photopin.com">photopin</a> <a href="http://creativecommons.org/licenses/by-nc/2.0/">cc</a></p>
]]></content:encoded>
			<wfw:commentRss>http://brainslink.com/2013/06/software-projects-can-be-like-combat-and-scope-is-the-dmz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Successful Team Building Is an Agile Process</title>
		<link>http://brainslink.com/2013/06/successful-team-building-is-an-agile-process/</link>
		<comments>http://brainslink.com/2013/06/successful-team-building-is-an-agile-process/#comments</comments>
		<pubDate>Mon, 03 Jun 2013 02:08:19 +0000</pubDate>
		<dc:creator>Vin</dc:creator>
				<category><![CDATA[People]]></category>

		<guid isPermaLink="false">http://brainslink.com/?p=2621</guid>
		<description><![CDATA[You&#8217;ve likely heard of Tuckman&#8217;s stages of group development. If you haven&#8217;t, there&#8217;s a nice summary on Wikipedia. I&#8217;d to focus your attention on ways to accelerate the team-building process [...]]]></description>
				<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-2624" alt="desertcamel" src="http://brainslink.com/wp-content/uploads/2013/06/desertcamel.jpg" width="156" height="240" />You&#8217;ve likely heard of Tuckman&#8217;s stages of group development. If you haven&#8217;t, there&#8217;s a nice summary on <a href="http://en.wikipedia.org/wiki/Tuckman%27s_stages_of_group_development" target="_blank">Wikipedia</a>. I&#8217;d to focus your attention on ways to accelerate the team-building process for software development teams.</p>
<p>Tuckman articulates four stages of team building &#8212; <em>forming, storming, norming and performing</em>. In the forming stage, most people tread carefully. They are getting to know each other and want to be accepted. In the storming stage, people let their feelings out. Some are likely to argue and even confront those with whom they disagree. This can be unsettling to the quiet types on the team.</p>
<p>In the norming stage, cooler heads prevail. People try to work things out and accept ideas they may not be entirely comfortable with. They recognize that the success of the team transcends their individual success. Finally, in the performing stage, teams begin to function as a unit. Team members help each other out and classic swarming behavior manifests itself. Only performing teams can be self-organizing &#8212; as specified in the <em>agile manifesto</em>.</p>
<p style="padding-left: 30px;"><em>Note: Tuckman later added a fifth stage, adjourning. That&#8217;s when the team is disbanded either because the project is done or the company abandons it. I&#8217;ll ignore this final stage for this post.</em></p>
<h3>It&#8217;s a Process</h3>
<p>Clearly, it&#8217;s not easy or quick for go from forming to performing. It&#8217;s not necessarily a linear progression either. Teams may get stuck in a stage or even revert back to an earlier stage and be forced to try again. How does that happen?</p>
<p>Adding a team member or replacing one creates a whole new dynamic. Teams will usually drop back one stage or even go back to the beginning of the process. The good news is that they may advance through the stages more quickly so the setback doesn&#8217;t have to be severe.</p>
<p>Managers may also disrupt the process. When team members are storming (i.e. arguing), many managers will feel the need to intervene and settle the differences. It seems like the right thing to do but it sets the expectation that the manager will settle every dispute. This traps the team in the storming stage &#8212; a stage they may never be able to exit.</p>
<h3>The Team Needs to Take Control</h3>
<p>It&#8217;s for this very reason that command-and-control development processes inhibit the formation of high-performing teams. Everyone expects the organizational manager to make decisions, break deadlocks, and resolve conflicts. The team merely carries out instructions. They avoid taking any risks and they avoid taking (individual) responsibility for many of their actions. Everything is decided either by management or by consensus.</p>
<p>If management makes the decisions, there will be a major bottleneck. If consensus makes the decisions, the process will be slow and will likely result in the infamous <em>&#8220;design by committee&#8221;</em> solution (whereby everyone gets something they want and the resulting product is a hodge podge).</p>
<h3>Team Building Needs to Be Agile</h3>
<p>To get software development teams to the performing stage fast, start delivering working software as soon as possible. Teams need to feel comfortable taking risks. They need to fail fast, recover quickly and learn from every experience. Agile development techniques should prevail.</p>
<p>In the forming stage, leadership is essential &#8212; even if it&#8217;s an organizational manager doing the leading. Preferably, the Scrum Master or Product Owner will step up and make decisions. Get everyone on the team engaged in the effort as quickly as possible.</p>
<p>In the storming stage, the team needs to sort things out. The SM or PO should offer guidance and let the team work out the final decisions. There&#8217;s a danger that one or more team members will intimidate others or timid members may simply not speak up. The SM and PO can help calm nerves and draw everyone out. It&#8217;s fine to enforce a code of conduct on the team.</p>
<p>In the norming stage, team members become more open and collaborative. They begin asking for help. The team acknowledges that small failures are accepted. The focus is on continuous improvement not achieving perfection. The SM and PO can focus on their responsibilities letting the team run itself.</p>
<p>Finally, in the performing stage, agile teams become self-organizing. They work together openly and rush to help anyone that needs it. The SM and PO are there to advise and guide the team.</p>
<p>This process will take more than one sprint. Be supportive and give the team a little time to reach the performing stage.</p>
<p>photo credit: <a href="http://www.flickr.com/photos/heardsy/4955757941/">Mark Heard</a> via <a href="http://photopin.com">photopin</a> <a href="http://creativecommons.org/licenses/by-nc/2.0/">cc</a></p>
]]></content:encoded>
			<wfw:commentRss>http://brainslink.com/2013/06/successful-team-building-is-an-agile-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Triple-H Weather and Triple-H Projects Have Lots In Common</title>
		<link>http://brainslink.com/2013/05/triple-h-weather-and-triple-h-projects-have-lots-in-common/</link>
		<comments>http://brainslink.com/2013/05/triple-h-weather-and-triple-h-projects-have-lots-in-common/#comments</comments>
		<pubDate>Fri, 31 May 2013 01:51:25 +0000</pubDate>
		<dc:creator>Vin</dc:creator>
				<category><![CDATA[Technique]]></category>

		<guid isPermaLink="false">http://brainslink.com/?p=2614</guid>
		<description><![CDATA[The weather pattern has quickly changed from winter into summer. We had snow in some parts of New England last week and this week we have the dreaded triple-H weather [...]]]></description>
				<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-2617" alt="hazycity" src="http://brainslink.com/wp-content/uploads/2013/05/hazycity.jpg" width="240" height="135" />The weather pattern has quickly changed from winter into summer. We had snow in some parts of New England last week and this week we have the dreaded triple-H weather &#8212; hazy, hot and humid. The triple-H pattern appears in software development projects too. In fact, it&#8217;s not unusual at all.</p>
<p>Let&#8217;s explore what triple-H weather patterns and triple-H projects have in common. Once we understand the pattern, we can determine what development teams can do to minimize the problems it creates.</p>
<p><strong>Hazy</strong> &#8211; In weather terms, hazy simply means limited visibility. In software terms, it means business requirements are not well-defined. The business stakeholders ask the development team to build a software system but the definition of that <em>&#8216;system&#8217;</em> is vague and/or overly broad.</p>
<p><strong>Hot</strong> &#8211; We all know what hot weather is. Hot software projects are those that have an abundance of senior management attention. This is good and bad. Personally, I like working on high-profile projects. It&#8217;s exciting. However, if a project gets too hot, managers may get unreasonable and overly demanding. When that happens, there&#8217;s too much administrative work and not enough development work.</p>
<p><strong>Humid</strong> &#8211; Humidity is a measure of moisture content in the air. Humid air makes it harder to breathe. It makes us sweat and generally uncomfortable. When software projects put us under too much pressure, we also get uncomfortable and stressed out. We hurry and we&#8217;re prone to making mistakes.</p>
<h3>Triple-H projects require special handling.</h3>
<p>So if you get assigned to a triple-H project or your current project turns into a triple-H one, what should you do? The specifics will depend upon your situation, but here are some general guidelines.</p>
<p><strong>Hazy</strong> &#8211; Business requirements need to be specific whether they&#8217;re in the form of requirements documentation or user stories. The software team doesn&#8217;t need to know every detail for the entire development effort. But at a minimum, they need to know what to do next. The short-term needs have to be clear and detailed. The long-term needs can be refined as they move up the queue. If the requirements for the next release are hazy, push back on the business stakeholders. Ask specific, detailed questions to pin down what features they need in the next release.</p>
<p><strong>Hot</strong> &#8211; Hot projects can be tough. Lots of management attention can wear a team down. Telling senior managers to <em>back off</em> is not an option. You need to show that the team has the project under control. Start by communicating regularly. Be open about what is being done and why. When you&#8217;re asked questions you don&#8217;t have answers to, say so. Explain why the answers are unknown and estimate when you&#8217;ll have the answers. You need to build confidence in the team and everyone on it.</p>
<p><strong>Humid</strong> &#8211; Being under a lot of pressure causes plenty of problems. Mental activities are disrupted. Physical functions are stressed. Emotions are maxed out. In these situations, teamwork gives way to combat. It&#8217;s important to diffuse the tension. Get everyone focused on the things the team can control. Tune out the noise. Deliver working software and everyone will feel better.</p>
<p>photo credit: <a href="http://www.flickr.com/photos/canihazit/8355880736/">canihazit</a> via <a href="http://photopin.com">photopin</a> <a href="http://creativecommons.org/licenses/by-nc-nd/2.0/">cc</a></p>
]]></content:encoded>
			<wfw:commentRss>http://brainslink.com/2013/05/triple-h-weather-and-triple-h-projects-have-lots-in-common/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>To Build Better Software, Exploit the Fun Factor</title>
		<link>http://brainslink.com/2013/05/to-build-better-software-exploit-the-fun-factor/</link>
		<comments>http://brainslink.com/2013/05/to-build-better-software-exploit-the-fun-factor/#comments</comments>
		<pubDate>Wed, 29 May 2013 02:10:42 +0000</pubDate>
		<dc:creator>Vin</dc:creator>
				<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://brainslink.com/?p=2602</guid>
		<description><![CDATA[I&#8217;d like to draw a couple of analogies between software development and learning a new skill such as playing the piano or speaking a new language. Bear with me and [...]]]></description>
				<content:encoded><![CDATA[<p><img class="alignleft  wp-image-2603" alt="partytime" src="http://brainslink.com/wp-content/uploads/2013/05/partytime.jpg" width="207" height="138" />I&#8217;d like to draw a couple of analogies between software development and learning a new skill such as playing the piano or speaking a new language. Bear with me and hopefully you&#8217;ll gain new insights into the benefits of agile development over waterfall development.</p>
<p>Have you ever taken piano lessons? Or, have you ever taken classes to learn a new language? If not, maybe you know someone who has. These types of learning situations can be tedious and boring when using old school techniques. In fact, many people give up because they can&#8217;t deal with the monotony.</p>
<p>Take piano lessons, for example. You want to learn how to play the piano. That is, you want to play some songs. Yet, the lessons begin by teaching you how to read music or telling you how a piano works. Most people really don&#8217;t care. They don&#8217;t expect to become concert hall pianists. They just want to play a few songs and have some fun!</p>
<p>The same kind of thing happens when learning a new language. Lessons begin with the alphabet followed by spelling and grammar principles. Again, most people don&#8217;t care. They&#8217;re not interested in becoming translators for the United Nations. You just want to carry out a brief, simple conversation such as asking for directions.</p>
<h3>We crave a sense of accomplishment.</h3>
<p>Thankfully, many teachers have figured out that learning has to be fun. They&#8217;ve discovered that it&#8217;s important to get students doing what they want to do early in the process. The piano student is taught to play simple songs as quickly as possible. The language student is taught to speak simple sentences early on. These techniques provide a sense of accomplishment and encourage students to try harder. The tedium of music sheets or proper spelling are interwoven with the fun stuff.</p>
<p>Both sides benefit. The teacher has fewer dropouts and the students learn more.</p>
<h3>It&#8217;s the same with software development.</h3>
<p>Now consider software development. The business stakeholders identify a software need. Managers assemble a software development team. The business community wants to begin working with the new software as soon as possible. The development team wants to begin writing the software almost immediately.</p>
<p>What usually happens instead? The development team is forced to write lengthy specification documents, conduct review meetings, revise documentation, seek approvals &#8212; blah, blah, blah. The developers are unhappy because they aren&#8217;t doing what they enjoy and value most. The business community is unhappy because they are supplying enormous amounts of information and getting nothing useful in return.</p>
<p>This old school technique is based on waterfall development principles. Is it any wonder that both software developers and business stakeholders lose interest in the project and move on?</p>
<p>Learn a lesson from modern piano and language teachers. <em>Exploit the fun factor.</em> Let the developers build something quickly. Engage the business community with working software as soon as possible. Everyone feels better and actively participates. The quality of the end product improves. That&#8217;s agile! It&#8217;s common sense, right?</p>
<p>photo credit: <a href="http://www.flickr.com/photos/loesenlodewijk/2841188258/">LodewijkB</a> via <a href="http://photopin.com">photopin</a> <a href="http://creativecommons.org/licenses/by-nc/2.0/">cc</a></p>
]]></content:encoded>
			<wfw:commentRss>http://brainslink.com/2013/05/to-build-better-software-exploit-the-fun-factor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
