The Golden Middle Path - a blog by Amit K Mathur

Before you write that code...

So you have decided that you are going to implement your big idea and may be you have also hired your favorite developer. There is nothing that a programmer loves more than writing code – they would just want to get hacking. But in my experience, there are some essential things you should
do before you get to writing code.

  • Prepare a page flow diagram: You should have a clear enough idea of all the important pages and how they link together. You should be able to walk through the steps a typical user would go through while using your application.

There’s a whole field devoted to dividing the user flows into pages and laying out information on those pages. But, you don’t have to get fancy. As the 37Signals guys recommend in their fantastic book Getting Real, just a rough sketch on paper is enough.

Ideally you should also get the graphic design done based on this page flow diagram. But, at least get the page flow diagram prepared before you write any code.

For a lot of projects, the page flow diagram serves as good as a requirements doc; and it is a lot less work. You certainly want to make sure you got your vision into your dev’s brain. It is a good way to do it.

  • Make a high level task list: Based on the page flow diagram, sit down with your engineer and make a list of tasks. My favourite tool for capturing task level breakdown is Pivotal Tracker. But, you could easily use anything else or even paper.

Try, Redmine, Unfuddle or Mingle

All of these tools can also serve as the bug database once the project gets going.

  • Get estimates: You should try to get an idea of the effort estimate, in terms of days or weeks, for all the tasks you have listed. It will be rough and would most likely prove to be inaccurate. But the actual numbers are not important. Rather, it will help you see the relative cost of different features.

In any case, it will help you prioritize tasks. You already knew what was important and not so important for your business. Now you know how much they roughly cost. Do it. Quite often, it is surprising.

  • Get detailed estimates: Just before you are about to start implementation, ask for detailed estimates for at least the first few tasks. You should try to fill at least the next two weeks with work.
  • Ask for a status report: Most likely, whatever estimates you have got at the beginning is going to change as project progresses. Also, you are going to change your mind about features that you want implemented. A weekly status report is a good way to keep track of these things.

Make sure to include the following in the reports:

  1. List of tasks completed last week with amount of time spent on each task
  2. Tasks which will be worked on in the next week
  3. Important discussions that happened and decisions taken

Of course, these reports will help you settle invoices later.

  • Set up a regular call schedule: This is very much dependent on the momentum of the project and what suits the team. The underlying point is take regular stock of how things are progressing.
  • Arrange for a staging server: While your app is under development, you should arrange for it to be deployed some place where you can review it. It could be some shared hosting or a cheap VPS plan.
Make sure to protect the staging server with an htpasswd to prevent casual visitors from any unauthorized peek and stop crawers and search engines. Also, if you are developing a data driven app where you are storing seed data in the staging server while you are developing the application, make sure it is backed up.
  • Arrange for source code repository: The code that your engineers are developing for you are really the only “thing” you are producing. It is worth protecting it safely. Make sure you arrange for a code repository (Subversion and Git are popular these days) and make sure it is safely backed up. Good ones are: Github, Unfuddle and Assembla). It also serves as an important development tool – most developers worth their salt won’t write any code without it.

Final words

If you are interested in being more thorough, you can start by reading the Joel test and of course no discussion of software development can be complete without a reference to The Mythical Man
and The Code Complete

Although, this is a discussion on things to do at the beginning of a project, I should mention that you should make sure to arrange for QA soon after you start.

Of course, this is just the beginning and similarly there are other important things for the in-progress and the at end of a project to take care of as a business owner. On that, sometime later.


2 Comments Added

Join Discussion
  1. tan
    tan Oct 29, 2009 at 9:19 AM

    I have been devouring your blog day by day..the Joel test is really good. I especially like the impossible question. While interviewing senior people rapidfire also works out good. This way one can get the “real” person out.

  2. Pradeep Achuthan
    Pradeep Achuthan Apr 07, 2012 at 8:09 AM
    I have been watching your blog once in a week. And it is really excellent. I really love the articles and tutorials explained here. Its a great learning experience for me as well. I am a novice ROR Developer who likes to know more and more about the technology.

Post a comment

(Formatting help)