The definition of reactive and proactive is as follows:
- Reactive: Reacting to the past rather than anticipating the future
- Proactive: Acting before a situation becomes a source of confrontation or crisis
The economical crisis in USA is an example of reactive development - they could and should have solved it way before it became a crisis situation. The same thing can be said by a lot of application development.
Pros and cons for reactive and proactive development is as follows:
- In reactive development you solve matters as they arise. This can spark creativity and you can focus on the product rather than optimizing for millions of users. When issues come you are expected to have some sleepless nights :)
- In proactive development you solve matters before they become an issue. You generally spend more times on the optimizations (for example, improved security or caching of everything). Proactive development should make development more stable, but you could anticipate the wrong future and end up spending lots of time on something that isn't important
I think it's essential for a good developer to switch between reactive and proactive modes. Know where to focus and what's important and what isn't.
For example, backups and anticipations of future load should be proactive. You don't want to do backups after your database server has crashed. Same goes with load, if your load is maxed out today, then don't wait till your web site is down before you begin optimizations on reducing the load.
When developing new things thought, do everything in reactive mode - don't think about millions of users or that every user is a hacker wanting to take your site down.