lately, I find myself mostly writing markdown plans instead of code
in these plans, I
verbalize my thoughts on what the implementation should look like
link relevant files, which I found during my research phase
using GitHub Copilot, I can then turn these plans into code
essentially, the artifact of my work has inverted:
previously, I thought about a plan, and wrote code
now, I write a plan, and think about code (when reviewing it)
my main tool for thought has changed as well:
previously, I thought by wrangling code
now, I just think; Copilot wrangles
this is possible because the feedback-loop has become quicker, since coding can be largely automated
I often read discussions where developers say “agentic coding just doesn’t work”
that’s why, in the next few bullet points, I’ll share my current workflow in an attempt to explain the black magic
first of all, write a spec including:
what do you want to implement?
how can it be achieved?
where to make the changes?
take your time; for a medium sized task, this usually takes me 10-30 minutes
my current spec template looks like this:
### Description*1-3 high level sentences on what i want to implement*e.g.: "Users want to... Therefore we need a button to..."### Knowledge*all information required for the implementation as bullet points*e.g.:- you can get the data from /api/foo/bar- the result is a json object with a `bar` key### Plan (high level)*high level implementation plan as ordered list*e.g.:1. add the button to the [overview page](...)2. write component tests3. write api tests
before moving on, I verify the spec is understandable without extra context:
this is like checking code for un-imported dependencies
however, here a dependency means missing information rather than code
ideally, this spec contains only task-specific information
additional context should be supplied automatically via instruction files
instruction files are markdown files automatically sent with your prompt based on file-path patterns (applyTo regex in frontmatter).