A few questions regarding this article on design principles

Here: http://www.jwz.org/doc/worse-is-better.html

  • So, according to the worst - best philosophy, ease of implementation is the most important thing first?
  • Does the implementation follow the internal logic or?
  • What does "especially useless interface consistency" mean? I thought that consistency in the interface is very important.

Thanks everyone for the insightful moments!

+2


source to share


2 answers


It should be borne in mind that the author paints a picture of philosophy "worse, better", using a fairly wide brush to understand his point of view. The point of the article is that something that is designed to be perfect can either a) take too long to run, or b) be difficult or impossible to implement with sufficient performance. Instead, the article argues that it is better to sacrifice absolute perfection because small trade-offs tend to make the system easier to implement.

To refer to your individual points:



  • Yes. I think what the article means is this: Perfect design doesn't matter as long as it's so complex that it will never be implemented.

  • Implementation in this case simply means code that must be written to achieve a specific design.

  • This comment should be considered in context: "Consistency can be sacrificed for completeness if simplicity is preserved." The article argues that this is especially about interface consistency. In other words, it is better to have an incompatible interface with full functionality than a consistent interface with incomplete functionality.

+3


source


I think this is more or less agile coding style - working code is preferable to pretty code. Once you get the code working, you can make it pretty. It's easier than the other way around, going from pretty code to working code.

To get working code quickly, you have to cut out the corners. This means that the implementation should be as simple as possible. And it also implies that interfaces might not be composed if it makes the code complex. Fast execution of working code means sacrifice, consistency that is necessary but not required. Like many other things.



But there is a catch. You should be kind to leave when you code like this. Joel said it well.

+1


source







All Articles