Over the years I've used a lot of rapid development environments, from HyperCard back in High School through Lotus Notes, to Ruby on Rails. These tools let you get from nothing to actual functionality very quickly. Since starting something is so quick and easy, it's easy to assume that the rest of the development process is going to be just as quick and easy.
Sadly, that just ain't so.
With Ruby on Rails, you can build a semi-functional application just as quickly as making a mock-up. The problem is that this semi-functional application wouldn't have a rigorous security model, very little visual design, inconsistent labels and nomenclature, next to no underlying functionality or workflow, no documentation, no email or RSS or whatever, and probably no back-end management tools.
Once you've finished the initial development and get all the basics down, there is a long period of testing, tweaking, and making adjustments. I've noticed that this period isn't notably faster or less painful in 'fast' programming environments as they are in 'slower' ones. Each little adjustment doesn't often take much work to do - there are just lots of them.
Any application of any level of seeming sophistication will end up with a long nit-picking phase. I just read a great example of this, from Aaron Swartz, a post about his new site, jottit. At it's heart, it's a text box on the web that you type into and it shows up as a web page. Just a text box. It took five months from a team of notably good programmers:
So Jottit has launched, only five months after I suggested to my friend Simon that we create a website that was just a big text box people could type stuff into. And there are two ways I look at it. One is: It took us five months to do that? And the other is: We did that in only five months?When you look at what the site does, it seems pretty simple. It has few features, no complex algorithms, little gee-whiz gadgetry. It just takes your text and puts it on the Web. And considering how often I do that every day, it seems a bid odd that it took so long to create yet another way. And then I check the todo list.
Read the rest of the article here.