Friday, November 25, 2005

Complexity

Once of the things I struggle most with in programming is managing applications as they become bigger and more complex. The temptation is to develop for the here and now, but we all know that whether it be your employer or a customer, they'll always want more and they want their application to evolve and do things you never thought they would want.

In my opinion, the trick is to build flexibility and customisation into every part of the application you need. One can guarantee that if the ask for a particular thing to be changed, they will soon ask for something else to be changed. The second trick is to build abstraction into every part of the application, especially where specific entities are concerned; OOP makes this easier, but there is no reason why this cannot also be done with modular programming.

So as an application evolves, need it become more complex? In my opinion, it is inevitable that it will, just as with the evolution of life. With software development however, it is a lot easy to allow things to get out of hand and do too much, adding those "nice to have" features, which will impress your employer or customers, but neglecting the main requirements. I am saying this to myself for future reference as well as anyone out there who may be reading this. Whether it be a new project or an evolving project, write down some requirements, which "must" be implemented, tested and working before adding those extra bits.

2 comments:

Anonymous said...

It's vital to build a good framework (as you say) so that the basic functions can be created and then the nice bits can be hung on the solid base.

Adam said...

Yes; the effort put in initially does pay dividends in the fututre. I am also finding however, working closer to the industry now, that there needs to be a line between elegancy and complexity. We cannot make an application to suit every possible need, because the requirements will evolve.