<?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>Leonidas Oy &#187; product development</title>
	<atom:link href="http://leonidasoy.fi/tag/product-development/feed" rel="self" type="application/rss+xml" />
	<link>http://leonidasoy.fi</link>
	<description></description>
	<lastBuildDate>Thu, 26 Jan 2012 10:33:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>How To Deliver Software In 7 Days, Part III</title>
		<link>http://leonidasoy.fi/2010/02/19/how-to-deliver-software-in-7-days-part-iii</link>
		<comments>http://leonidasoy.fi/2010/02/19/how-to-deliver-software-in-7-days-part-iii#comments</comments>
		<pubDate>Fri, 19 Feb 2010 12:16:50 +0000</pubDate>
		<dc:creator>Harri Lammi</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[product development]]></category>
		<category><![CDATA[prototyping]]></category>

		<guid isPermaLink="false">http://www.leonidasoy.com/?p=707</guid>
		<description><![CDATA[This is the last post in my rapid ...]]></description>
			<content:encoded><![CDATA[<p>This is the last post in my rapid prototyping series. Previously, I wrote about <a href="http://www.leonidasoy.com/2010/01/25/how-to-deliver-software-in-7-days/">preparation</a> and <a href="http://www.leonidasoy.com/2010/02/04/how-to-deliver-software-in-7-days-part-ii/">the development process</a>. Today&#8217;s topic is <a title="Kaizen" href="http://en.wikipedia.org/wiki/Kaizen">Kaizen</a>, continuous improvement. We&#8217;ll go through a few steps that will help you be more productive, shorten the learning curve, and make your life easier.</p>
<p><span id="more-707"></span></p>
<h3>Lesson #11: Review the project.</h3>
<p>Process is best improved by those who do the actual work. Our project team gathers for a <a title="ScrumAlliance.org - Sprint Retrospective Meeting" href="http://www.scrumalliance.org/articles/39-glossary-of-scrum-terms#1113">retrospective </a>the day after the prototype is delivered — while we still have the ideas and problems fresh on our minds. We discuss things that went well, things we could do better, and what actions we are going to take to improve the process.</p>
<p>For learning how to organize good retrospectives, I recommend the awesome book <a href="http://www.pragprog.com/titles/dlret/agile-retrospectives">Agile Retrospectives</a> by Esther Derby and Diana Larsen.</p>
<h3>Lesson #12: Update your process.</h3>
<p>We keep our process documentation as light as possible. Currently, our entire process is described with a one-page how-to and a checklist. To inject our improving understanding into our process, we update these documents after each retrospective.</p>
<p>We also use how-tos that describe the most important technical tasks, such as setting up a new web application to our production server. These guides help us avoid stupid mistakes, and they save time when a team member does the task for the first time.</p>
<h3>Lesson #13: Share what you learned.</h3>
<p>Rapid prototyping gives us feedback in seven days. When we get positive experiences, we share our findings with the rest of the company. We use wiki, Google Wave, and <a title="Leonidas hour" href="http://www.leonidasoy.com/2009/12/31/leonidas-hour/">Leonidas hour</a> to spread information within the company. To share our experience with the world, we write blog posts such as this.</p>
<h3>Lesson #14: Enjoy the results.</h3>
<p>Everybody loves getting feedback on their work. When our sales team returns from the demo shop, they share the customer reaction with us developers. Having worked hard for seven days, we find that it&#8217;s great to hear that the client said the results were awesome.</p>
<p>I hope that this journey in rapid prototyping gave you something to use in your own work. If you have any questions, please feel free to leave a comment.</p>
<p>If you&#8217;re interested in agile development, I gave a presentation last week in <a title="Demola" href="http://demola.fi">Demola</a>; the material is available on <a title="Agile Development" href="http://www.slideshare.net/secret/bJbGgSVK9Ad3vB">SlideShare</a>.</p>
<p>By the way, we have a post coming on software quality written by <a href="http://fi.linkedin.com/in/edvardm">Edvard Majakari</a>, who recently joined our company. Ed is a great guy, and he&#8217;s always there to help when it comes to making better software.</p>
]]></content:encoded>
			<wfw:commentRss>http://leonidasoy.fi/2010/02/19/how-to-deliver-software-in-7-days-part-iii/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To Deliver Software In 7 Days, Part II</title>
		<link>http://leonidasoy.fi/2010/02/04/how-to-deliver-software-in-7-days-part-ii</link>
		<comments>http://leonidasoy.fi/2010/02/04/how-to-deliver-software-in-7-days-part-ii#comments</comments>
		<pubDate>Thu, 04 Feb 2010 11:38:39 +0000</pubDate>
		<dc:creator>Harri Lammi</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[product development]]></category>
		<category><![CDATA[prototyping]]></category>

		<guid isPermaLink="false">http://www.leonidasoy.com/?p=670</guid>
		<description><![CDATA[My previous post was about preparing for a ...]]></description>
			<content:encoded><![CDATA[<p>My <a title="How To Deliver Software In 7 Days" href="http://www.leonidasoy.com/2010/01/25/how-to-deliver-software-in-7-days/">previous post</a> was about preparing for a rapid prototyping project in which we create working software in seven days. This second post reveals how to keep the project on schedule, avoid technical risks, and delegate work during the development phase.</p>
<p><span id="more-670"></span></p>
<p>In our seven-day process the first day is spent with the customer in a start shop. The next five days are dedicated to development, and the last day is reserved for the demo shop where the prototype is handed over to the customer. During the five-day development sprint we develop, test and deploy the prototype in iterations. Let&#8217;s go through the lessons we have learned in this process.</p>
<h3>Lesson #6: Spend time on design.</h3>
<p>Rapid prototyping is a combination of craftsmanship and cowboy coding. Usually cowboys take over when the deadline is closing in. To keep things professional throughout the project you should spend time on design. It has a few benefits:</p>
<ul>
<li>Working out challenging use cases and problems in the beginning will reduce chances of failing.</li>
<li>When there are more developers involved in the project, the design helps to divide the work.</li>
<li>The product owner can verify the key requirements against the design.</li>
</ul>
<p>In our projects, we have drawn the initial data model and layout designs on the whiteboard. The design usually changes during the development, so we rather spend our time developing than updating design documents.<br />
Make it quick and keep it simple. The purpose of design is just to keep all the cowboys riding in the same direction.</p>
<h3>Lesson #7: Deploy early and often.</h3>
<p>Applications tend to work differently in production than they do in the developer&#8217;s computer. Verify that your prototype is working on the target device or in the production server as early as possible. Once the first deployment is made, you can start testing the prototype.</p>
<p>Deploying often is possible with automated deployment tools. <a title="Capistrano" href="http://www.capify.org/">Capistrano</a> works great on Rails projects. Mobile applications can be installed from the IDE (e.g. <a title="Carbide.c++" href="http://www.forum.nokia.com/Tools_Docs_and_Code/Tools/IDEs/Carbide.c++/">Carbide</a>, <a title="Aptana Studio" href="http://www.aptana.org/">Aptana Studio</a>) with a few clicks. When the deadline approaches and the going gets tough, automated deployment will save you from errors.</p>
<h3>Lesson #8: Prioritize and estimate the task backlog continuously.</h3>
<p>The task backlog is for managing the development tasks. It states which tasks are the most important ones and how long they will approximately take to implement. The backlog visualizes the remaining work and it helps us decide which tasks we should focus on.</p>
<p>We use a shared spreadsheet as task backlog. Everybody can add a task: the product owner, developers and testers. Every task that requires at least 15 minutes is listed in the backlog. Tasks longer than 4 hours are divided into smaller tasks to keep the estimates as accurate as possible. The developers give their estimates and the product owner decides the prioritization. With this information and a pinch of common sense we decide what to do next.</p>
<p>The beauty of the task backlog is the continuous evaluation. If a task requires more time or a new feature arises, we estimate it and we see immediately how it affects our schedule. Then we drop some unimportant items or simplify the implementation. So rather than sticking to a plan we continuously evaluate our situation and make new plans. Quoting <a href="http://en.wikipedia.org/wiki/Plan">Eisenhower</a>: plans are nothing; planning is everything.</p>
<h3>Lesson #9: Delegate tasks.</h3>
<p>Prototyping team consists of different roles. In a short project it&#8217;s recommended that people concentrate on the things they do best. The developers should be busy coding. The test staff should be busy testing the application.</p>
<p>When we first started prototyping, developers were responsible for content creation. Then the product owner got more involved in the process since he has the vision how the prototype should look like. Finally we moved the whole content creation to the product owner. This solution resulted in more appealing content and gave us more time for development.</p>
<h3>Lesson #10: Talk, talk, talk.</h3>
<p>Instant feedback, quick decisions and information sharing require good communication. During development we have everybody working in the same space, so we can speak and hold ad hoc meetings (5-10 minutes) as needed. By talking a lot with the product owner we avoid a lot of misunderstandings and save development time by doing the right things the right way.</p>
<p>On the other hand, we also reserve time for silence. When we need to concentrate on our work we use the 45-15 rule. It means that for 45 minutes speaking is prohibited and then we take 15 minutes to discuss about the issues or problems we encountered.</p>
<h3>Free breakfast and rapid prototyping</h3>
<p>The last post of this series focuses on process improvement issues and the post will be published next week.</p>
<p>On Thursday Feb 18 <a title="Leonidas" href="http://leonidasoy.fi/">Leonidas</a> and <a title="Codento" href="http://www.codento.com/">Codento </a>are organising <a href="http://www.codento.com/fi/events/2010-02.html">a breakfast event on rapid prototyping and cloud services</a>. The event begins at 8:00 in <a href="http://www.scandichotels.fi/fi/Hotels/Countries/Suomi/Tampere/Hotels/Scandic-Tampere-City/">Scandic Tampere</a>. Participation is free of charge but please <a href="http://www.codento.com/fi/events/2010-02.html">register online</a> (registering also available through <a title="Facebook registration" href="http://www.facebook.com/event.php?eid=271820214766&amp;index=1">Facebook</a>). Welcome!</p>
]]></content:encoded>
			<wfw:commentRss>http://leonidasoy.fi/2010/02/04/how-to-deliver-software-in-7-days-part-ii/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To Deliver Software In 7 Days</title>
		<link>http://leonidasoy.fi/2010/01/25/how-to-deliver-software-in-7-days</link>
		<comments>http://leonidasoy.fi/2010/01/25/how-to-deliver-software-in-7-days#comments</comments>
		<pubDate>Mon, 25 Jan 2010 13:58:34 +0000</pubDate>
		<dc:creator>Harri Lammi</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[product development]]></category>
		<category><![CDATA[prototyping]]></category>

		<guid isPermaLink="false">http://www.leonidasoy.com/?p=648</guid>
		<description><![CDATA[Prototyping is a fun process. You get to ...]]></description>
			<content:encoded><![CDATA[<p>Prototyping is a fun process. You get to try out new things and you don&#8217;t need to worry about production-ready code, automated tests and other routines that are not &#8220;creative&#8221;. Usually prototyping is not time critical either. You&#8217;re not expected to have every bell and whistle ready when the project ends. For a developer it means good times, like somebody is feeding you ice cream with a scoop.</p>
<p>But what if we change the rules a little bit. What if you have to deliver in seven days within a budget, the prototype must work and you need to do this every two weeks. Can prototyping still be fun?</p>
<p><span id="more-648"></span></p>
<p>Since spring 2009 we have been working with mobile and web prototypes here in Leonidas. In our case rapid prototyping means a fixed price seven day software project. Two days are reserved for understanding the customer&#8217;s needs, designing the prototype and holding the start/demo shops. Five days are dedicated for development.</p>
<p>Over the next few weeks I will be writing a series of posts of the lessons we have learned. This first post is about preparation. The difference between rapid prototyping and a traditional software project is the very strict deadline. Rapid prototyping is like the Cooper test: run as far as possible within 12 minutes. Those runners who have prepared well run the longest. For developers good preparation equals more features done.</p>
<h3>Lesson #1: Understand the project goal</h3>
<p>The customer has ordered the prototype for a reason. Usually they need a prototype to show to their organization or to their own customers. Or their developers are busy working and they need somebody to build them a walking skeleton for the next project.</p>
<p>Understanding the customer&#8217;s needs helps us develop the prototype. If the prototype is used for demos, the visual stuff is more important than the robust form validation we could spend hours working on. So instead of coding everything, you can describe functionality with pictures and enhance the user experience with AJAX.</p>
<p>If the customer needs a walking skeleton, you can spend more time on making your code readable and documenting how the prototype can be developed further.</p>
<p>As the bottom line, understanding the goal helps you to decide where to focus your efforts.</p>
<h3>Lesson #2: Prepare yourself for the technical challenges.</h3>
<p>Time is our most important asset and we need to spend it carefully. During the development phase it&#8217;s better to spend time on customer&#8217;s needs rather than learning Rails&#8217; nested forms.</p>
<p>Try to get as much details as possible about the project before it begins. We usually get some information from our customer before the start shop, so there&#8217;s time to think about the implementation. If there&#8217;s an unfamiliar technical area, there&#8217;s still time to study it before the project.</p>
<h3>Lesson #3: Check your development environment.</h3>
<p>Installing the SDK, configuring the demo server or matching your tools with your co-worker&#8217;s environment are issues that require only a little time if everything goes smoothly. If something goes wrong and you use more hours to solve the problem, you have spent a part of your most valuable asset.</p>
<p>It&#8217;s better to be ready before the project starts. Create the code repository, create user groups, configure the demo server, prepare the project wiki. Doing these beforehand can save you a half day&#8217;s work.</p>
<h3>Lesson #4: Have your project management tools ready.</h3>
<p>In our prototyping projects we need to handle requirements and test results. The concept designers have an ongoing discussion with the developers how the prototype should work. These requirements are written to the task backlog with priority and developer&#8217;s time estimation. Whenever testers find bugs they also write down their findings to the backlog. Developers pick tasks based on the priorization and mark them done when finished.</p>
<p>We use a shared spreadsheet as our task backlog. It&#8217;s fast, easy to use and developed for our needs. After trying some online project management tools and a task board we decided to stick with the spreadsheet since it worked best for us. The backlog spreadsheet is improved between projects and that would be quite impossible if we used a commercial tool.</p>
<p>The lesson here is to have the backlog or any other tools you are using ready before the project starts. Make sure the tool is really helping your team.</p>
<h3>Lesson #5: Find reusable code.</h3>
<p>If you make a list of the common functionality web applications have, you would list things like authentication, authorization and lost password mailers. From prototyping view these are nice-to-have items (see Lesson #1), so you shouldn&#8217;t waste time on them. But on the other hand, you would impress your customer by delivering these features.</p>
<p>One solution is to have these features available in your project skeleton (check out Ryan Bates&#8217; excellent <a href="http://railscasts.com/episodes/148-app-templates-in-rails-2-3">Railscast</a>). Knowing the features are tested and ready to go, you can concentrate on the items your customer really needs. In Rails projects you can also use gems and plugins to get a flying start. To avoid risks, try the gems/plugins before the project.</p>
<p>Hope you enjoyed this post. Next week I&#8217;ll be posting about the lessons we&#8217;ve learned in the development phase.</p>
]]></content:encoded>
			<wfw:commentRss>http://leonidasoy.fi/2010/01/25/how-to-deliver-software-in-7-days/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Success or Failure, Fast</title>
		<link>http://leonidasoy.fi/2010/01/04/success-or-failure-fast-2</link>
		<comments>http://leonidasoy.fi/2010/01/04/success-or-failure-fast-2#comments</comments>
		<pubDate>Mon, 04 Jan 2010 11:39:52 +0000</pubDate>
		<dc:creator>Kari Peltola</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[product development]]></category>
		<category><![CDATA[prototyping]]></category>

		<guid isPermaLink="false">http://www.leonidasoy.com/?p=591</guid>
		<description><![CDATA[Product development is a game of odds, much ...]]></description>
			<content:encoded><![CDATA[<p>Product development is a game of odds, much like sales. You have a funnel of ideas in different stages of development &#8211; some of them will become winners in the marketplace, some of them will not. So, how do you improve your odds of success?</p>
<p>The answer: prototype to validate the idea as early as possible.</p>
<p>Even a harsh, simple, ugly and defective prototype is better than no prototype at all. It clarifies the concept in three important aspects:</p>
<p><span id="more-591"></span></p>
<p><img title="More..." src="http://www.leonidasoy.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" />1) Do the product champion and the implementors share a common vision?</p>
<p>2) Does the product address a real customer need?</p>
<p>3) Can the concept be realized using current technology?</p>
<p>Expensive &#8211; and unfortunately common &#8211; mishaps occur if these concerns are not addressed properly.</p>
<p>First of all, if the product champion is not able to clearly communicate his/her vision to the implementing party, the direction of the development might be wrong from the start. The earlier this is noticed, the cheaper it is to fix.</p>
<p>Secondly, even the best visionaries get it wrong most times.</p>
<p>It is important to get feedback from the potential customers/users as early as possible. A good prototype is something you can show to the customer and ask &#8220;would this solve your problem?&#8221;</p>
<p>And thirdly, as the implementors get to inspect, evaluate and execute the concept, they form a better understanding of its technical requirements. For example, they may find out that implementing the project would be extremely expensive. ROI on this kind of insight will naturally be substantial.</p>
<p>So, when you&#8217;re pondering upon the Next Big Thing, actualize it as fast as possible. You will be greatly enhancing the time you can use on the right ideas.</p>
]]></content:encoded>
			<wfw:commentRss>http://leonidasoy.fi/2010/01/04/success-or-failure-fast-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

