<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" 
      xmlns:thr="http://purl.org/syndication/thread/1.0">
  <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php" />
  <link rel="self" type="application/atom+xml" href="http://www.readwriteweb.com/atom.xml" />
  <id>tag:,2009:/1/tag:72.47.210.69,2007://1.3003-</id>
  <updated>2009-11-23T19:53:57Z</updated>
  <title>Comments for How To Create a Web App</title>
  
  <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.23-en</generator>
  <entry>
    <id>tag:72.47.210.69,2007://1.3003</id>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.readwriteweb.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=3003" title="How To Create a Web App" />
    <published>2007-10-04T08:13:00Z</published>
    <updated>2007-12-16T23:08:08Z</updated>
    <title>How To Create a Web App</title>
    <summary> digg_url = &apos;http://digg.com/tech_news/How_To_Create_a_Web_App&apos;; digg_bgcolor = &apos;#ffffff&apos;; digg_skin = &apos;compact&apos;; This is the second post in our series on how to run a startup and develop a product. In part one, How To Bootstrap Your Startup, we outlined the process of bootstrapping your company into existence. In this post, we show you how to go...</summary>
    <author>
      <name>Matt Rogers</name>
      
    </author>
    
    <category term="How To" />
    
    <content type="html" xml:lang="en" xml:base="http://www.readwriteweb.com/">
      <![CDATA[<p><font style="float: right"><script type="text/javascript">
digg_url = 'http://digg.com/tech_news/How_To_Create_a_Web_App';
digg_bgcolor = '#ffffff';
digg_skin = 'compact';
</script>
<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></font>This is the second post in our series on how to run a startup and develop a product. In part one, <em><a href="http://www.readwriteweb.com/archives/how_to_bootstrap_your_startup.php">How To Bootstrap Your Startup</a></em>, we outlined the process of bootstrapping your company into existence. In this post, we show you how to go from idea to specified product. By the end of it, you‚Äôll know how to build a mock-up of your business idea and write the most important document you‚Äôll write for the company: your functional specification. </p>
<p>For a simple system the process outlined in this post should take you a month. For a complex build, there will be a lot more research and your mock-up and functional specification will be big - so budget 3 months of full-time work.</p>
<h2>A Word on Strategy </h2>
<p>Every good business begins with a solid understanding of the proposition and business plan - in short, your strategy. It's worth reading Guy Kawasaki‚Äôs <a target="_blank" href="http://blog.guykawasaki.com/2005/12/the_102030_rule.html">10/20/30 Rule of Powerpoint</a>; it‚Äôll provide you with an idea of what should be included in your business plan and strategy. Your actual business plan should be in a lot more detail than Guy describes in his post ‚Äì his rules relate only to how the results of your work should be presented, not how the content should be derived.</p>]]>
      <![CDATA[<h2>From Strategy to Development </h2>
<p>Whether you are out-sourcing or developing in-house there are two ways to build a system:</p>
<ol>
	<li>Give your developers a rough idea of what to build and keep iterating the design as they build it;</li>
	<li>Give your developers detailed documentation of what to build.</li>
</ol>
<p>When out-sourcing, the second option is <strong>always</strong> cheaper, faster and lower risk. Not only that, but the end product will be better architected, more coherent and easier to maintain. Given this, it might surprise you to learn that the <em>vast</em> majority of out-sourced developments do option 1.
  
  Don‚Äôt do it - option 2 is more work at the start but entirely worth it.
  
  The basic premise of option 2 is simple: instead of relying on your developers to think through your business properly, you take responsibility yourself. You‚Äôll do this in two ways - firstly by creating a mock-up and then by documenting that mock-up in a functional specification. </p>
<h2>Your mock-up </h2>
<p>The first thing you need to do is get yourself tooled up is to create your mock-up.
  
  This requires a visual web-editor (assuming you‚Äôre building a web-application). Personally I use <a target="_blank" href="http://msdn2.microsoft.com/en-us/express/aa700797.aspx">Visual Web-Developer</a> from <a target="_blank" href="http://www.microsoft.com">Microsoft</a> -  it‚Äôs free and powerful. However, it is also very complicated to use, as it‚Äôs a full web-development environment. If you don‚Äôt know how to code in C# then it is probably easier and faster to use <a target="_blank" href="http://www.adobe.com/products/dreamweaver/">Dreamweaver</a>, <a target="_blank" href="http://www.microsoft.com/frontpage/">Frontpage</a> or the freeware <a target="_blank" href="http://www.kompozer.net/download.php">KompoZer</a>.  </p>
<p>A mock-up is a run through of your site and the learning process you‚Äôll go through as you create it will be exceptionally revealing. It sounds simple, but when you start to put pen to paper you‚Äôll very quickly find that it isn‚Äôt. Your mock-up is the first stage of building a real understanding of what your system has to do.
  
  The mock-up should contain no functionality and doesn‚Äôt need the final graphic design. Its objective is to help your developers understand what information the system should capture, when it should be displayed and what it should do when the user "does stuff" on your site.  </p>
<p>To give you an idea of how it should look and feel, I‚Äôve created a small <a href="http://www.aroxo.com/email/">mock-up of an email service</a> for you to peruse. Granted it is a mock-up for a terrible email service, but it should serve the purpose of detailing what a mock-up should be. When you‚Äôre building the mock-up, remember to include an admin interface ‚Äì believe it or not, it is easy to forget to include this. Make sure you think through how you will administer the system, handle customer queries, examine user accounts, run reports on user numbers and website traffic, etc. </p>
<p>Only when you‚Äôve completed your mock-up and been through several iterations with any other business partners, are you ready to move onto the next stage - documenting it in a functional specification </p>
<h2>The Functional Specification </h2>
<p>This document is the most important document that you‚Äôll write for your business. It will tell the developer <strong>exactly</strong> what your system should do. It will contain every page you‚Äôve created in your mock-up; and for each screenshot it‚Äôll explain what‚Äôs happening on the screen, what the user can do from there and what the system should be doing in the background. The document is called a "functional" specification because it should describe "what" your system does, rather than "how" it should be done.</p>
<p>The first thing you need to do is get tooled up. Write the document in Word (or an equivalent). You‚Äôll need to include a lot of screenshots - for this I‚Äôve always found the Firefox plug-in <a target="_blank" href="http://pearlcrescent.com/products/pagesaver/">Pearl Crescent Page Saver</a> invaluable, because it lets you take screenshots of a whole webpage (not just the part which is displayed).
  
  Secondly you need some software to create flow charts in. I used <a target="_blank" href="http://www.pacestar.com/wizflow/index.html">WizFlow</a> before we bought <a target="_blank" href="http://office.microsoft.com/en-gb/visio/default.aspx">Visio</a> from Microsoft. Wizflow is easy to use and does most of the stuff you‚Äôll need.</p>
<p>When you set out to write your functional spec, you need to follow a clear structure so that your developers  understand what you are saying. The structure which I always use is: </p>
<ul>
	<li><strong>Confidentiality notice</strong> ‚Äì make it clear that this document is your property and you are serious about controlling your IP</li>
	<li><strong>Introduction</strong> ‚Äì you should describe your company, the structure of the document and a one paragraph overview of your system</li>
	<li><strong>User scenarios</strong> ‚Äì Include at least 5 clearly written accounts of what a user might do on your system. These serve to ensure that everyone who ends up on the development team knows what the system is for. Write them as a chronological story.</li>
	<li><strong>Overview of the system</strong> ‚Äìfive page description of what you system should do; keep it very high-level and include a system overview diagram (see below).</li>
	<li><strong>End-user functionality</strong> ‚Äì a section for each system module (see below) in the system overview. Each section should include several sub-sections for each possible action within that module.</li>
	<li><strong>Administrator functionality</strong> ‚Äìsection for each admin module and sub-sections for each possible action.</li>
	<li><strong>Non-functional requirements</strong> ‚Äì design integration, SEO, availability and uptime requirements, scalability requirements and load calculation, data validators, security and back-up and the development platform (if you have one).</li>
</ul>
<p>Clearly in a blog post I cannot cover each of these in detail, but one element which is particularly important is your system overview diagram. Whilst the developers might not build the system in this way, it is useful for you to mentally split your system up into modules. I‚Äôve done a simple example using the email system used in the mock-up:</p>
<p><img src="http://www.readwriteweb.com/images/sysoverview.png" alt="System Overview" /></p>
<p>In the above simple example, the four boxes are the four major sections within the "End-user functionality" section of the functional specification. Within each section you should cover, with precision, what all of the possible actions are and what the system should do in each case. From this it is easy to build out your document structure. So for "user access" we‚Äôd need a sub-section on "Create account", "Log in", "Forgot password", etc.</p>
<p>Start by building out the document structure. Only when that is complete should you start filling out all the details. This way, you‚Äôll slowly build up your document without feeling overwhelmed by it. When you are writing one section, you‚Äôll get ideas for other sections ‚Äì when this happens go to the relevant section and add the thought in square brackets so that you know what to cover when you get to it.
  
  Trust me on this: only one person can author a functional specification. More than one person can review it, but only one person can author. </p>
<h2>A Word on AJAX </h2>
<p>You seemingly can‚Äôt launch a new web site these days without using a few dollops of AJAX here and there. However, you can‚Äôt incorporate AJAX into your mock-up, as there‚Äôs no functionality. Where there is a functional requirement for AJAX, you‚Äôll need to use a new page in your mock-up (the complete opposite of what AJAX gives you). Therefore you need to explicitly include your AJAX requirements in your functional spec. Personally I insert my AJAX requirements in a box, so they are clear to the developers.  </p>
<h2>Container Documents</h2>
<p>In parallel to writing your functional spec, start  the following container documents: </p>
<ul>
	<li>Future ideas for the development of the system;</li>
	<li>Legal points you want to make sure that are included in the terms and conditions;</li>
	<li>Any design thoughts (include here screenshots of website designs you like);</li>
	<li>Patent ideas;</li>
	<li>Marketing ideas.</li>
</ul>
<p>As you are working through your functional spec, you‚Äôll come up with lots of ideas in all of these categories (and possible more). Make sure you‚Äôve got simple lists you can just drop them into ‚Äì get them out of your head and into the computer as fast as you can, so  you maintain a clear mental space free from idea clutter.  </p>
<h2>Conclusion</h2>
<p>Creating a quality functional specification is a time-consuming - but essential - job. Take your time and do a quality job. Don‚Äôt be surprised if the document ends up being hundreds of pages long. But it vastly increases your chance of delivery.  </p>
<p>In the next post I‚Äôll be looking at how to build a long-list of developers, run an RFI to create a developer short-list, run an RFQ to select a vendor and a spare, and then what to look out for in the development contract.  </p>
<p><em><strong>[Ed:</strong> Thanks Matt for continuing this insightful series. To see how Matt puts all his theory into practice, check out his own start-up <a href="http://www.aroxo.com">Aroxo</a>. You can sign up for their beta trial using the code "readwriteweb2&quot;.]</em></p>]]>
    </content>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24438</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24438" />
    <title>Comment from Serkan on 2007-10-04</title>
    <author>
        <name>Serkan</name>
        <uri>http://tokyotronic.blogspot.com/</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://tokyotronic.blogspot.com/">
        <![CDATA[<p>Matt, thank you for yet another great and very useful post. More of this and faster, please;).</p>]]>
    </content>
    <published>2007-10-04T09:05:58Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24439</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24439" />
    <title>Comment from Matt on 2007-10-04</title>
    <author>
        <name>Matt</name>
        <uri>http://www.aroxo.com/blog/mattr</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.aroxo.com/blog/mattr">
        <![CDATA[<p>Sorry Serkan - next one will be faster out of the door!</p>]]>
    </content>
    <published>2007-10-04T09:18:59Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24440</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24440" />
    <title>Comment from Neil on 2007-10-04</title>
    <author>
        <name>Neil</name>
        <uri>http://dotneil.com</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://dotneil.com">
        <![CDATA[<p>Interesting post, Matt. I'm currently going through the spec process right now, but from a very different angle. I code in XHTML/CSS, so I'm spec'ing the service and coding the finished front-end all at the same time. I'll soon be ready for developers to come on board, and they'll see a very clear vision for the product (it looks and functions very much like a finished app). It takes me less time to put everything into code than it would do to write it out and plan it in Visio, and it also means that I'm actually building part of the finished product, too. I can't recommend learning XHTML/CSS highly enough for budding web entrepreneurs.</p>]]>
    </content>
    <published>2007-10-04T09:24:26Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24441</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24441" />
    <title>Comment from alex on 2007-10-04</title>
    <author>
        <name>alex</name>
        <uri>http://plasticshore.com</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://plasticshore.com">
        <![CDATA[<p>I am not sure if I am misreading this - but are you suggesting that a top down, water fall process works better then an agile /iterative development approach? I can see that there is a case to be made for both scenarios, but I do not see you making any. I think your oversimplified advise "don't do it" for option 1: "Give your developers a rough idea of what to build and keep iterating the design as they build it;" is highly problematic.</p>]]>
    </content>
    <published>2007-10-04T13:09:20Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24442</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24442" />
    <title>Comment from Matt on 2007-10-04</title>
    <author>
        <name>Matt</name>
        <uri>http://www.aroxo.com/blog/mattr</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.aroxo.com/blog/mattr">
        <![CDATA[<p>Hey Alex - I'm arguing that when you are out-sourcing your development you should ensure that you have a very clear brief and documented set of requirements.</p>

<p>If you are sitting next to your developers and they are directly employed by you, then the situation is different.</p>]]>
    </content>
    <published>2007-10-04T13:31:27Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24443</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24443" />
    <title>Comment from Garri on 2007-10-04</title>
    <author>
        <name>Garri</name>
        <uri>http://www.holidaypad.net</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.holidaypad.net">
        <![CDATA[<p>Great stuff Matt, cheers for sharing this, appreciated. I'm about to start authoring an idea and I totally appreciate your comment: only 1 person can author it.</p>

<p>In all of my projects, that 1 person is always me and I often feel that I probably spend more time documenting and writing up the specs than the people I hire spend implementing the ideas ;-)</p>]]>
    </content>
    <published>2007-10-04T13:48:30Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24444</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24444" />
    <title>Comment from Paul Stamatiou on 2007-10-04</title>
    <author>
        <name>Paul Stamatiou</name>
        <uri>http://paulstamatiou.com</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://paulstamatiou.com">
        <![CDATA[<p>This seems like a great opportunity for me to plug a series of articles I wrote discussing the technical side of coding your first, basic web app in PHP:</p>

<p><a href="http://paulstamatiou.com/2006/12/27/how-to-code-your-first-web-app-part-1/" rel="nofollow"><a href="http://paulstamatiou.com/2006/12/27/how-to-code-your-first-web-app-part-1/" rel="nofollow">http://paulstamatiou.com/2006/12/27/how-to-code-your-first-web-app-part-1/</a></a><br />
<a href="http://paulstamatiou.com/2006/12/28/how-to-code-your-first-web-app-part-2/" rel="nofollow"><a href="http://paulstamatiou.com/2006/12/28/how-to-code-your-first-web-app-part-2/" rel="nofollow">http://paulstamatiou.com/2006/12/28/how-to-code-your-first-web-app-part-2/</a></a><br />
<a href="http://paulstamatiou.com/2006/12/29/how-to-code-your-first-web-app-part-3/" rel="nofollow"><a href="http://paulstamatiou.com/2006/12/29/how-to-code-your-first-web-app-part-3/" rel="nofollow">http://paulstamatiou.com/2006/12/29/how-to-code-your-first-web-app-part-3/</a></a></p>]]>
    </content>
    <published>2007-10-04T13:51:27Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24445</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24445" />
    <title>Comment from Aaronontheweb on 2007-10-04</title>
    <author>
        <name>Aaronontheweb</name>
        <uri>http://www.ajaxninja.com/</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.ajaxninja.com/">
        <![CDATA[<p>Good post Matt. The only thing I would suggest is go into some detail about diagramming and illustrating requirements, such as suggesting diagram types (UML, Page flow, org charts) and perhaps diagramming tools (SmartDraw, Visio)</p>

<p>I find that this helps me express my vision in a way that developers can understand, and being a developer myself I can't begin to describe how much clearer a customer's requirements are when they're illustrated rather than spoken. There are innate vaguenesses in human languages which present challenges during the requirements phase of a project, but a lot of graphical languages like UML eliminate some of these clarity issues.</p>]]>
    </content>
    <published>2007-10-04T14:54:28Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24446</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24446" />
    <title>Comment from Rachan on 2007-10-04</title>
    <author>
        <name>Rachan</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>Another great post Matt!</p>

<p>Like some other commenters, I'm favor of "illustrating" requirements in addition to using text. Did you use wireframes at any stage of your mockups? Do you have any online tools to recommend for wireframes or mockups? It'll be really helpful if we could browse & import templates, and then tailor them to suit needs.</p>]]>
    </content>
    <published>2007-10-04T15:51:09Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24447</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24447" />
    <title>Comment from Matt on 2007-10-04</title>
    <author>
        <name>Matt</name>
        <uri>http://www.aroxo.com/blog/mattr</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.aroxo.com/blog/mattr">
        <![CDATA[<p>Hi Rachan,</p>

<p>We started on paper. Running through different ideas and concepts for how some of the key system stages should work. This enables to get us to a point where we were pretty confident in what the system should look like when we sat down to create the mock-up.</p>

<p>In practise, for Aroxo at least, our mock-up was almost like doing a RAD build, but without the functionality. Once we'd got a tight mock-up we'd won the battle.</p>

<p>M.</p>]]>
    </content>
    <published>2007-10-04T16:04:13Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24448</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24448" />
    <title>Comment from Matt on 2007-10-04</title>
    <author>
        <name>Matt</name>
        <uri>http://www.aroxo.com/blog/mattr/index.php</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.aroxo.com/blog/mattr/index.php">
        <![CDATA[<p>I notice that my site (www.aroxo.com) is currently down. There's an engineer currently looking at it, hopefully it (along with the email mock-up) should be back online within the hour.</p>]]>
    </content>
    <published>2007-10-04T16:05:45Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24449</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24449" />
    <title>Comment from Vladimir on 2007-10-04</title>
    <author>
        <name>Vladimir</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>As a Project Manager, working on different web projects outsourced to Ukraine I disagree with some parts of the approach mentioned here.  My experience says that if the development team relies on mockups and documents created by customers then the team and the project are in a real trouble. Documents and mockups created by the customer are awful in all cases!<br />
Why Matt doesn‚Äôt mention an option number 3? Create the right documentation TOGETHER with the development team. This is how we do it in our company with our clients who want to outsource with us. We create mockups, we create the right documentation. The documentation created by the client can be a starting point only. We ask questions and in most cases we‚Äôre trying to predict customer needs in the documentation to get started. The client always reviews the documentation and it‚Äôs much cheaper for him to make changes ‚Äì to the documentation, not the code.<br />
This part of work is paid separately. We create good documentation suitable for any development team. Then we estimate the development time and inform the client about our fixed price for the project within the scope specified in the documentation. The client can give the documentation to another team and run the project with them. Although this has never happened :-)<br />
With this approach the client is very confident that he gets what he wants, gets our consulting, and gets good documentation and gets correct price for the project which is easy to predict (estimate time) because requirements are known. I know about cases when our customers managed to get investor‚Äôs money with the documentation.<br />
Will you create full design for your future house on your own OR will you create a sketch and let the rest to be done by a professional architect?</p>]]>
    </content>
    <published>2007-10-04T16:13:01Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24450</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24450" />
    <title>Comment from Matt on 2007-10-04</title>
    <author>
        <name>Matt</name>
        <uri>http://www.aroxo.com/blog/mattr/index.php</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.aroxo.com/blog/mattr/index.php">
        <![CDATA[<p>Hey Vladimir - actually this is an entirely fair point, there's no reason why the developer cannot be paid to peform the work.</p>

<p>Thanks for your comment.</p>]]>
    </content>
    <published>2007-10-04T16:40:32Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24451</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24451" />
    <title>Comment from Amrit Hallan - HowToPlaza on 2007-10-04</title>
    <author>
        <name>Amrit Hallan - HowToPlaza</name>
        <uri>http://www.howtoplaza.com/</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.howtoplaza.com/">
        <![CDATA[<p>Great thoughts. I myself have worked for a few overseas projects (<em>as a programmer</em>) so I can relate to the need for better documentation and communication from the clients' side. Many projects fail because clients don't communicate the specs during the early stages.</p>]]>
    </content>
    <published>2007-10-04T16:59:12Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24452</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24452" />
    <title>Comment from Tjerk on 2007-10-04</title>
    <author>
        <name>Tjerk</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>This is a far too simplistic approach to developing a full software system. This will result ( most likely ) result in a bad designed system..<br />
And the functional requirements or not the only requirements. Think about quality requirements..</p>

<p>You cannot learn how to build a webapp in a single article</p>]]>
    </content>
    <published>2007-10-04T17:38:18Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24453</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24453" />
    <title>Comment from Steve Poland on 2007-10-04</title>
    <author>
        <name>Steve Poland</name>
        <uri>http://www.techquilashots.com</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.techquilashots.com">
        <![CDATA[<p>fyi - your mockup has errors:</p>

<p><br />
Warning: Unknown(e:\domains\a\aroxo.com\user\htdocs\email\): failed to open stream: Permission denied in Unknown on line 0</p>

<p>Warning: (null)(): Failed opening 'e:\domains\a\aroxo.com\user\htdocs\email\' for inclusion (include_path='.;c:\php4\pear') in Unknown on line 0</p>]]>
    </content>
    <published>2007-10-04T17:42:54Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24454</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24454" />
    <title>Comment from Ray Grieselhuber on 2007-10-04</title>
    <author>
        <name>Ray Grieselhuber</name>
        <uri>http://www.firewatching.com/ambient</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.firewatching.com/ambient">
        <![CDATA[<p>Great article. </p>

<p>I think, if you can swing it, the first round of the core technology / IP should be developed by the founders. Sometimes this means developing it in the evenings / on weekends and takes away from family time (if you have one) and marketing, etc. but you at least have it exactly as you wish. It's always a tradeoff.</p>

<p>Outsourcing can also be used effectively for the more mundane aspects of the project. I fully agree that everything must be well-documented up front. It's often too complicated to expect much of an agile dev model with people thousands of miles away. It works sometimes but you need a special team.</p>]]>
    </content>
    <published>2007-10-04T17:45:18Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24455</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24455" />
    <title>Comment from Matt on 2007-10-04</title>
    <author>
        <name>Matt</name>
        <uri>http://www.aroxo.com/blog/mattr/index.php</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.aroxo.com/blog/mattr/index.php">
        <![CDATA[<p>I know. There's a configuration problem with my server. The engineers are currently working on it. Very annoying as we just made the front page of digg. :(</p>]]>
    </content>
    <published>2007-10-04T17:45:26Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24456</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24456" />
    <title>Comment from nopnop on 2007-10-04</title>
    <author>
        <name>nopnop</name>
        <uri>http://backdoor.altervista.org</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://backdoor.altervista.org">
        <![CDATA[<p>Interesting post, and nice blog!!!</p>]]>
    </content>
    <published>2007-10-04T18:05:45Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24457</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24457" />
    <title>Comment from Rich on 2007-10-04</title>
    <author>
        <name>Rich</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>Good tip for app development:</p>

<p>Make sure that you separate the live version of your app from your testing version, or one you're adding new features to ("debuging!"). </p>

<p>Ahem, aroxo.com!  =)~</p>

<p>Hurry up and fix it so we can all see the app!</p>

<p>Rich</p>]]>
    </content>
    <published>2007-10-04T18:28:03Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24458</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24458" />
    <title>Comment from Oscar on 2007-10-04</title>
    <author>
        <name>Oscar</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>Hi, I run a business with a friend and we make custom web apps.</p>

<p>Please excuse my English as this is not my first language ;)</p>

<p>From my personal experience, it is best when before the start of the project you get together with the client and do as you suggest in option 2.</p>

<p>We get together with them and in 2 or 3 meetings compile a list as detailed as possible of the functionality and requirements of the project, this is what you would call the  detailed documentation of what to build.</p>

<p>After a few weeks of working on the project we get together again and do a review and more work. </p>

<p>Then, in the last week or so we go and finish the project with someone working where the actual project is going to be implemented. Talking to the people who are going to use it and getting immediate feedback from the client.</p>

<p>This is what has worked for us in making a better application.</p>

<p>Good luck =)</p>]]>
    </content>
    <published>2007-10-04T18:41:34Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24459</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24459" />
    <title>Comment from Songel Mahooga on 2007-10-04</title>
    <author>
        <name>Songel Mahooga</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>I'm sorry, but your web site is not working. Therefore, you are fired.</p>]]>
    </content>
    <published>2007-10-04T19:08:58Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24460</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24460" />
    <title>Comment from Rod on 2007-10-04</title>
    <author>
        <name>Rod</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>I agree with the article.  I am building a web app now. It is always better to build the mock-up of your service. You know what you want and how it should work.  Build out everything in css/xhtml and use javascript to open and hide divs with dummy data (for Ajax simulation).  Why do this? Because you'll be building it from a user's perspective which is? Right, the MOST IMPORTANT THING. It will change a lot, but by the time you have all the kinks worked out, all you have to do is use cases and you're ready to go.</p>]]>
    </content>
    <published>2007-10-04T19:44:49Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24461</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24461" />
    <title>Comment from Jason on 2007-10-04</title>
    <author>
        <name>Jason</name>
        <uri>http://www.CleverTools.com</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.CleverTools.com">
        <![CDATA[<p>Matt, </p>

<p> Awesome write up. I follow a very similar method for Clever Tools. As for mocking up, I use a great program called Axure. I worte an article about it at Rev 2 here: <a href="http://www.rev2.org/2007/09/25/axure-rp-prototype-your-startup-and-applications/." rel="nofollow"><a href="http://www.rev2.org/2007/09/25/axure-rp-prototype-your-startup-and-applications/." rel="nofollow">http://www.rev2.org/2007/09/25/axure-rp-prototype-your-startup-and-applications/.</a></a> It seriously is great software for mocking up and prototyping your web app.</p>]]>
    </content>
    <published>2007-10-05T06:35:53Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24462</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24462" />
    <title>Comment from Andy Pipes on 2007-10-05</title>
    <author>
        <name>Andy Pipes</name>
        <uri>http://mypipeline.co.uk/blog</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://mypipeline.co.uk/blog">
        <![CDATA[<p>Another point: if you're going to write long detailed functional specs, make sure that you reduce time wasted trawling through unnecessary bits by hyperlinking relevant sections, and ensuring that any interaction design (AJAX-style animations etc) are fully diagrammed alongside the user stories.</p>

<p>But in general, threshing out a concept through evolving user stories has IMO got the job done faster and with less 'fence tossing'. If you're outsourcing and can't get the product owner on site, use Basecamp or Huddle etc for collaboration. It's better to evolve and collaborate than try to annotate every one of your thoughts in a single document and hope that you've thought of everything (which invariably you haven't).</p>

<p>andy</p>]]>
    </content>
    <published>2007-10-05T16:40:18Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24463</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24463" />
    <title>Comment from Rachan on 2007-10-05</title>
    <author>
        <name>Rachan</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>I did some research for prototyping tools and found a few free stencils for Visio - www.swipr.com, www.guuui.com, <a href="http://looksgoodworkswell.blogspot.com/2005/11/visio-wireframe-toolkit-for-download.html" rel="nofollow"><a href="http://looksgoodworkswell.blogspot.com/2005/11/visio-wireframe-toolkit-for-download.html" rel="nofollow">http://looksgoodworkswell.blogspot.com/2005/11/visio-wireframe-toolkit-for-download.html</a></a></p>

<p>Axure is another tool I found (expensive, also mentioned above by Jason); here's a review of Axure - <a href="http://www.guuui.com/issues/02_06.php" rel="nofollow"><a href="http://www.guuui.com/issues/02_06.php" rel="nofollow">http://www.guuui.com/issues/02_06.php</a></a></p>]]>
    </content>
    <published>2007-10-06T04:05:59Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24464</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24464" />
    <title>Comment from Keith on 2007-10-06</title>
    <author>
        <name>Keith</name>
        <uri>http://www.neohide.com</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.neohide.com">
        <![CDATA[<p>That's quite a simplified version of this setup to create a web apps. It may be helpful to provide an example or a tutorial - I'll definitely learn a lot from there.</p>]]>
    </content>
    <published>2007-10-07T06:23:56Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24465</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24465" />
    <title>Comment from Rachan on 2007-10-18</title>
    <author>
        <name>Rachan</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>Hi Matt,</p>

<p>I'm wondering what your thought is about building webapps on top of existing CMSs (Drupal, Joomla etc). Did you look into them or do they not apply to your business?</p>

<p>-Thanks</p>]]>
    </content>
    <published>2007-10-18T14:54:29Z</published>
  </entry>

  <entry>
    <id>tag:72.47.210.69,2007://1.3003-comment:24466</id>
    <thr:in-reply-to ref="tag:72.47.210.69,2007://1.3003" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php"/>
    <link rel="alternate" type="text/html" href="http://www.readwriteweb.com/archives/how_to_create_a_web_app.php#c24466" />
    <title>Comment from Rick Marks on 2007-10-27</title>
    <author>
        <name>Rick Marks</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>Here's a review I saw yesterday at WebWorkerDaily about a really slick prototyping tool/service for web app development. </p>

<p><a href="http://webworkerdaily.com/2007/10/25/another-approach-to-free-collaborative-site-prototypes/#more-1251" rel="nofollow"><a href="http://webworkerdaily.com/2007/10/25/another-approach-to-free-collaborative-site-prototypes/#more-1251" rel="nofollow">http://webworkerdaily.com/2007/10/25/another-approach-to-free-collaborative-site-prototypes/#more-1251</a></a></p>]]>
    </content>
    <published>2007-10-27T12:45:25Z</published>
  </entry>

</feed>