Waterfall vs. iterative development

The waterfall method of development is inherently broken. Applications evolve, requirements evolve, clients change their mind, and the web moves forward at an ever-accelerating pace.

Why were developers forced into using waterfall development in the past?

Definitions

(From Wikipedia: Iterative and incremental development)

Waterfall development: physical examples

In some cases, falling down the boulder-strewn and dangerous waterfall is both inevitable and unavoidable. For example:

A compromise: the advent of the internet

The internet allows software a major advantage over physical entities such as those described above. It enables numerous different ways of streamlining updates directly to the end-user:

Thus releasing software more often becomes possible.

The ideal solution: web applications

Web applications are ideal because they do not require versions at all. The application can simply be updated on the server side, gradually adding features as needed.

Of course, it remains a good idea to use source control and attribute version numbers to your application “releases” behind the scenes. It simply allows for these releases to become live for all users of the application instantaneously.

Thus web applications provide the ultimate freedom in releasing software whenever needed. This allows for advantageous iterative approaches to development, including the agile and scrum methods being buzzed about lately.

Live programming

The software on which this web application runs, Squeak, is unconventional (but not unique) in that it can be updated while it is running. This will be investigated in an upcoming post.