• paul.knibbs (9/25/2013)


    simon.crick (9/25/2013)

    However, I still believe that any system, no matter how large or complex, can always be broken down into simple components that can easily be coded correctly.

    Then your point of failure becomes the communication between all these simple little components. It only takes a mistake in documentation for one part of your program to call another with incorrect parameters, and suddenly the whole thing comes crashing down in your lap. In addition, it's always possible for code to produce unexpected results even when it's entirely syntactically correct--compilers and interpreters are written by programmers who make mistakes, just like your own code is!

    Yes, you still need a good set of integration tests to ensure there were no misunderstandings at the interface level, but there is no excuse for bugs within individual components.

    I'm not saying that we can ever achieve perfection (clearly that is not possible when humans are involved), but I do believe that we should be aiming for perfection.

    To start out with the goal of writing anything less than perfect code, is a sure way to create a system riddled with bugs.

    Simon