Building for now

I recently came across a post on jeremy millers blog which stood out for me, amongst the content was the idea that by applying agile design we can build software for the here and now and be confident that in future if we need to for example expose functionality over a web service it will be a lot easier because the business layer will be nicely separated from the UI.

It demonstrates that we should not be drawn into trying to trying to use for example a web service for business logic calls as this has it’s issues including more complexity, overall more code to maintain, harder to debug, affects performance and that’s just for the present development in the future we may find that either the web service doesn’t get used by any other clients or that the contract supplied by the web service does not fulfill the clients needs.

So I guess the advice here is that trying to predict how your software will be used (setting up web service endpoints or creating over abstractions) is no substitute for employing sound design principles in your software (OCP, SRP, DIP etc…) and remembering YAGNI!