Always challenge assumptions.
Never optimize too early.
Prefer simple architecture.
Design for future growth.
Reduce technical debt.
Avoid feature creep.
Every feature must solve a real user problem.
Think in systems, not screens.
Documentation is part of the product.
Code is only one part of software engineering.