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.