<?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>Fri, 18 May 2012 01:58:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Define Audiences, Specify Outcomes, or Failure Will Stalk You</title>
		<link>http://brainslink.com/2012/05/define-audiences-specify-outcomes-or-failure-will-stalk-you/</link>
		<comments>http://brainslink.com/2012/05/define-audiences-specify-outcomes-or-failure-will-stalk-you/#comments</comments>
		<pubDate>Fri, 18 May 2012 01:58:15 +0000</pubDate>
		<dc:creator>Vin</dc:creator>
				<category><![CDATA[Business]]></category>

		<guid isPermaLink="false">http://brainslink.com/?p=1606</guid>
		<description><![CDATA[There are two areas of software development that are often overlooked or under emphasized. They are defining your target audience (or end-user personas) and specifying your promised outcomes (or business [...]]]></description>
			<content:encoded><![CDATA[<p>There are two areas of software development that are often overlooked or under emphasized. They are <em>defining your target audience</em> (or end-user personas) and <em>specifying your promised outcomes</em> (or business goals).</p>
<p>We need to be specific about our target audiences and promised outcomes. It comes down to setting expectations. You can deliver what you documented but the project can still fail simply because the business was expecting something else. Don&#8217;t let that happen.</p>
<h3>Target Audience</h3>
<p>Can you describe the target audience for your software? There are an immense number of possibilities and that&#8217;s why you need to narrow it down. Here are a few general categories:</p>
<ul>
<li>Business User</li>
<ul>
<li>Desktop</li>
<li>Mobile</li>
</ul>
<li>Technical User</li>
<ul>
<li>Desktop application</li>
<li>Server application</li>
</ul>
<li>Knowledge Level</li>
<ul>
<li>Novice</li>
<li>Expert</li>
</ul>
<li>Income Level</li>
<ul>
<li>Poor</li>
<li>Wealthy</li>
</ul>
<li>Physical Attributes</li>
<ul>
<li>Healthy, no significant medical issues</li>
<li>Physically impaired (including advanced age)</li>
</ul>
</ul>
<p>There are lots of ways to slice and dice your user base. You might be inclined to say that anyone can use your software. It&#8217;s a platform open to everyone. That&#8217;s the wrong answer and here are two examples showing why.</p>
<p>Facebook and Twitter can claim to have universal appeal. Some people use them for business, others for pleasure. However, both services have a small percentage of <em>hard-core users</em>. Those are the people that spread the word, draw in others, and ultimately increase the popularity of both services. Without the hard-core users, neither service could flourish. Who are they?</p>
<p>Who are your hard-core users? Can you describe them in detail? If not, you&#8217;re likely trying to please everyone. You won&#8217;t.</p>
<h3>Promised Outcomes</h3>
<p>What promises are you making to your end users, paying customers, or corporate clients? Software offers many promises. Here are a few examples:</p>
<ul>
<li>Faster workflow</li>
<li>Fewer mistakes</li>
<li>Simpler work activities</li>
<li>Automation of manual activities</li>
<li>Integration with other corporate or cloud services</li>
<li>Lower costs</li>
<li>Improved reporting</li>
</ul>
<p>The people using your software deserve to know precisely what to expect. Don&#8217;t simply offer them a smorgasbord of new features, enhancements and bug fixes. If you know your target audience, you know their needs. Tell them how the new software will satisfy those needs.</p>
<p>By doing so, you&#8217;ll get people to listen. They&#8217;ll want to know more. Excitement will build. They&#8217;ll be engaged in the effort.</p>
<p>What promises are you making? Can you articulate them in clear business terms?</p>
<p>Don&#8217;t let failure stalk your projects. In this case, the development approach doesn&#8217;t matter. Scrum, Kanban, Lean, XP and waterfall can suffer the same fate. If you can&#8217;t answer the questions above, find someone in the organization who can and enlist that person&#8217;s help today.</p>
]]></content:encoded>
			<wfw:commentRss>http://brainslink.com/2012/05/define-audiences-specify-outcomes-or-failure-will-stalk-you/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hidden Assumptions Can Take Down Your Project</title>
		<link>http://brainslink.com/2012/05/hidden-assumptions-can-take-down-your-project/</link>
		<comments>http://brainslink.com/2012/05/hidden-assumptions-can-take-down-your-project/#comments</comments>
		<pubDate>Wed, 16 May 2012 01:31:10 +0000</pubDate>
		<dc:creator>Vin</dc:creator>
				<category><![CDATA[Principle]]></category>

		<guid isPermaLink="false">http://brainslink.com/?p=1600</guid>
		<description><![CDATA[What are you assuming? Every project plan, user story and task list contains assumptions. An assumption is something that&#8217;s taken for granted by the software development team &#8212; something presumed [...]]]></description>
			<content:encoded><![CDATA[<p>What are you assuming? Every project plan, user story and task list contains assumptions. An <em>assumption</em> is something that&#8217;s taken for granted by the software development team &#8212; something presumed to be true. This is in contrast to risks, in that <em>risks</em> are adverse events that we believe are unlikely to occur.</p>
<p>Some assumptions will be obvious and others will be obscure. If an assumption proves to be wrong, the team will be adversely impacted. (That would be a risk.) Here are a few examples of <strong>obscure or hidden assumptions</strong>:</p>
<ul>
<li>The team will remain intact for the duration of the project.</li>
<li>Computer systems and data will be available to the team when needed.</li>
<li>Development tools and technology infrastructure will be adequate to support the project.</li>
<li>People outside the core team will be available when needed.</li>
<li>Outside parties (e.g. vendors, suppliers, business partners, etc.) will deliver as promised.</li>
<li>User stories have been properly scoped and estimated.</li>
<li>Task lists are thorough.</li>
<li>The definition-of-done covers the needs of every story.</li>
<li>Any team member will be able to select any story and complete it.</li>
<li>Team members have adequate knowledge and training to complete the project.</li>
</ul>
<p>You get the idea. We all make a variety of assumptions when making plans and commitments. Usually, those assumptions prove to be correct but not always. And, the more assumptions the team makes, the greater the likelihood that something won&#8217;t go as planned. (A risk event will be realized.)</p>
<p>One reason why so many development projects take longer than planned is simply because one or more assumptions proves wrong and the team has to scramble to address an unplanned issue. For that reason, it&#8217;s a good idea to take a moment to think through the development team&#8217;s assumptions.</p>
<p>Ask yourself if the project goals and timeline seem reasonable? Is the team ready? Is the environment suitable? Are people outside the core development team engaged? <strong>What&#8217;s missing?</strong></p>
<p>Projects tend to take more time than we expect simply because most of us are optimists &#8212; we want to believe. Don&#8217;t give up your optimism. Just take a little time to validate it.</p>
]]></content:encoded>
			<wfw:commentRss>http://brainslink.com/2012/05/hidden-assumptions-can-take-down-your-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Outcomes Matter, Test Results Don&#8217;t</title>
		<link>http://brainslink.com/2012/05/software-outcomes-matter-test-results-dont/</link>
		<comments>http://brainslink.com/2012/05/software-outcomes-matter-test-results-dont/#comments</comments>
		<pubDate>Mon, 14 May 2012 01:32:04 +0000</pubDate>
		<dc:creator>Vin</dc:creator>
				<category><![CDATA[People]]></category>

		<guid isPermaLink="false">http://brainslink.com/?p=1595</guid>
		<description><![CDATA[How do you determine the success (or not) of a software project? How do you measure the final outcome? How do you know if the project delivered what was expected? [...]]]></description>
			<content:encoded><![CDATA[<p>How do you determine the success (or not) of a software project? How do you measure the final outcome? How do you know if the project delivered what was expected?</p>
<p>You might be inclined to refer to the number of remaining known defects, the number of test cases, the improvements made in the code, the number of new features added, the feedback from the Product Owner, etc. Sadly, those are all the wrong metrics and don&#8217;t measure business outcomes.</p>
<p><strong>What matters is end user perceptions and business value, not internal software metrics.</strong></p>
<p>Real people, conducting real business with the software is the only true measure of outcomes. Here are a few real world examples where software teams thought they did a good job but the users disagreed. (I&#8217;ve avoided specifics to protect the guilty parties.)</p>
<ul>
<li>The software application functioned perfectly but was too slow to be useful by the <em>large</em>, target group. (Performance testing <em>might</em> have caught this.)</li>
<li>The software worked properly but required too much manual data entry. (Useability testing <em>might</em> have caught this.)</li>
<li>The software ran into a conflict with another desktop application meaning some people could not use it. (Additional analysis and testing of the target environments <em>might</em> have caught this.)</li>
<li>The software worked fine but the new workflow actually took longer to get things done than did the old workflow. (Again, useability testing <em>might</em> have caught this.)</li>
</ul>
<p>I&#8217;ve used the phrase <em>&#8220;might have caught this&#8221;</em> above because there is no guarantee that any laboratory testing will catch any particular complex failure scenario. Testing will catch the major problems and the expected ones. The subtle environmental issues are another matter.</p>
<p>This leads me to a more central question. If the ultimate measure of successful outcomes is the users&#8217; perception, why aren&#8217;t teams doing more user testing? It&#8217;s not a simple thing to do. I get that. But, clearly we have to try harder. Here are a few suggestions.</p>
<ul>
<li>If you&#8217;re doing straight beginning to end waterfall, <em><strong>stop</strong></em>! You need to introduce <em>interim deliverables</em>. Break up the waterfall flow into a series of mini-waterfalls that each deliver useful functionality. Or, even better, dump waterfall entirely and switch to Scrum, Kanban, Lean or XP.</li>
<li>If you&#8217;re already doing waterfall iterations, get the software into the hands of the end users sooner and more often. Draw them into the process. <strong><em>Engage them</em>.</strong> Setup a small number of systems where users can stop by anytime and try out the latest build. Have lunch and learn sessions. Get creative. You need real feedback from real people.</li>
<li>If you&#8217;re already using an agile development approach, focus more effort on the needs and concerns of the end users. It&#8217;s not about technology. It&#8217;s about them. <em><strong>Empathize more</strong></em> and they will respond in kind.</li>
</ul>
<p>Recognize that software is a tool not an end game. Real people use software to accomplish something that adds value to their job functions or enhances their personal lives. Laboratory test environments can&#8217;t replicate every real work condition. There are too many variables.</p>
]]></content:encoded>
			<wfw:commentRss>http://brainslink.com/2012/05/software-outcomes-matter-test-results-dont/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Team Velocity Is Not as Simple as It Seems</title>
		<link>http://brainslink.com/2012/05/team-velocity-is-not-as-simple-as-it-seems/</link>
		<comments>http://brainslink.com/2012/05/team-velocity-is-not-as-simple-as-it-seems/#comments</comments>
		<pubDate>Fri, 11 May 2012 02:19:26 +0000</pubDate>
		<dc:creator>Vin</dc:creator>
				<category><![CDATA[Technique]]></category>

		<guid isPermaLink="false">http://brainslink.com/?p=1590</guid>
		<description><![CDATA[The subject of Scrum team velocity can be confusing and controversial. My intent is not to add fuel to the fire but rather, to contribute to the knowledge base around [...]]]></description>
			<content:encoded><![CDATA[<p>The subject of Scrum team velocity can be confusing and controversial. My intent is not to add fuel to the fire but rather, to contribute to the knowledge base around velocity and what it represents.</p>
<p><strong>The simplest way to do this is via an example.</strong></p>
<p>Let&#8217;s say a Scrum team has an average velocity of 20 story points per sprint. Everyone considers that to be a pretty good number. But what does it really mean?</p>
<p>I&#8217;d start by asking how many sprints were completed to arrive at that number. In other words, how many sprints are we using to calculate the average? I&#8217;d also want to know the smallest velocity and the largest one to get a sense of how widely distributed the velocities are. (Excluding the first 2-3 sprints might be wise as Scrum teams often need a few sprints to sync and stabilize as a functional unit.)</p>
<p>These additional parameters are important. If a small number of sprints were used to calculate the average, the team may not have established a repeatable cadence as yet. If the range of velocities per sprint is very wide, I&#8217;d have to wonder if the team is operating well as a whole or simply consists of several developers working near each other.</p>
<p><strong>Now it gets more complicated.</strong></p>
<p>I&#8217;d also ask about story points being created during sprints. These new points could be defects or they might represent functionality that no one thought about in advance but is required before the final release. Either way, if the team completes 20 story points and creates 5, their <em>effective velocity</em> is somewhere between 15 and 20.</p>
<p>If the 5 new story points are bugs, should those points be subtracted from the sprint velocity so 20 points of calculated velocity becomes 15 points of <em>effective velocity</em>?</p>
<p>If some of the newly created points represent new functionality, it gets tricky. New functionality gets added to the product or release backlog depending on when the new functions are needed.</p>
<p>If a new function is critically required before the release is complete, the new points need to be added to the release backlog, thus delaying the final release date. If the new function is optional, the new points can be added to the product backlog and ignored for now. (BTW, a <em>release</em> consists of several <em>sprints</em>.)</p>
<p style="padding-left: 30px;"><em>Inevitable arguments will ensue over whether an issue is a defect or a new function. Let&#8217;s not go there.</em></p>
<p>There is also a more general argument to be made that knowingly adding to technical debt also reduces velocity. So if a developer takes a short cut in the code, he should estimate the story points needed to pay off the debt and that value should be subtracted from the team&#8217;s velocity for that sprint.</p>
<p>This involves a bit of a judgement call in that the team might decide not to pay off the debt anytime soon. Regardless, the technical debt exists and won&#8217;t simply go away.</p>
<p>Velocity is intended to be a simple metric and in principle it is. Unfortunately, nothing about software engineering for enterprise business users is truly simple. Should you track velocity? <strong>Yes.</strong> Should you reduce it as I&#8217;ve described above? Not for a new Scrum team but be aware of the issues and factor them into your retrospectives.</p>
<p>Oh, and please don&#8217;t try to simply compare velocities across multiple Scrum teams. That gets even more complicated!</p>
]]></content:encoded>
			<wfw:commentRss>http://brainslink.com/2012/05/team-velocity-is-not-as-simple-as-it-seems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How Much Project Planning Is Too Much?</title>
		<link>http://brainslink.com/2012/05/how-much-project-planning-is-too-much/</link>
		<comments>http://brainslink.com/2012/05/how-much-project-planning-is-too-much/#comments</comments>
		<pubDate>Wed, 09 May 2012 02:00:39 +0000</pubDate>
		<dc:creator>Vin</dc:creator>
				<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://brainslink.com/?p=1583</guid>
		<description><![CDATA[Does your organization spend weeks and weeks preparing to launch a project? Does it seem like new projects take forever to get off the ground? Have you seen projects get [...]]]></description>
			<content:encoded><![CDATA[<p>Does your organization spend weeks and weeks preparing to launch a project? Does it seem like new projects take forever to get off the ground? Have you seen projects get cancelled after months of planning but no implementation activity? </p>
<p>I&#8217;ve seen it all and it can get ugly. As a general rule, planning and analysis should take no more than 20% of the time for the entire project. I&#8217;ve see that number go over 50% in some cases. For example, 6 weeks of planning and analysis for a 12-week project. That extra planning time delays the solution implementation and may prove to be very expensive.</p>
<p>I&#8217;ve even seen teams put together lengthy and detailed plans simply because they were required to do so. Once the projects got rolling, the plans were ignored and the teams operated day to day. (I don&#8217;t recommend that approach.)</p>
<p><strong>The Law of Diminishing Returns</strong></p>
<p>If something truly new and innovative is being done, additional planning time makes sense. Even if it&#8217;s not innovative but complex, more planning might help. But if the project is a variation of something that&#8217;s been done before, 20% is more than enough time to plan. So, why does all this extra planning occur?</p>
<p>Planning, like any other business effort, succumbs to the law of diminishing returns. All it means is that it&#8217;s relatively easy to throw together a high-level plan. Many of us have done it during a one-hour planning meeting. You may have 60-80% of the plan in place in a few hours or a few days at most. Now comes the hard part. The details of the plan. Ironing out the remaining 20-40% of the plan could take weeks. Is it worth it?</p>
<p><strong>Plan less. Deliver more. Gather feedback and repeat. That&#8217;s how to be agile. Here are a few guidelines:</strong></p>
<ul>
<li>Prioritize. What are the most important goals for the project? What are the high-risk areas? Those items may need more planning.</li>
<li>Resist the urge to pile items onto the planning list. A long list of planning items doesn&#8217;t make a good plan.</li>
<li>Remember that a complex plan will require more effort to track, maintain and adjust, increasing the project&#8217;s administrative overhead.</li>
<li>Don&#8217;t get lost in the planning jungle. The goal is to deliver a business solution not to create a beautiful plan with lots of checkboxes, charts and graphs.</li>
<li>Fewer people will likely deliver a better plan. Involve people who have unique knowledge or skills.</li>
<li>If you&#8217;re unsure of something and cannot adequately plan ahead, allocate time during the project to adjust the plan.</li>
<li>Add new requirements, stories, etc, to the backlog as you go. You don&#8217;t have to define everything up front.</li>
</ul>
<p>Planning is a good thing. Just don&#8217;t get carried away. You&#8217;ll end up changing it anyway.</p>
]]></content:encoded>
			<wfw:commentRss>http://brainslink.com/2012/05/how-much-project-planning-is-too-much/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guest Post: How Technology Can Help in Your Business Development</title>
		<link>http://brainslink.com/2012/05/how-technology-can-help-in-your-business-development/</link>
		<comments>http://brainslink.com/2012/05/how-technology-can-help-in-your-business-development/#comments</comments>
		<pubDate>Mon, 07 May 2012 01:38:32 +0000</pubDate>
		<dc:creator>Vin</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://brainslink.com/?p=1579</guid>
		<description><![CDATA[Today, technology has become so advanced that it can greatly contribute to the development and productivity of the business. One needs to research, analyze and understand how technology can greatly [...]]]></description>
			<content:encoded><![CDATA[<p>Today, technology has become so advanced that it can greatly contribute to the development and productivity of the business. One needs to research, analyze and understand how technology can greatly assist in boosting one’s business.</p>
<p><strong>Communication</strong></p>
<p>Communication is the most important aspect in any business. One can improve communication or be in touch with business clients, customers, employees by making use of the technology. Today, every person owns a Smartphone or mobile phone with camera facility. One can see and communicate face to face using video conferencing. You can view the other person, listen to and put your point forward to the target person, irrespective of their geographic location in the globe. Chatting via video conferencing gives more impact than a traditional phone call. One can explain about one’s new product and show its working and benefits to others. One can have business meetings via phone, instead of meeting in a particular place, thereby removing the barriers of boundary.</p>
<p><strong>Accessibility</strong></p>
<p>Many employees need to travel frequently as a part of their job. They need updated information to perform their job. Mobile phones and wireless technology have paved ways for this. One can access any information one needs and contribute to the productivity of the organization. Also, technology has developed so well that employees can be allotted seats only when they need to be physically present. Many employees can use the same seat on a gyratory basis. This greatly reduces the cost as the organization need not expand the workspace physically to accommodate the growing number of employees. Since the employees are in constant touch with their superiors, they can work effectively without any delay in acquiring official information.</p>
<p><strong>Employee Monitoring</strong></p>
<p>Many organizations provide mobile phones to their employees. The employers can install <a href="http://cellspytool.com/" target="_blank">mobile spy</a> on the mobile phones before giving it to their employees. This helps them to trace the activities of the employees. The organization can get access to the phone calls made and received, messages sent and received, websites visited, chat history, browsing history etc. It also helps to find the employees location at a specific time. Monitoring the activities drives the employees to consciously contribute to the productivity of the organization, also to know if any of the employees are involved in leaking company’s confidential data.</p>
<p><strong>Customers</strong></p>
<p>Technology has advanced so well that it helps to satisfy the customer needs. It helps to understand clearly what customers’ needs are and how they want them. For instance, when a customer calls the organization for any queries, technology can be used to set up a system which would give solutions to the queries of the customer by tracing the customer details that were previously recorded. The employee in turn can communicate to the customer appropriately and satisfy their queries and improve the relationship with the customer. This helps to boost sales and improve the business profit.</p>
<p>Apart from boosting sales, technology has gone a step ahead in building good customer relationship. The job of an organization never ends with making a sale to the customer, the business can benefit only if they have repeated sales. If a customer is satisfied with the product or service, they would keep coming again and again. This is possible only by maintaining a constant touch with the customers. Applications are available which help to monitor the sales, discover the customers’ tastes and practices and the reason why they like to come back. Thus, technology helps to take business to the next level.</p>
<p><em>Lucille J Cronk is a blogger who loves to blog on technology and mobile spy tool. You will get all the information related to mobile spy tools and its relevant benefits at her blog.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://brainslink.com/2012/05/how-technology-can-help-in-your-business-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Legacy Code Is a Tangled Web for Agile Developers</title>
		<link>http://brainslink.com/2012/05/legacy-code-is-a-tangled-web-for-agile-developers/</link>
		<comments>http://brainslink.com/2012/05/legacy-code-is-a-tangled-web-for-agile-developers/#comments</comments>
		<pubDate>Fri, 04 May 2012 02:34:03 +0000</pubDate>
		<dc:creator>Vin</dc:creator>
				<category><![CDATA[Technique]]></category>

		<guid isPermaLink="false">http://brainslink.com/?p=1573</guid>
		<description><![CDATA[What is one of the biggest impediments to adopting agile development? It&#8217;s a bit of a rhetorical question because there are many answers, with cultural issues being high on the [...]]]></description>
			<content:encoded><![CDATA[<p>What is one of the biggest impediments to adopting agile development? It&#8217;s a bit of a rhetorical question because there are many answers, with cultural issues being high on the list.</p>
<p>For this post, I&#8217;d like to focus on legacy software. Every established company has software systems that are used everyday and may have been in use for years. Regardless of how those systems were developed, any company that decides to take the plunge into agile software development hits an immediate impediment &#8212; all that legacy source code.</p>
<p>I&#8217;ve witnessed many situations where the business stakeholders get excited about doing something new and different yet they want all the old features, functions and data carried forward. What appeared to be a simple and fun software project turns into a <em>tangled web</em>.</p>
<p><strong>What is legacy code?</strong></p>
<p>There is no standard definition of legacy software because code bases vary widely in structure and quality. Here are a few situations where the phrase <em>legacy code</em> applies.</p>
<ul>
<li>Any code base that was not written by the current software team is legacy code.</li>
<li>A code base that has been around for years and serviced by many engineers.</li>
<li>Code that lacks documentation, test cases, or is otherwise difficult to decipher.</li>
</ul>
<p>When trying to enhance legacy software, immediate questions surface. Where should software changes be applied? How do we know the changes will work as intended? How do we know there will not be unintended consequences?</p>
<p>Some teams try to avoid making software changes unless absolutely necessary. While wanting to avoid breaking anything is admirable, avoiding change is not how businesses prosper.</p>
<p>How do agile teams deal with legacy code? There are two high-level approaches to the problem and a seemingly infinite number of variations.</p>
<p><strong>1) Start over. Forget the legacy code.</strong></p>
<p>This approach won&#8217;t sit well with many organizations, but think about it. How has Apple been so successful with the iPhone and iPad? <strong>Because they started over.</strong> Compatibility with legacy software was not the goal. Look at the result!</p>
<p>Now consider Microsoft. What has held them back and prevented them from achieving their full potential in the mobile space? <strong>Backward compatibility.</strong> Microsoft has gone to great lengths to preserve their legacy. The approach has helped them in many ways but it has also hindered their ability to respond to leaner and more agile competitors.</p>
<p>The only way starting over can work is by setting priorities and maintaining a sharp focus on what really matters. Most companies don&#8217;t have the fortitude to pull this off so let&#8217;s look at the alternative.</p>
<p><strong>2) Refactor the legacy code before making changes.</strong></p>
<p>Adding features to fragile software will likely make matters worse. You have to understand and stabilize the legacy code base first. One of the best ways to do that is to start by writing tests. You know what the software does. Write automated tests to dive deep and find out how the software behaves. (Sounds like TDD because it is.)</p>
<p>Consider a complete re-write of all or portions of the system that prove to be incredibly fragile. Focus on interfaces. Write wrapper classes to encapsulate legacy components. Eliminate unused and rarely used features.</p>
<p>None of this will be easy or quick and the pressure to deliver new features will be intense. Find an executive-level sponsor and get adequate levels of funding and staffing.</p>
<p>Legacy code is not going away. Replace it or refactor it. The longer you wait, the more difficult it will be.</p>
]]></content:encoded>
			<wfw:commentRss>http://brainslink.com/2012/05/legacy-code-is-a-tangled-web-for-agile-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Estimates: Are You Feeling Lucky?</title>
		<link>http://brainslink.com/2012/05/software-estimates-are-you-feeling-lucky/</link>
		<comments>http://brainslink.com/2012/05/software-estimates-are-you-feeling-lucky/#comments</comments>
		<pubDate>Wed, 02 May 2012 01:48:35 +0000</pubDate>
		<dc:creator>Vin</dc:creator>
				<category><![CDATA[Technique]]></category>

		<guid isPermaLink="false">http://brainslink.com/?p=1568</guid>
		<description><![CDATA[Estimating the delivery date for a software application can be notoriously difficult. Miscalculations of 100% or more are surprisingly common. Let&#8217;s examine a couple of possible situations. 1) You&#8217;re working [...]]]></description>
			<content:encoded><![CDATA[<p>Estimating the delivery date for a software application can be notoriously difficult. Miscalculations of 100% or more are surprisingly common. Let&#8217;s examine a couple of possible situations.</p>
<p>1) You&#8217;re working in a software-as-a-service environment like <a href="http://salesforce.com/" target="_blank">Salesforce.com</a> or <a href="http://www.microsoft.com/en-us/dynamics/default.aspx" target="_blank">Microsoft Dynamics</a>. The stakeholders want to know how long it will take to add a simple feature. You ask a few questions, indicate where the risks lie (if any), then offer an estimate (probably not more than a week or two).</p>
<p>Barring interruptions, the <em>chances of delivering on time are high</em>. Even if you don&#8217;t deliver exactly what the stakeholders envision, it will likely take only a day or two to fine tune the solution.</p>
<p>2) Now imagine your team needs to build a custom software application. You might use Java, C#, C++, Ruby, PHP, or Perl. There might be software components from prior projects that you can leverage but they&#8217;ll likely need some rework. You&#8217;re asked to estimate a delivery date.</p>
<p>You ask questions and identify risks but the real issue is the <em>lack of business requirements, use cases, or epics</em>. All you have is a description. You might even have a product vision statement, but that&#8217;s unlikely.</p>
<p><strong>Now what?</strong></p>
<p>The team will have to rely upon its experience. Familiarity with the software tool set and the type of application being requested will help in scoping the solution. Of course, the stakeholders need an immediate answer so they can establish a budget for the project. No time for detailed analysis. Now the fun begins.</p>
<p>Assume the team brainstorms for a day or two and estimates that 5 people can deliver the software in 6 months. Six months is about 130 business days. Multiply by 5 people to get 650 person-days or 5,200 person-hours.</p>
<p>Ideally, the team should offer an estimate range rather than a single number. 5,200 hours becomes an official estimate range of between 4,000 (80% of 5,200) and 6,500 (125% of 5,200) hours. (The 80% and 125% numbers are only examples. Smaller or larger values will apply in different situations.) The team also offers lists of assumptions and risks.</p>
<p><strong>Do you see the problems here?</strong></p>
<p>Scenarios like the above play out every day in companies around the world. The stakeholders offer an over-simplified description of what they want. Then they ask, <em>&#8220;How soon can we have it?&#8221;</em></p>
<p>High-level, broad-based software estimates are almost worthless. For a large, complex system, an estimate of X hours may translate to a range of X/2 (50%) to 4X (300%). You read that correctly &#8212; from one half to four times the estimated effort. <em>Where&#8217;s the value in such a wide ranging estimate?</em></p>
<p>Of course, there&#8217;s rarely sufficient time to produce an accurate estimate &#8212; a narrow range. Such an estimate may take anywhere from a couple of weeks to a few months depending upon the situation complexity. Everyone wants instant answers and rapid delivery. There&#8217;s no time to do it right.</p>
<p><strong>What should you do? Go agile!</strong></p>
<p>Tell the business stakeholders what they want to hear. You can deliver the software anytime they want &#8212; as long as they are willing to scale the feature set to align with the timeframe. Once the initial feature set is delivered (on time, by definition), features will continue to be added through a series of incremental releases. When money runs out, the project is over and there&#8217;s little or no waste.</p>
<p>Everybody wins. <strong>And luck isn&#8217;t a critical success factor.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://brainslink.com/2012/05/software-estimates-are-you-feeling-lucky/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple Math Doesn&#8217;t Work in Software Development</title>
		<link>http://brainslink.com/2012/04/simple-math-doesnt-work-in-software-development/</link>
		<comments>http://brainslink.com/2012/04/simple-math-doesnt-work-in-software-development/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 02:41:15 +0000</pubDate>
		<dc:creator>Vin</dc:creator>
				<category><![CDATA[People]]></category>

		<guid isPermaLink="false">http://brainslink.com/?p=1564</guid>
		<description><![CDATA[If building a particular software system is scheduled to take 5 engineers, 6 months, then simple math says that 10 engineers can build the same system in 3 months. (That&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>If building a particular software system is scheduled to take 5 engineers, 6 months, then simple math says that 10 engineers can build the same system in 3 months. (That&#8217;s twice the number of engineers and half the time.)</p>
<p>Okay, okay. I know. Some additional communication overhead will be introduced by adding people to the team. Fine. I&#8217;m in a generous mood. I&#8217;ll give you 4 months. <em>Now get to work.</em></p>
<p><strong>Not so fast.</strong></p>
<p>Simple math doesn&#8217;t always work, particularly when you apply it to complex situations. Also, keep in mind that project estimates are prone to variability and change. A 6-month estimate could represent from 3 to 12 months of work.</p>
<p>Let&#8217;s examine some of the factors that affect the productivity of a group of software engineers.</p>
<ul>
<li>Communication skills</li>
<li>Software engineering experience level</li>
<li>Experience with the toolset</li>
<li>Work environment</li>
<li>Ability to learn</li>
<li>Structure of the system</li>
<li>Availability of business stakeholders and end users</li>
<li>Availability of support personnel to document, deploy, etc.</li>
<li>Availability of target systems to develop, test, etc.</li>
</ul>
<p>You get the idea. Adding software developers is just the tip of the iceberg. Are all the other pieces in place to make adding developers worthwhile? If so, what&#8217;s being done to help this larger team <em>form, storm, norm and perform</em>?</p>
<p><strong>The bigger they are, the harder they fail.</strong></p>
<p>Adding people to an established team at the outset of a project is a questionable idea. As time goes on, the issues listed above only loom larger making adding people well into the project a bad idea. Adding them nearer the end of the project in a mad rush to make up lost time is foolish.</p>
<p>I won&#8217;t say that you should never add people to a software development project but if you do, review the list above and take appropriate actions to support the team. Finally, be realistic. Adding a person may only provide half the benefit that the simple math suggests. Adding more than one could even have a negative impact.</p>
]]></content:encoded>
			<wfw:commentRss>http://brainslink.com/2012/04/simple-math-doesnt-work-in-software-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Peter Principle Is Real But Agile Techniques Can Beat It</title>
		<link>http://brainslink.com/2012/04/the-peter-principle-is-real-but-agile-techniques-can-beat-it/</link>
		<comments>http://brainslink.com/2012/04/the-peter-principle-is-real-but-agile-techniques-can-beat-it/#comments</comments>
		<pubDate>Fri, 27 Apr 2012 02:18:10 +0000</pubDate>
		<dc:creator>Vin</dc:creator>
				<category><![CDATA[People]]></category>

		<guid isPermaLink="false">http://brainslink.com/?p=1558</guid>
		<description><![CDATA[What causes the &#8220;Peter Principle&#8221; to rise up and ruin someone&#8217;s career? According to the principle, named after Dr. Laurence Peter, &#8220;In a hierarchically structured administration, people tend to be [...]]]></description>
			<content:encoded><![CDATA[<p>What causes the <em>&#8220;Peter Principle&#8221;</em> to rise up and ruin someone&#8217;s career? According to the principle, named after Dr. Laurence Peter, &#8220;In a hierarchically structured administration, people tend to be promoted up to their level of incompetence&#8221;.</p>
<p>That&#8217;s a scathing comment. It is often repeated and there are many examples of people who get promoted only to fail in their new jobs. How is it possible that someone who earned a promotion by doing a good job, turns out to be ineffective or incompetent in his new job? Here are a few possibilities.</p>
<ol>
<li>An <em>individual contributor</em> is promoted to <em>manager</em>. It happens all the time. Many workers aspire to be managers. With proper training and coaching along with good people skills, anyone can be a manager. Unfortunately, the training and coaching part is often missing. Another critical success factor (CSF) for managers is the ability to multitask. Without it, the Peter Principle rules.</li>
<li>A <em>subject matter expert</em> (SME) is promoted and assumes responsibilities beyond her core area of expertise. Assuming the new area of responsibility is related to the SME&#8217;s existing knowledge base, taking on a bigger role can work. Of course, the SME will need help and guidance. A good mentor can be invaluable in making the transition. And she will need to master that multitasking CSF.</li>
<li>A great <em>implementer</em> is promoted into the role of <em>designer</em>. Design work is different from implementation work. The skills, tools and approaches are related but not identical. Training and mentoring are key ingredients. Oh, and designers tend to do much more multitasking (CSF).</li>
<li>A <em>technical genius</em> is promoted into a role that requires people skills (e.g. negotiation). Once someone masters the objective part of their job (technical details), that person often wants to try out the subjective (human interaction) part of the job. Fair enough, though the skill sets are usually vastly different. And, anything involving people will invariably require that CSF &#8211; multitasking.</li>
<li>Someone who is accustomed to <em>focusing</em> on a small number of tasks is promoted into job that demands multitasking across a broader array of work. There it is again.</li>
</ol>
<p><strong>Do you see a pattern here?</strong></p>
<p>The lack of training, coaching and/or mentoring is a solvable problem. Why would any company invest time and money in an employee, promote the person, assign her new and more strategic responsibilities, and then drop the ball? <strong><em>It&#8217;s insane!</em></strong> Greatness doesn&#8217;t just happen. It requires constant vigilance.</p>
<p>As for the problem of multitasking, it&#8217;s not going away. When we multitask, we are less efficient. We make more mistakes, miss important details, and forget critical facts.</p>
<p>There&#8217;s a simple solution. It&#8217;s based on the fourth principle of the <em>Agile Manifesto</em> &#8211; &#8220;Business people and developers must work together daily throughout the project.&#8221; It&#8217;s called <strong>teamwork</strong>. The solution to the multitasking problem is teamwork. Share the workload. Divide and conquer. Many hands make light work. Many minds <strong>do</strong> great work.</p>
<p>The next time you get promoted do two things. 1) Get help. Insist on training and mentoring. 2) Don&#8217;t go it alone. Collaborate with your coworkers and team members.</p>
]]></content:encoded>
			<wfw:commentRss>http://brainslink.com/2012/04/the-peter-principle-is-real-but-agile-techniques-can-beat-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

