• Tags:: 🗞️Articles id:: 97c574a3-f406-40b6-8e79-711a1f05ebbd
  • Highlight::
    • “Writing is nature’s way of letting you know how sloppy your thinking is.” id:: ff45532d-c12c-4f66-8de2-21da3f9483f1
    • “The ability to use tools to find design errors is what usually leads engineers to start writing formal specifications. It is only afterward that they realize it helps them to think better, which makes their designs better.”
    • “Programmers who advocate writing tests before writing code often believe those tests can serve as a specification. Writing tests does force us to think, and anything that gets us to think before coding is helpful. ^^However, writing tests in code does not get us thinking above the code level^^. We can write a specification as a list of high-level descriptions of tests the program should pass essentially a list of properties the program should satisfy. But that is usually not a good way to write a specification, because it is very difficult to deduce from it what the program should or should not do in every situation.” id:: 476aa552-58fa-4e04-aa82-0f9892482f49
    • “If we do not start with a specification, ^^every line of code we write is a patch^^. We are then building needless complexity into the program from the beginning. As Dwight D. Eisenhower observed: “No battle was ever won according to plan, but no battle was ever won without one.”
    • “Another argument against specification is that the requrements for a program may be too vague or ill-defined to be specified precisely. ^^Ill-defined requirements mean not that we do not have to think, but that we have to think even harder about what a program should do.^^ And thinking means specifying.”
    • “When performing any task, it is possible to save time and effort by doing a worse job. And the result of forcing a programmer to write a spec, when she is convinced that specs are a waste of time, is likely to be useless just like a lot of documentation I have encountered.”