The summary.
SET UP THE IGNORE FILE BEFORE THE FIRST COMMIT
Once a secret is committed it remains in history. Rotate anything that was.
DISTINGUISH FRONTEND FROM BACKEND USING THE NETWORK PANEL
Wrong response means backend. Correct response with a wrong page means frontend. That alone saves considerable time.
Print the value and its type — a surprising number of bugs are a type assumption.
ASK DESIGNERS FOR EVERY STATE
The ideal state is usually all that is provided, and the rest gets decided during building, inconsistently.
Build with real content, including awkward examples. Placeholder content hides every problem real content will cause.
WITH CLIENTS, SETTLE OWNERSHIP AND MAINTENANCE IN WRITING
Domain and hosting in their name from the start, and someone named as responsible for maintenance — the default is that nobody is.
The first unbilled addition establishes that additions are free.
ESTIMATE IN SMALL PIECES, STATE ASSUMPTIONS, AND TRACK ACTUAL AGAINST ESTIMATED
That is the only way estimates improve.
CHOOSE TECHNOLOGY BY WHO WILL MAINTAIN IT
Technology nobody can maintain is a liability regardless of its merits.
INVEST IN THE SLOW-CHANGING FOUNDATIONS
The platform, security, performance and accessibility transfer between every framework and remain true.