Conceptual Overhead

  • Similar to cyclomatic complexity

  • Python famously holds as a value “Explicit is better than implicit”. This is not something Rubyists (or many functional programmers) value, instead favoring compactness or “elegance”

    • More compact the code, or the use of language, library, and framework features (which are not well known) can exclude people from understanding or contributing

  • verbosity vs complexity

  • General coding concepts vs less popular coding concepts

  • More complex domain vs less complex domain

    • this will always be a sticking point, and hard to split apart

    • yes can look at parts of the domain (abstract them - methods, classes), but as a whole you need to combine the parts

      • but following the flow can be hard

    • Cannot remove it as it is part of the requirements

    • Thus having less complex code (syntax/language features/patterns etc) allows your brain to spend more time being able to comprehend the main complexity that the app exists for (the domain)

  • Reducing conceptual Overhead

    • Increases the number of people who can understand the system. This, then, increases the number of people who can make changes to the system

  • elegance, beauty, compactness (and any other subjective measure) can be the bane of simplicity

    • stop writing professional code with this in mind

  • Acid test:

    • When doing some work, need to decide if it is worth adding some pattern, principle, language feature, library, framework etc, if it

      • Makes the code readable, the allows you to focus on the domain

      • Makes it easy to add domain features

      • Makes it easy to change or fix bugs

      • Makes it easy to find

  • https://naildrivin5.com/blog/2018/02/02/explicit-code-is-inclusive.html

  • https://naildrivin5.com/blog/2019/06/29/simple-expressions-only.html

Last updated

Was this helpful?