The Lost Art of Prototyping
Even after years working in the Software Industry, I'm still amazed by how little emphasis companies put on building prototypes for their applications.
A prototype is a very basic version of an application, with limited functionality that still represents, in a very primitive way, the overall functionality of the final product. It doesn't have any fancy graphics or sound. There is a big difference between a prototype and an alpha release. An alpha may take months (or even years!) of development to attain, and is built on what will eventually be the final codebase. Art and other resources in the alpha are also nearly final. A prototype, on the other hand, is very limited in scope. In many cases it might not even run on the same platform that the final product will run in. It could feature stick figures, or recycled code from other products. Maybe it's a couple of static html pages, or maybe it's a text only console app.
Instead of creating prototypes, it seems that companies place an undo emphasis on the Design Documents. True, Design Documents are great way to express the overall vision of a product -- the Big Picture. However, there are at least two serious limitations of Design Docs:
1. The document will be out of date within 3 months. Guaranteed. And in many cases Producers don't have enough time (or don't care to) keep them updated.
2. The process of generating a design document does not effectively flush out obstacles and unexpected challenges to development.
I think the reason Design Documents are so central to most companies' processes is that they are something very much within the capabilities of a Producer alone. A prototype, on the other hand, can (usually) only be created collectively by a producer and a programmer. Many times the programmer is too busy fixing bugs in their past releases, so there just isn't any time to dedicate to a prototype. Though, in the long run, a prototype could make the final release less buggy, it simply isn't seen as a priority during the pre-production stage. It is a vicious cycle.
Prototype code will usually not make it into final product, but it is proof that the ideas behind the product are sound. It should only takes a few weeks, or maybe a few days, for one person to develop a reasonable prototype most products.
A prototype is a very basic version of an application, with limited functionality that still represents, in a very primitive way, the overall functionality of the final product. It doesn't have any fancy graphics or sound. There is a big difference between a prototype and an alpha release. An alpha may take months (or even years!) of development to attain, and is built on what will eventually be the final codebase. Art and other resources in the alpha are also nearly final. A prototype, on the other hand, is very limited in scope. In many cases it might not even run on the same platform that the final product will run in. It could feature stick figures, or recycled code from other products. Maybe it's a couple of static html pages, or maybe it's a text only console app.
Instead of creating prototypes, it seems that companies place an undo emphasis on the Design Documents. True, Design Documents are great way to express the overall vision of a product -- the Big Picture. However, there are at least two serious limitations of Design Docs:
1. The document will be out of date within 3 months. Guaranteed. And in many cases Producers don't have enough time (or don't care to) keep them updated.
2. The process of generating a design document does not effectively flush out obstacles and unexpected challenges to development.
I think the reason Design Documents are so central to most companies' processes is that they are something very much within the capabilities of a Producer alone. A prototype, on the other hand, can (usually) only be created collectively by a producer and a programmer. Many times the programmer is too busy fixing bugs in their past releases, so there just isn't any time to dedicate to a prototype. Though, in the long run, a prototype could make the final release less buggy, it simply isn't seen as a priority during the pre-production stage. It is a vicious cycle.
Prototype code will usually not make it into final product, but it is proof that the ideas behind the product are sound. It should only takes a few weeks, or maybe a few days, for one person to develop a reasonable prototype most products.