First for the feature, then for the situation that created it.
The second answer usually tells you what the software really needs to support.
Dejan Vukadinovic
Thought process
This is the part of the site closest to how I naturally work. I enjoy interviewing clients and customers, understanding how they think about the problem, and helping turn that into features a team can build without guessing.
Requirements loop
Nothing mystical here. Just a repeatable way to avoid building the wrong thing confidently.
Ask how the work happens now, who is involved, what breaks, and which decisions are harder than they look.
Separate wishes from needs, name assumptions, and turn vague requests into scenarios that can be discussed.
Make roles, states, deadlines, data, handoffs, and exceptions visible before committing to implementation details.
Write requirements clearly enough to build, then update them when real feedback shows a better path.
Principles
These are not rules for every situation. They are defaults I reach for when a project is still unclear.
The second answer usually tells you what the software really needs to support.
A short note often prevents a long misunderstanding later.
“What happens when...” is one of the most useful engineering questions.
Good structure helps the system change without pretending we know everything upfront.