TFTSS = Too Fancy Too Soon Syndrome

Many apps create very fancy solutions to problems that have far more elegant and basic solutions.

DEP = Dont embrace perfectionism

Perfectionism can be good if you can do it quickly, but it doesn’t always need to be perfect. Sometimes, perfection takes 80% of the time, where you could have been done with something that ‘just works’ in 20% of the time. Therefore, it’s often better to prioritize on something that ‘just works’

RYUOAPA - repeat yourself until obvious abstraction possibilities arise. Don’t create leaky abstractions (abstractions creating inefficiencies) or abstractions used completely differently every time. Also, it may be useful to have a few more repetitions until you know the scope of the abstractions before actually making the abstraction and having to edit it many times afterwards.

TIN = Type if necessary

Writing Tests vs. Selective Monkey Testing : you can’t write tests for everything.

CPP - Conventions Patterns Programming: Create conventions and patterns that are the same over the whole codebase

Abstraction layers should be thick and elegant, and not leaking. Thin layers are horrible for time to context

Composition over Inheritance: inheritance creates layer upon layer. You can’t see through those layers easily. Composition ensures there is a great overview, everything is in one picture. It’s essential to time to context

YAGNI = you ain’t gonna need it

KISS = keep it simple stupid. Don’t overengineer

DOP: Don’t optimize prematurely- Premature optimization is the root of all evil

KTTA - keep the team aligned

Low Learnability principle