Monday, March 23, 2009

You wan't a custom web application, specify with the builder

Several years ago everybody wanted to have a web site, with home page, flashy icons, cool logo etc. Now the interactivity is the current buzzword, and everybody and his mother turned to web applications driven by features such as search, comments, forum, widgets and so on.
And the scenario goes like this:
Client wants a custom web application. Sometimes the client makes the specification himself, sometimes hires a professional artist, and sometimes its just copy some competitor app with few tweaks here and there and of course different color scheme. After the spec is carved in stone with all those beautiful features and colors the programmers are hired, more often then not the lowest bidders, and after agreeing on deadline and budget project starts. Several passed deadlines, hugely overblown budget and a 2 teams of programmers later the project is still in a phase of miserable prototype. Client is pissed off and blames the stupid programmers because they didn't implemented the beautiful detailed requirements as specified.
I've seen this happening several times thrugh the eyes of both clients and programmers. And it usually ends with all side dissatisfied.
So the question is how to hire programmer to make your custom web application on time and budget?
1st Find a quality programmer or team leader if the project is larger. Explain roughly what you want, how much you're willing to pay and when you need the project done. Don't go for the cheapest as that will usually leave you with those with least experience and/or skills.
2nd Decide which web framework to use. If you don't know what web framework is think about it as a store with some prefabricated parts. Ask your programmer to tell you to tell you the list of frameworks he's experienced working with and check their web sites so you could see the demos and examples there. If the framework has a visual builder such as Visual Studio he can demonstrate available componenents.
3rd If you can afford it hire a designer too. Very few programmers have both art and functional skills, so without artwork your application will look amateurish at best and ugly at worst.

Now you can start making the specification with both of them on board. Clients knows what he wants or doesn't want. Designer knows what looks good. But its the builder who is crucial for succesful project. As client you may lay as many wishes as you want and designer can make the most beautiful artwork in the world wide web but that's just a dead paper (or pixels) without execution.
What's the catch?
Programmers are actually doing very little programming. Most of the time they're just assembling prefabricated components. The clients and especially designers want something custom, that looks good but its almost unattainable unless you have 7 digit budget. In that case I doubt you would be reading this. Even small changes on some prefabricated component propagates customization or creating a new component altogether that will usually eat the whole budget of every small to medium size project. And that's only for one component. Think of it as ordering a custom car. Designer thinks about drawing some beautiful concept on paper, but builder wants to use as much as possible parts that could be bought cheaply in every parts store. Also those prefabricated parts are battle tested on many cars before, every unique part doesn't have a track record. Do you really want to bet your life on custom brakes just because it looked better or you would rather use someone that were tested on millions of cars before? So if what you want isn't prefabricated ask the programmer if he could make it in a day, if its not ready after a day think of it as separate project and decide do you want to spend resources on it or use
something not quite right but available.

So to summarize:
1. Use prefabricated components from the framework or third party
2. Customize them with artwork through CSS
3. Treat everything that can't be done in a day as a separate project

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.