<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Bayside Incubator</title>
	
	<link>http://baysidetech.com/blog</link>
	<description>Sharing Ideas on Collaboration and Innovation</description>
	<lastBuildDate>Thu, 20 May 2010 18:00:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/BaysideIncubator" /><feedburner:info uri="baysideincubator" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Spec’ing the specs series</title>
		<link>http://feedproxy.google.com/~r/BaysideIncubator/~3/JPuSRLAzXAw/</link>
		<comments>http://baysidetech.com/blog/2010/05/specing-the-specs-series/#comments</comments>
		<pubDate>Thu, 20 May 2010 18:00:49 +0000</pubDate>
		<dc:creator>Dave Konopka</dc:creator>
				<category><![CDATA[software process]]></category>
		<category><![CDATA[team work]]></category>

		<guid isPermaLink="false">http://baysidetech.com/blog/?p=172</guid>
		<description><![CDATA[We&#8217;re interested in software planning processes at Bayside. Earlier this week we published the last in a series of posts covering some of the tools and practices we&#8217;ve found useful on software projects. All three posts are now up and available to read at your convenience.
Spec&#8217;ing the specs series

What should my software do?
Rethink the manual
Keeping [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re interested in software planning processes at Bayside. Earlier this week we published the last in a series of posts covering some of the tools and practices we&#8217;ve found useful on software projects. All three posts are now up and available to read at your convenience.</p>
<h2>Spec&#8217;ing the specs series</h2>
<ul>
<li><a href="http://baysidetech.com/blog/2010/03/specing-the-specs-what-should-my-software-do/">What should my software do?</a></li>
<li><a href="http://baysidetech.com/blog/2010/04/specing-the-specs-rethink-the-manual/">Rethink the manual</a></li>
<li><a href="http://baysidetech.com/blog/2010/05/specing-the-specs-keeping-a-project-on-trackl/">Keeping a project on track</a></li>
</ul>
<p>Hopefully these posts will make you think a little about your own team’s software development process. None of our suggestions are miracle fixes. And most can be tested out separately from the rest. So jump in and give one or two a try. See what works in your organization. </p>
<p>Speak up with your own suggestions and reactions in the comments.</p>
<img src="http://feeds.feedburner.com/~r/BaysideIncubator/~4/JPuSRLAzXAw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://baysidetech.com/blog/2010/05/specing-the-specs-series/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://baysidetech.com/blog/2010/05/specing-the-specs-series/</feedburner:origLink></item>
		<item>
		<title>Spec’ing the specs: Keeping a project on track</title>
		<link>http://feedproxy.google.com/~r/BaysideIncubator/~3/Viyn-R6dzys/</link>
		<comments>http://baysidetech.com/blog/2010/05/specing-the-specs-keeping-a-project-on-track/#comments</comments>
		<pubDate>Tue, 18 May 2010 10:56:47 +0000</pubDate>
		<dc:creator>Dave Konopka</dc:creator>
				<category><![CDATA[software process]]></category>
		<category><![CDATA[team work]]></category>

		<guid isPermaLink="false">http://baysidetech.com/blog/?p=157</guid>
		<description><![CDATA[In two other posts we&#8217;ve covered both how to craft and how to capture a plan when approaching a software project. In this third and final post of the series we&#8217;ll talk a bit about our approach to following that plan when it comes time to execute it.
Collaboration has emerged as the common theme for [...]]]></description>
			<content:encoded><![CDATA[<p>In two other posts we&#8217;ve covered both <a href="http://baysidetech.com/blog/2010/03/specing-the-specs-what-should-my-software-do/">how to craft</a> and <a href="http://baysidetech.com/blog/2010/04/specing-the-specs-rethink-the-manual/">how to capture</a> a plan when approaching a software project. In this third and final post of the series we&#8217;ll talk a bit about our approach to following that plan when it comes time to execute it.</p>
<p>Collaboration has emerged as the common theme for us in designing and developing software. For any plan to have a chance at successful execution, the people charged with building it, the people who will use it, and the people who have expert knowledge about the business behind it need to work together from start to finish.</p>
<p>Collaboration certainly shouldn&#8217;t stop once developers start writing code.<br />
<span id="more-157"></span></p>
<h2>Determine features, schedule priorities</h2>
<p>During the planning process your team will have defined what the new application should do. The next step is identifying chunks of releasable features. Rolling out useable pieces of your new application over time will encourage your team to exchange feedback while changes are still reasonable.</p>
<p>For example, if you are building a member restricted web application, the first releasable feature would probably be a landing screen restricted by a username and password login. The next logical piece might be a screen to add and edit system users. Almost immediately business experts and end users can begin to interact with the system they helped plan.</p>
<p>Once you have a rough outline of features determine which features take the highest priority and which fall towards the lower end. A schedule of priorities gives everyone a clear idea of what to expect as the project proceeds.</p>
<p>The schedule doesn&#8217;t have to include exact delivery dates to work. But staying on top of a rough estimate of delivery dates for features can be very helpful as you have to make priority decisions deeper into a project.</p>
<h2>Continuous integration</h2>
<p>In order to participate your team members will need access to the project as it evolves. If your project is web based that means having a beta server with the most up to date web site on it. If your project is a desktop app that means having an easily installable and updatable beta application.</p>
<p><a href="http://martinfowler.com/articles/continuousIntegration.html">Continuous integration</a> is a software development practice that aims to automate merging of features into a single deployable software update regularly. As your developers write code they should be committing it to a source control system. Whenever a feature is ready for beta they can flag it for release. When this happens a continuous integration system automatically assembles a new beta version of the application. Most systems will notify team members when there&#8217;s something new to review.</p>
<p>Automating the deployment process removes a process hurdle and makes it much more likely that features will be deployed for review.</p>
<div class="sidebar" style="margin-bottom:2em">
<h3>Example continuous integration systems</h3>
<ul>
<li><a href="http://www.jetbrains.com/teamcity/">Team City</a></li>
<li><a href="https://hudson.dev.java.net/">Hudson</a></li>
<li><a href="http://cerberus.rubyforge.org/">Cerberus</a></li>
</ul>
</div>
<h2>Business experts need to see test results</h2>
<p>From the very start of your project business experts should be involved with crafting tests. They should also be able to access test results. Your team should use a testing approach that is accessible to technical and nontechnical team members alike.</p>
<p>In our second post we mentioned Behavior Driven Development practices. The frameworks we mentioned (<a href="http://jbehave.org/">JBehave</a>, <a href="http://nbehave.org/">NBehave</a>, <a href="http://rspec.info/">RSpec</a>, <a href="http://cukes.info/">Cucumber</a>) push tests away from techno-speak and towards plain English. This can make it easier for business experts to understand the results of tests written by programmers.</p>
<p>Whatever testing platform you use, get your business experts writing test cases. Having test plans written by business experts is better than leaving testing to programmers alone.</p>
<h2>Before you do anything else, start an issue list</h2>
<p>Create an issue list at the very start of construction. Make it writable by all team members. As issues or new features come up, enter them on the issue list. Allowing business experts to enter tickets will alleviate some of the interruption that can encroach on developers while ensuring all ideas/issues are captured.</p>
<p>From time to time, everyone should revisit and refine the issue list. As tickets are addressed and released, close them. Look through the list often and look for misplaced items. Recategorize and reprioritize tickets regularly. </p>
<p>Any decent ticket system will allow for notifications. A well used ticket system can serve as a central notification clearing house and historical record for project progress.</p>
<div class="sidebar" style="margin-bottom:2em">
<h3>Example ticket systems</h3>
<ul>
<li><a href="http://www.fogcreek.com/fogbugz/">FogBugz</a></li>
<li><a href="http://trac.edgewall.org/">Trac</a></li>
<li><a href="http://unfuddle.com/about/tour/tickets">Unfuddle</a></li>
<li><a href="http://lighthouseapp.com/">Lighthouse</a></li>
</ul>
</div>
<h2>Wrapping Up</h2>
<p>Once coding starts communication, issue tracking, and testing are the keys to a successful project. Consistent participation from technical and expert team members is the surest way to keep a project on track. More importantly this kind of cooperation will enable your team to adjust to changes because new issues will always come up.</p>
<p>Hopefully this series has given you some ideas on how to improve your team&#8217;s process of developing software. None of our suggestions are miracle fixes. And most can be tested out separately from the rest. So jump in and give one or two a try. See what works in your organization. </p>
<p>Anything you can do to foster an environment of collaboration will increase the quality of your end product.</p>
<img src="http://feeds.feedburner.com/~r/BaysideIncubator/~4/Viyn-R6dzys" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://baysidetech.com/blog/2010/05/specing-the-specs-keeping-a-project-on-track/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://baysidetech.com/blog/2010/05/specing-the-specs-keeping-a-project-on-track/</feedburner:origLink></item>
		<item>
		<title>Choosing a Business Intelligence (BI) Tool</title>
		<link>http://feedproxy.google.com/~r/BaysideIncubator/~3/mK-OEpxtxOA/</link>
		<comments>http://baysidetech.com/blog/2010/04/choosing-a-business-intelligence-bi-tool/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 13:31:07 +0000</pubDate>
		<dc:creator>Bob Lautenbach</dc:creator>
				<category><![CDATA[BI]]></category>

		<guid isPermaLink="false">http://baysidetech.com/blog/?p=129</guid>
		<description><![CDATA[BI has been around for a long time, but only in the past five or so years has it really taken off, both in the buzzword department and as a real solution to business problems.  If done right, BI empowers members of your organization (and your clients if needed), by providing them tools to [...]]]></description>
			<content:encoded><![CDATA[<p>BI has been around for a long time, but only in the past five or so years has it really taken off, both in the buzzword department and as a real solution to business problems.  If done right, BI empowers members of your organization (and your clients if needed), by providing them tools to report against and analyze real-time or semi-real-time data.</p>
<p>In the old days, reporting was a tedious process, and from the business perspective, appeared to take forever.  Here&#8217;s a likely scenario:  you think of a report you need, you write-up your report request, send it to the IT dungeon, and in 2-3 weeks you are informed it is available from menu “X” in system “Y”.  You get excited, login, only to find the layout wrong or groupings off.  You start the request process all over again (fun times!).</p>
<p>With a BI tool at your users fingertips, they can sort, group, heatmap, piechart, export, and print to their hearts content.  Never having to request another report from IT again (well, almost never).   BI tools increase productivity and add efficiencies to an organization.  There is one caveat.  You organization must be ready for BI.  If your user base is not able (through lack of training) or not willing (fears change, afraid of technology or are just plain lazy) to use your shiny new BI solution, your investment was wasted.   Be sure to get your people on-board and excited about BI and what it can mean for them before you make a purchase.</p>
<p>I recently implemented a BI solution for mid-sized client and thought I would share some of the things I think should be included in every BI offering.  Most of the items I will mention are provided by the major vendors such as;</p>
<ul>
<li><a href="http://www.sap.com/solutions/sapbusinessobjects/large/business-intelligence/qra/web_intelligence/index.epx">SAP/Business Object’s Web Intelligence Studio</a></li>
<li><a href="http://www.logixml.com/products/ad-hoc-reporting.html">LogiXML’s Ad-hoc</a></li>
<li><a href="http://www.microstrategy.com/Software/businessintelligence/index.asp">Microstrategy BI</a></li>
<li><a href="http://www-01.ibm.com/software/data/cognos/">IBM’s Congnos</a></li>
<li><a href="http://www.oracle.com/us/solutions/ent-performance-bi/index.html">Oracle’s OBIEE Plus</a></li>
<li><a href="http://www.microsoft.com/sqlserver/2008/en/us/business-intelligence.aspx">Microsoft’s SQL 2008</a></li>
</ul>
<p>The list below outlines items I feel are critical in a BI package.  It is by no means all-inclusive.</p>
<div class="sidebar">A BI tool should:</p>
<ul>
<li>Offer various Charting/Heatmap options</li>
<li>Provide the ability to sort, group and parameterize reports (some vendors do not support the HAVING clause from within the report designer.  In that case, you will need to implement HAVING statements at the database level)</li>
<li>Provide the ability to schedule reports (and auto-email/deliver..in various formats)</li>
<li>Offer logging of user access to the system (an audit trail)</li>
<li>Provide the ability to hide data objects from select users, but still allow them to run reports on those data sources (via permissions)</li>
<li>Provide the ability to share reports with other users</li>
<li>Provide the ability to filter data by user group to limit access to data (by client, region, etc.).  When a user logs in, you may want to restrict them to certain data, a single client for instance.  The BI tool should be able to handle that level of restriction.</li>
<li>Offer multiple options for login security such as, single-sign-on, windows authentication as well as traditional forms authentication.  (most vendors offer single-sign-on capability but be sure to look closely at their specific implementation to ensure it meets your security requirements)</li>
<li>Provide the ability to export reports to various formats</li>
<li>Provide the ability to add calculated columns and aggregate summaries</li>
<li>Allow you to name you database columns anything you like (sounds strange, but we encountered a parser that did not like the words UPDATE or DELETE in any part of a field name..i.e.: last_updated_by)</li>
<li>Allow users to use a field as a parameter, but restrict users from displaying the field on a report.  For example, I should be able to query by SSN, but I would rather my users never display a full SSN on report.  In that instance, I would offer a masked SSN field for display.</li>
<li>Allow the System Admin user that typically comes with a BI Tool to actually have full Admin rights across the entire application.  This again might sound strange, but I recently used a product that provided a system admin but certain permissions where denied to the admin as you moved throughout the system.  The workaround was creating group admins for each user group in the system.  Very tedious and not intuitive.</li>
<li>Provide a metadata layer where you can add user friendly field names, descriptions and even formating information per data object.</li>
<li>Provide the ability to create relationships between objects (in case its not already done at the database layer)</li>
<li>Provide the ability to auto-hide unrelated data objects. Essentially, if you select a data object (object &#8220;X&#8221;) for a report and no relationships to other data objects have been defined, then after you select object &#8220;X&#8221;, all other available data objects auto-hide from view (making them unavailable for that specific report).  This is a great feature especially in less sophisticated organizations, as it helps avoid producing run-away queries.
</ul>
</div>
<p>Most, not all, of the BI offerings I mentioned at the beginning of this post have the features I listed above (some more quirky than others). Each organizations needs are unique, so in the end you will need to marry features to your specific requirements. However, I have found that the items above are core to most business needs.  Take your time and test-drive each product on your potential buy list.  You will be glad you did.  Happy BI Hunting.</p>
<img src="http://feeds.feedburner.com/~r/BaysideIncubator/~4/mK-OEpxtxOA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://baysidetech.com/blog/2010/04/choosing-a-business-intelligence-bi-tool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://baysidetech.com/blog/2010/04/choosing-a-business-intelligence-bi-tool/</feedburner:origLink></item>
		<item>
		<title>Heads down collaboration</title>
		<link>http://feedproxy.google.com/~r/BaysideIncubator/~3/hqkG7hXtODQ/</link>
		<comments>http://baysidetech.com/blog/2010/04/heads-down-collaboration/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 15:03:02 +0000</pubDate>
		<dc:creator>Dave Konopka</dc:creator>
				<category><![CDATA[team work]]></category>

		<guid isPermaLink="false">http://baysidetech.com/blog/?p=116</guid>
		<description><![CDATA[Collaboration is an important part of team work. It&#8217;s also important though to strike a balance between team work and productivity. After all, it&#8217;s hard to make much progress on a project if your team is wrapped up in meetings 90% of the time.
One way to strike that balance is to encourage team members to [...]]]></description>
			<content:encoded><![CDATA[<p>Collaboration is an important part of team work. It&#8217;s also important though to strike a balance between team work and productivity. After all, it&#8217;s hard to make much progress on a project if your team is wrapped up in meetings 90% of the time.</p>
<p>One way to strike that balance is to encourage team members to communicate on their own schedule. In person visits, phone calls, and instant messaging are great tools. But they require immediate attention and can derail a person&#8217;s attention. An alternative is to use disconnected communication tools.</p>
<p>Provide an internal blog, a short message Twitter clone site, or an IRC style chat room and give accounts to everyone. Whenever someone hits a wall or completes a task, they can post a short message. The running list of messages will be available whenever other team members check in on it. Everyone keeps up with what&#8217;s going on without the pain of time draining meetings. You also get the added benefit of connecting folks who work in disconnected offices.</p>
<div class="sidebar">Some disconnected communication options:</p>
<ul>
<li><a href="http://p2theme.wordpress.com/">P2 &#8211; a short form WordPress theme</a></li>
<li><a href="http://campfirenow.com/">Campfire chat</a></li>
<li><a href="http://www.ofzenandcomputing.com/zanswers/1024">Internet Relay Chat</a></li>
</ul>
</div>
<p>Meetings don&#8217;t have to be time draining. Short, focused meetings can be very useful. Just make sure every meeting has a clearly defined purpose. Get in the habit of sending out agenda points. Keep the agenda points limited to decisions points or group related updates.</p>
<p>Encourage team members to discuss and refine the points ahead of time using your collaboration tools. Don&#8217;t schedule an hour unless you really need it. More often than not 15 &#8211; 30 minutes gets the job done.</p>
<p>Whenever your team is gathered you&#8217;re spending as many worker hours as there are team members. Hash out as much as possible upfront to make sure the time spent together is worth the cost.</p>
<div class="sidebar"><a href="http://www.businessweek.com/smallbiz/content/sep2006/sb20060927_259688.htm">How to Run a Meeting Like Google</a><br />
You don&#8217;t have to adopt all of the points immediately. But one or two might help increase your team&#8217;s productivity.</div>
<p>What other forms of communication do you find work well for you? Leave us some ideas in the comments.</p>
<img src="http://feeds.feedburner.com/~r/BaysideIncubator/~4/hqkG7hXtODQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://baysidetech.com/blog/2010/04/heads-down-collaboration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://baysidetech.com/blog/2010/04/heads-down-collaboration/</feedburner:origLink></item>
		<item>
		<title>Spec’ing the specs: Rethink the manual</title>
		<link>http://feedproxy.google.com/~r/BaysideIncubator/~3/7imGdG5ph5Q/</link>
		<comments>http://baysidetech.com/blog/2010/04/specing-the-specs-rethink-the-manual/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 18:38:00 +0000</pubDate>
		<dc:creator>Dave Konopka</dc:creator>
				<category><![CDATA[software process]]></category>

		<guid isPermaLink="false">http://baysidetech.com/blog/?p=99</guid>
		<description><![CDATA[In the first post of this series, Spec&#8217;ing the specs: What should my software do?, we took a look at some of the high level considerations that go into planning software projects. In this post we&#8217;ll focus in on the online tools and processes that teams can use to capture project requirements.
Why do we need [...]]]></description>
			<content:encoded><![CDATA[<p>In the first post of this series, <a href="http://baysidetech.com/blog/2010/03/specing-the-specs-what-should-my-software-do/">Spec&#8217;ing the specs: What should my software do?</a>, we took a look at some of the high level considerations that go into planning software projects. In this post we&#8217;ll focus in on the online tools and processes that teams can use to capture project requirements.</p>
<p>Why do we need to document requirements at all? There&#8217;s no shortage of horror stories out there about the pitfalls of over documentation. You&#8217;ve probably seen a phonebook-sized spec document propping open an office door somewhere.</p>
<p>Documentation for the sake of documentation is a waste of time. But clear, concise documentation supports software projects in a few key ways:</p>
<ul>
<li>Clearly defined requirements guide your team&#8217;s decisions throughout the life of a software project</li>
<li>Consistently recorded decisions remind your team why you made the choices you did weeks, months, and years from now</li>
<li>Consciously deciding what your software <em>should</em> do makes it much easier to test that it actually does it once it&#8217;s complete</li>
</ul>
<p><span id="more-99"></span></p>
<h2>Capturing collaboration</h2>
<p>The easiest way to capture the decisions your team makes on a project is to use collaboration tools that do it automatically. There are many tools out there on the web for exchanging ideas and resources. These tools include features for messaging, document sharing, wiki style documentation, task tracking, and so on. These features improve upon disconnected communication channels such as email and phone conversations.</p>
<p>Establishing the use of one of these tools at the very beginning of a project is important. As the project evolves the tool will serve as a switchboard for communication. And later down the line the team can track back to review progress and revisit not just their decisions but the decision making process.</p>
<p>Even more important though is that your team uses a tool consistently. If you notice that people have not been logging into the system or topics pop up in conversation that are not reflected in your collaboration, it may be time to reevaluate your process. You don&#8217;t want to impose a system that runs counter to the natural way your team communicates.</p>
<p>Some example collaboration platforms:</p>
<ul>
<li><strong><a href="http://www.basecamphq.com">Basecamp</a></strong><br />
Online project management, collaboration, and task service</li>
<li><strong><a href="http://www.activecollab.com">Activecollab<br />
</a></strong>Project management and collaboration software package</li>
<li><strong><a href="http://sharepoint.microsoft.com">Sharepoint<br />
</a></strong>Microsoft&#8217;s often reviled content management system. Sharepoint has many drawbacks but if you have access to it within your organization it can be a better communication tool than none at all.</li>
</ul>
<h2>Wireframes</h2>
<p>Documentation is important. However nothing generates more feedback than giving users something visual. One way to do this early on in a project is to create wireframes. Sometimes called mockups, wireframes are limited functionality visuals that show users what an application will do. Wireframes are much easier to change than a completed and deployed application.</p>
<p>Wireframes range in form from static images to working HTML pages. They often leave out frills like colors and graphics to help users focus on functionality. Wireframes are only a tool. They will not draw out feedback from everyone on their own. The less interactive your wireframes are the less feedback they will draw out. Your team will need to review wireframes as they evolve with users and experts in person to get the most value out of them.</p>
<p>Some example wireframing tools:</p>
<ul>
<li><strong><a href="http://www.balsamiq.com">Balsamiq<br />
</a></strong>Software mockup tool for quickly creating static wireframes</li>
<li><strong>Design software</strong><br />
Template sets for <a href="http://www.teehanlax.com/blog/2009/06/18/iphone-gui-psd-30/">iphone apps</a>, <a href="http://www.webdesignerstoolkit.com/">web browsers</a>, and so on.</li>
<li><strong>Development tools</strong><br />
Build some <a href="http://24ways.org/2009/make-your-mockup-in-markup">basic screens</a> in HTML. Partially functioning screens take more time to create. But they are the most interactive visuals you can give users.</li>
</ul>
<h2>Let the tests tell the story</h2>
<p><a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development">Behavior Driven Development</a> (BDD) is a development methodology that has been gaining popularity. It encourages developers to collaborate closely with business participants throughout the life of a project.</p>
<p>The approach is often described as outside-in. A team defines very clearly what software should do. Tests are written using testing frameworks that closely resemble plain English. This allows analysts and QA teams to understand the tests and participate more deeply in a project.</p>
<p>As software is created it is held to the results of the tests. The tests ensure stability and quality in a software project as features are added and changed. The tests also serve as a living document of what the software should do.</p>
<p>Some example BDD testing frameworks:</p>
<ul>
<li>Java: <a href="http://jbehave.org/">JBehave</a></li>
<li>.NET: <a href="http://code.google.com/p/nbehave/">NBehave</a></li>
<li>Ruby: <a href="http://cukes.info/">Cucubumber</a></li>
</ul>
<p>In this post we&#8217;ve covered some of the interactive forms your software documentation can take. Check back for a later post when we&#8217;ll talk about what to do with your roadmap as your team jumps into building software.</p>
<img src="http://feeds.feedburner.com/~r/BaysideIncubator/~4/7imGdG5ph5Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://baysidetech.com/blog/2010/04/specing-the-specs-rethink-the-manual/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://baysidetech.com/blog/2010/04/specing-the-specs-rethink-the-manual/</feedburner:origLink></item>
		<item>
		<title>Recipe for Software Success</title>
		<link>http://feedproxy.google.com/~r/BaysideIncubator/~3/SXHAMP0gip8/</link>
		<comments>http://baysidetech.com/blog/2010/03/recipe-for-software-success/#comments</comments>
		<pubDate>Sat, 27 Mar 2010 01:52:50 +0000</pubDate>
		<dc:creator>Bob Lautenbach</dc:creator>
				<category><![CDATA[software process]]></category>

		<guid isPermaLink="false">http://baysidetech.com/blog/?p=80</guid>
		<description><![CDATA[As we all know, many software development projects fail to meet their objectives.   In fact, some projects never even define the overall objective; they simply dive in and start coding.
There are many reasons (just google it) why software projects fail: lack of direction, poor specs, an inexperienced development team, lack of any real testing [...]]]></description>
			<content:encoded><![CDATA[<p>As we all know, many software development projects fail to meet their objectives.   In fact, some projects never even define the overall objective; they simply dive in and start coding.</p>
<p>There are many reasons (just google it) why software projects fail: lack of direction, poor specs, an inexperienced development team, lack of any real testing and the list goes on.   Any of those issues can sink the proverbial development ship.  However, the issues I listed are merely the symptoms of a much larger disease.  In fact, many of them will cease to exists if you incorporate a simple principle into how projects &#8220;get done&#8221;.   That guiding principle is &#8220;partnership&#8221;. Partnership?  Yes, partnership. Sounds simple and even over-used, but it&#8217;s foundational to the success of just about any team effort.</p>
<p>In a &#8220;true&#8221; partnership&#8221; each party knows what is expected of them.  They each know the role they are supposed to play and realistic expectations have been established.  Unfortunately, most development efforts never address the importance of business and IT partnering for a common objective.  Instead, the coders code and the business people wonder why they don&#8217;t see screens yet.  This doesn&#8217;t happen everywhere, but it&#8217;s all too common.</p>
<p>So before you start that next project, set aside time to discuss how the &#8220;partnership&#8221; will work.  Listen and learn about the implied vs. explicit expectations of your partner.   For example, in my experience, there are two common <em>implied </em>expectations that seem to exists on any project:  1) the business will always expect to receive a reliable and testable application and 2) IT will always expect the business to provide clear specs and personnel to conduct meaningful testing.  Understanding and meeting those two expectations will go a long way to helping you achieve success, but each partnership is different and comes with its on set of rules, so be prepared to adapt.</p>
<p>To often, &#8220;partnering&#8221; is referred to as boiler-plate lip service or just another over used business cliche&#8217;. The truth however, is that no project can succeed without it.</p>
<img src="http://feeds.feedburner.com/~r/BaysideIncubator/~4/SXHAMP0gip8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://baysidetech.com/blog/2010/03/recipe-for-software-success/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://baysidetech.com/blog/2010/03/recipe-for-software-success/</feedburner:origLink></item>
		<item>
		<title>Our Dive Into the Twitter Pool</title>
		<link>http://feedproxy.google.com/~r/BaysideIncubator/~3/TmXBDHdPiXI/</link>
		<comments>http://baysidetech.com/blog/2010/03/our-dive-into-the-twitter-pool/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 11:25:51 +0000</pubDate>
		<dc:creator>Bob Lautenbach</dc:creator>
				<category><![CDATA[incubator news]]></category>

		<guid isPermaLink="false">http://baysidetech.com/blog/?p=6</guid>
		<description><![CDATA[Social Networking tools are everywhere.  Whenever I see someone on their phone, they are: 1) talking  2) emailing  3) “facebooking” 4) tweeting or  5) all of the above at once.   We seem to find more and more ways to communicate with each other, although sometimes I wonder how much we really have to say that is [...]]]></description>
			<content:encoded><![CDATA[<p>Social Networking tools are everywhere.  Whenever I see someone on their phone, they are: 1) talking  2) emailing  3) “facebooking” 4) tweeting or  5) all of the above at once.   We seem to find more and more ways to communicate with each other, although sometimes I wonder how much we really have to say that is truly &#8220;interesting&#8221; .   Our desire to communicate appears to be insatiable&#8230;and that fascinates me.</p>
<p>I have been on facebook for while now, but mostly to reconnect with old friends and lost family.  Twitter on the hand, was relatively foreign to me.  Tweets?   What is that?   Thankfully though, a colleague of mine pushed me to start looking at Twitter.   Not only for the social connections but also for the educational aspect (I will get back to this one) and the ability to talk about, I mean tweet about, my organization and how we can help others.</p>
<p>I have to say, I was reluctant at first.  Talk about information overload.   However, once you learn to cull and search and follow your own interests, an amazing world starts to open up.   I mentioned Twitter and education.  I am amazed at how twitter has enhanced my knowledge, especially around areas of personal interest.   Twitter in some ways (for me at least) is like a living encyclopedia that is grows each day.  Granted, there is some junk out there, but being able to tweet with people around the world about common interests and get their perspective on topics and current trends is simply amazing.</p>
<p>The more I learned about twitter and social networking, the more I was on the fence about “promoting” our business via social channels.  Part of me felt as if the social networking world was meant for you and me and not business.  After all, I really don’t want to login to twitter and see Pepsi ads.   My business half realized the opportunity social media offered, but I wanted to strike a balance.  I have always promoted my company as being real people helping others succeed, not some corporate monster trying to take over the world.  So, I decided that any discussions about my organization via social media would have to meet that same standard. No brash used-car sales promotions or ALL CAPS TWEETS!   Its important to me that we connect with people and if that leads to business great, but making friends can be even more rewarding.</p>
<p>As we continue diving deeper and deeper into the Twitter pool, I hope to post new aritcles updating everyone on our experiences and what we have learned along the way.</p>
<img src="http://feeds.feedburner.com/~r/BaysideIncubator/~4/TmXBDHdPiXI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://baysidetech.com/blog/2010/03/our-dive-into-the-twitter-pool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://baysidetech.com/blog/2010/03/our-dive-into-the-twitter-pool/</feedburner:origLink></item>
		<item>
		<title>Spec’ing the specs: What should my software do?</title>
		<link>http://feedproxy.google.com/~r/BaysideIncubator/~3/KMzdx9WCZxQ/</link>
		<comments>http://baysidetech.com/blog/2010/03/specing-the-specs-what-should-my-software-do/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 13:10:45 +0000</pubDate>
		<dc:creator>Dave Konopka</dc:creator>
				<category><![CDATA[software process]]></category>

		<guid isPermaLink="false">http://baysidetech.com/blog/?p=57</guid>
		<description><![CDATA[Developers love creating software. They look forward to opening their editors and churning out new features. But before that first line of code can be written on a new project somebody has to decide what software should do.
A clearly defined road map for what software should do will help make the most of everyone&#8217;s time [...]]]></description>
			<content:encoded><![CDATA[<p>Developers love creating software. They look forward to opening their editors and churning out new features. But before that first line of code can be written on a new project somebody has to decide what software <em>should</em> do.</p>
<p>A clearly defined road map for what software <em>should</em> do will help make the most of everyone&#8217;s time and efforts over the lifetime of a project. The tricky part is crafting the right road map for your project.</p>
<p>Documentation is the old standby. Does anybody read it? Meetings can be helpful. Do the hours spent really improve the product? Prototypes look like rapid progress. Are the subject experts able to make any sense of mockups?</p>
<p>This post is the first in a series on how development teams can better collaborate with their business counterparts to capture what software <em>should</em> do. This first post focuses on why road maps are so important. Another will dive deeper into different approaches for capturing requirements in a meaningful way. And a later post will look at taking that leap from a road map into construction.</p>
<p><span id="more-57"></span></p>
<h2>Making something out of nothing</h2>
<p>A blank page can be a frightening prospect. Even when a team is upgrading an existing application, it can be intimidating to define what screens and what features are needed to launch.</p>
<p>At the very beginning of the requirements gathering process it&#8217;s best not to think about software at all. Instead, the focus should be on what users need to accomplish. Project members should spend time mapping out the goals and habits of the people who will use the new software.</p>
<p>If a team is developing an application for a company then they can spend time observing the day to day tasks of the people who work there. If they&#8217;re developing a product for the web then they should spend time talking with people likely to use the application. They should find out what tasks people are doing now in some other way. It&#8217;s a good idea to ask these future users what tools they think would improve their lives.</p>
<p>It sounds like a simple thing. But <em>listening</em> to users is a step that we often skip. It should always be our first step.</p>
<h2>Communicate, rinse, repeat</h2>
<p>Often the developers writing software aren&#8217;t experts in the subject matter behind a project. Software teams rely heavily on point people with business knowledge to help them build useful tools. It&#8217;s important that developers establish a collaborative relationship with the subject experts from the very beginning.</p>
<p>There will always be a period of requirements gathering at the beginning of a project. Collaboration shouldn&#8217;t end once developers start writing code. Business point people need to remain engaged with the development team throughout the life of a project. Keeping them connected as the project progresses is the best way to ensure the project remains true to the road map.</p>
<p>When subject experts and developers collaborate the road map becomes a living document. The teams&#8217; working relationship will make it easier to make adjustments as issues arise. This will save on many headaches on the way to launch time.</p>
<h2>Capturing the magic</h2>
<p>Ideas can be magical. But putting ideas into action is where the real magic happens. And putting ideas into action will be much easier if everyone agrees on what software <em>should</em> do up front.</p>
<p>That still leaves the question of how to go about capturing those requirements. It&#8217;s not enough to jot down some ideas and move on to coding. It&#8217;s important to think about how the requirements will be used throughout the life cycle of the project. The content is fresh in everyone&#8217;s head when they start. Three months from now they&#8217;ll have to refer back to those notes. Will they still make sense?</p>
<p>Ideally a team should use tools that allow everyone: developers, subject experts, managers, and maybe even some users, to have a window into the project as it evolves. Nothing communicates the progress of a project better than tracking work as it moves along for all to see. Online tools such as wiki&#8217;s and other collaboration services can become a natural part of both the requirements and the development processes.</p>
<p>In the next post of this series we&#8217;ll take a closer look at some of the online tools and processes that your team can use to capture project requirements.</p>
<img src="http://feeds.feedburner.com/~r/BaysideIncubator/~4/KMzdx9WCZxQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://baysidetech.com/blog/2010/03/specing-the-specs-what-should-my-software-do/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://baysidetech.com/blog/2010/03/specing-the-specs-what-should-my-software-do/</feedburner:origLink></item>
		<item>
		<title>So You Want A Software Development Process?</title>
		<link>http://feedproxy.google.com/~r/BaysideIncubator/~3/rsVSMf4QmIc/</link>
		<comments>http://baysidetech.com/blog/2010/03/so-you-want-a-software-development-process/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 16:13:54 +0000</pubDate>
		<dc:creator>Bob Lautenbach</dc:creator>
				<category><![CDATA[software process]]></category>

		<guid isPermaLink="false">http://baysidetech.com/blog/?p=12</guid>
		<description><![CDATA[In a previous post, Dave mentioned how we are always thinking about ways to improve our software development processes at Bayside. As we grow and mature as an organization, our processes evolve. While we stay true to our core belief that a process should be simple, flexible, repeatable, and effective, we are always looking to [...]]]></description>
			<content:encoded><![CDATA[<p>In a previous post, Dave mentioned how we are always thinking about ways to improve our software development processes at Bayside. As we grow and mature as an organization, our processes evolve. While we stay true to our core belief that a process should be simple, flexible, repeatable, and effective, we are always looking to improve. A clearly defined process won&#8217;t solve all of the issues associated with software development, but it will definitely reduce the chaos.</p>
<p>A development methodology is the core of a good software process.  However, there are no one-size-fits-all methodologies. While each &#8220;system&#8221; (waterfall, agile, etc) has its own merits, there is no silver-bullet solution that will fix your development process (or lack thereof). A methodology is just one link in the chain of a solid process. It&#8217;s important to look at the different methodologies available and adopt (and adapt) the one closest to you end-goal.</p>
<p>So what else do you need to make a process really work, here is a short list:</p>
<h3>Methodology</h3>
<p>Every good process needs to starts with a solid foundation. Even if you adopt you own form of a methodology, which is what most of do in reality, it is good to start by picking an existing one with a good track record. When picking a methodology, remember to consider where you want to be as development team vs. where you are today. I know that might seem simple, but I have seem many groups pick a method that closely resembles who they are vs. who they want to be. Again, it&#8217;s human nature to take the path of least resistance. Another recommendation: don&#8217;t pick an overly complicated or document-heavy methodology. You&#8217;ll notice I didn&#8217;t say document-free. You want to be productive, not mired in documentation.</p>
<p><strong>Bottom line</strong>: Pick a methodology that is proven and includes the ideals of where you want to go as a team.</p>
<h3>Management buy-in</h3>
<p>I know, you are probably saying, &#8220;if I had a dime for each time I heard that one&#8221;, but this is one is critical. Without real support (i.e.: accountability for those who don&#8217;t align with the new process), the process will never take hold. People will not change if there is no consequence linked to NOT changing. It&#8217;s just basic human nature.</p>
<p><strong>Bottom line</strong>: Wishy-washy leadership = no change.</p>
<h3>Team buy-in</h3>
<p>This does not mean everyone. You will almost always have the naysayers who like things as-is or want waterfall over agile or vice-versa. I recommend including your most trusted developers, the good ones, in the decision making process as you move to make changes. Defining &#8220;good&#8221; is outside the scope of this post but lets just say good doesn&#8217;t always mean the person who gets things done the fastest. This will help them to see you are committed to them and value their input.</p>
<p><strong>Bottom line</strong>: Be inclusive but stay committed to the end result. Understand that some folks may leave because of the change. Be ready for that reality.</p>
<h3>Document and Educate</h3>
<p>Hey, I&#8217;m a developer, what&#8217;s with all the documentation? Documenting the process is important to ensure it is repeatable. Keep it simple. A wiki write-up or a simple, yet clear bulleted manifesto will suffice. Do not write a 200 page process document&#8230;unless you want it just collect dust. Make the process document available on your intranet to everyone can see it and be prepared to change it when necessary. Meet with your team and explain the points of the new process. Go over why you believe it is better than what you are doing today.</p>
<p><strong>Bottom line</strong>: Keep the document simple and clear. Educate the team and make sure they know why the change is being made. People like to know why something is happening, not just that it&#8217;s happening.</p>
<h3>Review</h3>
<p>After each project, conduct a &#8220;post-mortem&#8221; to determine what went wrong and what went right. This will help to determine if changes are in order. Is your team more effective with this new process in place? Without these reviews, your process will never take advantage of lessons learned.</p>
<p><strong>Bottom line</strong>: Be flexible. Always look to refine and improve.</p>
<p>A good process will yield good results consistently. But implementing a process or changing an existing one can be a painful experience for some organizations. My experience has shown that organizations that ignore the failings of their current processes, create an ever-growing amount of &#8220;tech debt.&#8221; That debt can become so heavy they collapse under the weight.  If you keep your processes simple and flexible, it can change with your organization and evolving technologies, enabling your team to be more responsive and efficient.</p>
<p>Take some time this week to review your software processes. Create a short list of items you know can be improved upon. You will be happy you did it.</p>
<img src="http://feeds.feedburner.com/~r/BaysideIncubator/~4/rsVSMf4QmIc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://baysidetech.com/blog/2010/03/so-you-want-a-software-development-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://baysidetech.com/blog/2010/03/so-you-want-a-software-development-process/</feedburner:origLink></item>
		<item>
		<title>Bayside Incubator launches</title>
		<link>http://feedproxy.google.com/~r/BaysideIncubator/~3/ABl8iANiemc/</link>
		<comments>http://baysidetech.com/blog/2010/02/bayside-incubator-launches/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 19:33:24 +0000</pubDate>
		<dc:creator>Dave Konopka</dc:creator>
				<category><![CDATA[incubator news]]></category>

		<guid isPermaLink="false">http://baysidetech.com/blog/?p=4</guid>
		<description><![CDATA[Launching any kind of technology project is not an easy task. It&#8217;s a lot  like building a house. Your clients are the eager home buyers who above  all else want the house delivered as they envision it. You&#8217;re the home  developer balancing the demands of your clients against the pace of your [...]]]></description>
			<content:encoded><![CDATA[<p>Launching any kind of technology project is not an easy task. It&#8217;s a lot  like building a house. Your clients are the eager home buyers who above  all else want the house delivered as they envision it. You&#8217;re the home  developer balancing the demands of your clients against the pace of your  work crews and the limitations of the housing association.</p>
<p>No project is perfect. Trade-offs have to be made. Unplanned issues  begin to seep in. Communication breaks down. It&#8217;s easy to lose sight of  the common goal of building a great house. But that&#8217;s why it&#8217;s essential  to have a solid project process in place on every project. The project  process is the best way to keep everyone connected and collaborating.</p>
<p>After the house is standing and the clients have moved in, then it&#8217;s  time to hone your process with the lessons learned on the project. Your  future projects can benefit from the things that worked and avoid the  pitfalls in the things that didn&#8217;t work.</p>
<p>At Bayside we put a lot of thought and practice into our process. We&#8217;ll  try to use this blog as an outlet for our own ongoing learning process.  Hopefully we can start some interesting conversations along the way.</p>
<img src="http://feeds.feedburner.com/~r/BaysideIncubator/~4/ABl8iANiemc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://baysidetech.com/blog/2010/02/bayside-incubator-launches/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://baysidetech.com/blog/2010/02/bayside-incubator-launches/</feedburner:origLink></item>
	</channel>
</rss>
