5 ms·
TFA seems to build upon confusion of how "simplicity" is defined. It's easier to compare it against "complexity" which is the sum of parts; e.g. a complex mach
by ftvy 7y ago
TFA seems to build upon confusion of how "simplicity" is defined.
It's easier to compare it against "complexity" which is the sum of parts; e.g. a complex machine, so "simplicity" must be attributed to an atomic design of "the smallest part which cannot be broken any further"; i.e. think of a simple machine like a lever.
- mattbuilds 7y agoI’ve actually been writing a post about just this concept. When I think simple, I think solving the problem in a way that adds value and doesn’t have unnecessary overhead. I think it’s important to highlight the differences between simple, complex, and complicated (like from the Zen of Python). The basic idea is that if possible you want a simple program, but most problems aren’t that’s simple. So the solution needs to be complex with lots of parts. Those parts can and should be simple though. Complicated means adding things that don’t any value. Maybe it’s using containers on a CRUD app that doesn’t need it because it looks good on a resume.
- mbrock 7y agoI think Ousterhout’s pragmatic definition of complexity is the best one when discussing actual code bases: complexity is anything that makes the system hard to change, taking into account how often the relevant part needs to change.
- frou_dh 7y agoHard to change is subjective. Maybe something you found hard to change, your colleague would have no trouble with. And vice versa.
- rob74 7y agoYeah, some colleagues have absolutely no trouble changing any code... and then it starts breaking for some edge cases that they weren't aware of :D
- mbrock 7y agoYeah, with this definition, complexity is something you notice as a working team, not something you can directly measure with syntactic criteria (of course syntactic criteria may correlate with the complexity).