Spec before code
I start a new module with research, an initial spec, and a design doc; only then do I prototype. I make an exception for things simple enough that a prototype is faster than a document, and even then I have at least a rough spec.
Questions before architecture
Before I design a system, I identify the questions I need to answer for that particular system. I do not keep one list that covers every case. A subsystem forces different decisions than an editor layer, and both differ from an API I expose to Blueprints. Finding the right questions is often harder than answering them.
Only then do I build the architecture around those answers. Whatever I leave unresolved at this stage comes back anyway — this time as a refactor halfway through production.
External memory: Obsidian + Linear
Specs, designs, ideas, and tasks do not live in my head. I keep notes and design docs in Obsidian and track tasks, statuses, and roadmaps in Linear.
How I organize work
On the team, I work in two-week sprints mixed with waterfall-style phases, and the balance shifts depending on the stage of production. Pre-production tolerates more chaos. The closer we get to release, the more rigid the plan becomes.
For personal projects, it is usually enough to sort a task list by priority and work through it from the top.