Register

Log in

Topics

Archives

Meta

Writing Winner Specification Sheets

Ready to outsource work or hire a freelance programmer?

Well, if you talk to other people who have outsourced their work, 8 out of 10 people will have a bad story to share with you. Go to sites like Rentacoder or Elance and lookup coder ratings, you will definitely find lot of coders with some negative feedbacks as well. Now, this does not necessarily mean that the programmer was not good enough to complete the task assigned to him, but there definitely was a communication problem. Interestingly some of the fellow internet marketers I met in San Francisco in October 07 were discussing this with me, and they started talking about communciation problems, one said “This guy wrote better english than me, still we had a problem”.

Now let me get this straight, “Communication Problem” does not mean there is a language bar. Communication problem in this scenerio simply means that you were not able to tell him exactly what work you wanted done and that gave birth to misunderstandings. I have worked with several clients and have realised that one of the major problem with the clients is that they try work a little too hard to explain their requirements.

I and Mark Roth have been working together since 2005 and never did we have to go back and forth on any project we worked on. On the contrary I had some other client’s who were working too hard resulting in me going back to them so many times to make sure this is what they want.

So what made my and Mark’s communication so smooth?

The way we did the spec-sheet (specification sheets). To be honest with you, most of the times we didn’t even need to make a spec sheet, and you can achieve this with your programmer too, just if you understand what a programmer needs to know and what he doesn’t need to know.

Here is how a programmer needs to be told what to do:

Always start your spec-sheet in reverse.
Don’t start off saying I have a domain, need to host it, then make an index file which has this logo, blah blah blah. Wrong Approach. For the programmer to understand what you want, always tell them the end result first. Eg - I need a website that will have a database of e-greetings and the members of the site can send these e-greetings to their friends or family via email. To send an egreeting they need to be registered with the site.

With this said, the programmer has a very good idea of what kind of  product that you want. Then move on to the next step, describing how you want the site done, but stick to ONLY the functionality right now. I also want to have features like Tell-a-friend, social bookmarking icons for del.icio.us, digg, etc., bookmark link, birthday reminders.

Now explain the platform you wish to have
Stay away from the design component and tell the programmer the platform you would like to use and if you are open and flexible for the platform, let the designer know. eg- I would prefer using asp with MSaccess but if you have any recommendations, please let me know. I don’t have a server to host the site yet, so we can host this website on a server configuration as per your recommendation.

In this case, the programmer (especially if it was me) would get back to you telling you that I would prefer  using PHP and MySQL over a linux hosting. If you would have just said I prefer asp and ms access, the programmer would have either turned down your offer or quote a different price because now you are taking him out of his domain. So it is very important to let the programmer make some recommendations so he can deliver you the product in the language he is comfortable coding. Ofcourse you want to make sure he is suggesting a workable platform.

 Now is the time to discuss some Design
I know you are eagerly waiting to tell him your favorite color scheme and logo image, but to be able to make the programmer comfortable, it was important to give him a real picture of what he will be designing for you. Now that he/she undersands what the program will look like, he/she already has some ideas in his mind and can understand what you tell em.

I bought a template from ebay, got it dirt cheap, and I want to use that template for this site. I just need you to make it blue in color as I want the color scheme of this site to be bluish, just like Raakesh’s webmaster community. I have a logo I would like to use / I need a logo for my site, maybe you can make some suggestions, I want something that conveys the message “Free Online Greetings”. Let him make suggestions and you can pick one logo from there.

Additionally you can now give other directions like I need an optin box on the home page, etc etc.

Just because the programmer was told in the beginning what the product is, he / she is already visualising the end result and can understand each and everything you tell him/her.

This way of writing specification sheets will take your communication to the next level. It is pretty basic right? But still you didn’t really implement it because you were too busy working too hard trying to tell the programmer everything at one assuming that he has complete knowledge of the product as you do. Doesn’t work like that.

Here are a few tips that will help you write a better specification sheet:

  • Don’t expect the programmer to know anything about your product. Always think of how would you explain the product to a layman or a non-technical friend. This approach is fool-proof. It let’s you get started at a level and makes the programmer feel a lot comfortable as well.
  • Always be as clear about your flexibilites as you can. Tell them what you prefer, but be open to what they have to suggest.
  • Remember that once the product is completed, you should thoroughly test  it on atleast 5 different computer with preferably 4-5 different people. So keep your deadlines such that the programmer will have some extra time at hand to do the testing instead of working under pressure which can result in a product full of bugs (Another nightmare for you and the webmaster).
  • Be open to comments and suggestions. So many times I work with clients who have an idea of what they want but are not aware of what additional functionality can I add to their products.  So if given a chance to speak I recommend features that I am aware of as I designed them for someone else before. So let the programmer make some suggestions, you might have to pay more for each update so you dont have to implement whatever the programmer says but you atleast now know what can be added to the product.

Hope this information proves to be useful for you. If you have any questions, feel free to ask me.