Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> If that baseline provides the minimum value the program is written to provide, then the program is by definition correct for its given purpose.

1. Do you know what minimum value the program is written to provide?

2. Have you defined your baseline such that it models the minimum value correctly?

3. How do you know? (You can apply this to both #1 and #2)

4. Does everyone on your team agree with #1 and #2? Do all your customers agree with #1 and #2? How do you communicate it so that everyone is in the loop?

5. Even if (by some miracle) you have managed to get #1-#4 absolutely correct, have you implemented/executed your tests correctly to define the baseline? Again, how do you know?

6. It is actually feasible, in my experience, to do #1-#5 for a few iterations, but then it becomes easy to forget the original #1 and #2. How do you record these over time so that you know that you haven't broken something in the meantime. How do you manage the size so that the complexity of the description is less than the complexity of the original source code (in order to avoid errors)?

I could go on (really, I could) but I hope you get the point. There will come a time where you will see that you have tests and that you are sure that the code adheres to those tests, but there will be no way to know if those tests are sufficient. In fact, there will come to be a time where nobody is really sure what the program is supposed to do because everyone has forgotten it and the descriptions (source code, tests, design documents, requirements documents) are so voluminous that there is no way for one person to cram them all into their head.

The humble programmer knows that the system probably does not work properly (despite having tested it) and is always looking for ways to tease out the problems.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: