curriculum-foundation icon indicating copy to clipboard operation
curriculum-foundation copied to clipboard

LG 03-04 (V2025) Reduce (drastically) the number of exam-relevant design principles

Open rhoadesre opened this issue 1 year ago • 7 comments

There are way too many principles that are exam relevant. Candidates in my opinion are "conceptual integrity", "simplicity", and "expect errors".

rhoadesre avatar Feb 11 '24 11:02 rhoadesre

@alxlo and @gernotstarke reviewed the existing principles and found NO candidate suited for deletion.

"Conceptual integrity" has been called by Fred Brooks as the "most important principle", and "simplicity" (KISS) seems highly relevant these days too...

Therefore I propose to close this issue

gernotstarke avatar Apr 08 '24 15:04 gernotstarke

In going with the KISS principle, I'd still like to reduce the number of exam-relevant principles.

rhoadesre avatar Apr 09 '24 10:04 rhoadesre

While I agree in principle, agreeing on which one to cut will be difficult.

To illustrate the point: I'd cut "conceptual integrity" (despite the fact that it was formulated by Brooks) - his definition is vague at best and esoteric at worst. If large projects depend on this, I'd consider an antipattern.

While I also value "simplicity", we probably don't agree what it means.

mikesperber avatar Apr 28 '24 09:04 mikesperber

Like many other topics, simply reduce the number of required principles and make the rest R3. Then every trainer can emphasize the principles they want. There was already agreement on what is test relevant.

rhoadesre avatar May 01 '24 17:05 rhoadesre

FLWG:

  • expect errors -> R3
  • abstractions (R2), other subtopics
    • models (see also #429)
    • (abstract) interfaces
    • patterns
  • SOLID: remove term, cherry-pick (remove SLI, keep OD)
  • replace simplicity by "reduce complexity (R1-R3)"
    • remove subgoal "as a means to reduce complexity (R1)"
    • KISS, YAGNI -> R3
    • move CUPID as subgoal here
  • remove "other principles"

gernotstarke avatar May 03 '24 08:05 gernotstarke

I remember the discussion about removing SOLID and keep only some of the principles. I agree to keep O and D and remove S and L. But why should we remove Interface segregation? That still makes sense for me not only for object oriented interfaces but also for all kind of APIs (multiple small interfaces than one).

sippsack avatar May 03 '24 12:05 sippsack

imho "interface segregation" is overly specific to be a general rule. Consider e.g. GraphQL interfaces, or interfaces having JSON or similar payloads - makes no sense in applying this "I" principle here. Therefore I'm still in favor of removing it

gernotstarke avatar May 03 '24 12:05 gernotstarke

See #430 on what we decided to do about Liskov.

mikesperber avatar Aug 12 '24 18:08 mikesperber

Dowgrading "expect errors" would also downgrade Postel's law, which is mentioned in exam questions. So I suggest to only downgrade "as a means to design for robust and resilient systems" to R3.

mikesperber avatar Aug 16 '24 15:08 mikesperber

See PR #490.

mikesperber avatar Aug 16 '24 15:08 mikesperber