Remix.run Logo
liampulles 6 hours ago

One of the biggest productivity improvements I've had as a developer was to make a habit of planning all my work upfront. Specifically, when I pick up a ticket, I break it down into a big bullet point list of TODOs. Doing it this way leads to a better design, to dealing with inter-ticket dependencies upfront, to clarifying the spec upfront (which yes, is part of your job as a senior developer), and most valuable of all it allows me to get into flow state much more regularly when I am programming.

Its not a surprise to me that this approach also helps AI coding agents to work more effectively, as in-depth planning is essentially moving the thinking upfront.

(I wrote more about this here: https://liampulles.com/jira-tickets.html)

scruple 11 minutes ago | parent | next [-]

I do this process for myself but I also make it a ritual with the juniors and mids I mentor. We'll sit with a new ticket together and do a little brainstorming session. This typically helps me give them a higher-level view of how the specific unit of work fits into the overall ecosystem and provides a lot of clarity that is often sorely lacking in ticket descriptions. Ultimately it'll culminate in a small series of bullet points that describe our intention for the implementation. And I'm very deliberate about the words I choose. Intentions are just that and they will often not survive first contact with the enemy. That's totally fine and when that happens we typically discuss it asynchronously or a quick chat after standup. It's a collaborative process but it has a lot of autonomy baked in.

In my work notes (a giant Markdown file, e.g. 2025.md), my process is extremely similar to the OP, all the way down to the serialized checklist of items being marked off once they're completed.

cushychicken 4 hours ago | parent | prev | next [-]

Waterfall gets an unnecessarily bad rap.

Nobody who delivers any system professionally thinks it’s a bad thing to plan out and codify every piece of the problem you’re trying to solve.

That’s part of what waterfall advocates for. Write a spec, and decompose to tasks until you can implement each piece in code.

Where the model breaks - and what software developers rightly hate - is unnecessarily rigid specifications.

If your project’s acceptance criteria are bound by a spec that has tasked you with the impossible, while simultaneously being impossible to change, then you, the dev, are screwed. This is doubly true in cases where you might not get to implementing the spec until months after the spec has been written - in which case, the spec has calcified into something immutable in stakeholders’ minds.

Agile is frequently used by weak product people and lousy project managers as an excuse to “figure it out when we get there”. It puts off any kind of strategic planning or decision making until the last possible second.

I’ve lost track of the number of times that this has caused rework in projects I’ve worked on.

pydry 3 hours ago | parent [-]

>That’s part of what waterfall advocates for. Write a spec, and decompose to tasks until you can implement each piece in code.

That's what agile advocates for too. The difference is purely in how much spec you write before you start implementing.

Waterfall says specify the whole milestone up front before developing. Agile says create the minimum viable spec before implementing and then getting back to iterating on the spec again straight after putting it into a customer's hands.

Waterfall doesnt really get a bad rap it doesnt deserve. The longer those feedback loops are the more scope you have for fucking up and not dealing with it quickly enough.

vjvjvjvjghv 3 hours ago | parent | next [-]

I don’t think this whole distinction between waterfall and agile really exists. They are more like caricatures of what really happens. You have always had leader who could guide a project in a reasonable way, plan as much as necessary, respond to changes and keep everything on track. And you have people who did the opposite. There are plenty of agile teams that refuse to respond to changes because “the sprint is already planned” which then causes other teams to get stuck waiting for the changes they need. or you have the next 8 sprints planned out in detail with no way to make changes.

In the end you there is project management that can keep a project on track while also being able to adapt to change and others that aren’t able to do so and choose to hide behind some bureaucratic process. Has always existed and will keep existing no matter how you call it.

cushychicken 3 hours ago | parent | prev [-]

>The difference is purely in how much spec you write before you start implementing.

Ah, and therein lies the problem.

I’ve seen companies frequently elect “none at all” as the right amount of spec to write.

I’d rather have far too many specs than none.

ChrisMarshallNY 4 hours ago | parent | prev | next [-]

I wrote this, a few years ago, about being careful to avoid "concrete galoshes"[0].

I've found that it's a balancing act; like so many things in software development. We can't rush in, willy-nilly, but it's also possible to kill the project by spending too much time, preparing (think "The Anal-Retentive Chef" skits, from Saturday Night Live).

Also, I have found that "It Depends" is an excellent mantra for life, in general, and software development, in specific.

I think having LLM-managed specs might be a good idea, as it reduces the overhead required to maintain them.

[0] https://littlegreenviper.com/various/concrete-galoshes/

cushychicken 2 hours ago | parent [-]

I for one really like developing and co-managing specs with an LLM.

I think it’s a great conversational tool for evaluating and shaking out weak points in a design at an early phase.

MetaWhirledPeas 3 hours ago | parent | prev | next [-]

> One of the biggest productivity improvements I've had as a developer was to make a habit of planning all my work upfront. Specifically, when I pick up a ticket, I break it down into a big bullet point list of TODOs.

You're describing Agile.

jcelerier 3 hours ago | parent | next [-]

How an individual developer chooses to process a single ticket is completely unrelated to agile or waterfall. Agile is about structuring your work over a project so that you get a happy customer who ends up with what they actually needed and not what they thought they wanted when they signed the contract and that turned out to be completely not what they needed after two months.

liampulles 2 hours ago | parent | prev [-]

I agree with you. I think this is the Plan step in a "Plan-Act-Reflect" loop.

liampulles 2 hours ago | parent | prev | next [-]

Just to further clarify what I said above: What I talk about here specifically is for the developer who picks up a ticket to flesh out and plan the ticket before diving into code.

This doesn't say anything about what is appropriate for larger project planning. I don't have much experience doing project planning, so I'd look to others for opinions on that.

microflash 5 hours ago | parent | prev | next [-]

This is how I approach my stories as well. I used to call this “action plan” way before it became fashionable with the rise of AI agents.

It helps me not only reduce the complexity into more manageable chunks but go back to business team for smoothening the rough edges which would otherwise require a rework after review.

skywhopper 5 hours ago | parent | prev [-]

It doesn’t seem like you read the article, which argues against this sort of pre-planning.

liampulles 5 hours ago | parent [-]

The article itself advocates that one should "split complex requirements into multiple simple ones." So I don't disagree here, at least I don't think I do.

If we have a differing interpretation of what the article is motivating for, then please take the opportunity to contemplate an additional perspective and let it enrich your own.

mr_toad 5 hours ago | parent [-]

This all seems like a re-hash of the top-down vs bottom-up arguments from before the 90’s (which were never resolved either).

colechristensen 4 hours ago | parent [-]

There are two extremes, having everything you do planned up front, and literally planning nothing and just doing stuff.

The power of agile is supposed to be "I don't need to figure this out now, I'll figure it out based on experimentation" which doesn't mean nothing at all is planned.

If you're not planning a mission to Jupiter, you don't need every step planned out before you start. But in broad strokes it's also good to have a plan.

The optimum is to have some recorded shape of the work to come but to give yourself space to change your mind based on your experiences and to plan the work so you can change the plan.

The backlash against waterfall is the result of coming up with very detailed plans before you start, having those plans change constantly during the whole project requiring you to throw away large amounts of completed work, and when you find things that need to change, not being able to because management has decided on The Plan (which they will decide something new on later, but you can't change a thing).

For some decisions, the best time to plan is up front, for other decisions the best time to design is while you're implementing. There's a balance and these things need to be understood by everybody, but they are generally not.

jrs235 3 hours ago | parent [-]

I like to split out exploration and discovery (research) as a third step (the first step) in the process. Before a plan can be devised research needs to be conducted. The more time between research, planning, and execution increases the likelihood of rework or failure.

The best time to plan is dependent on how stable/unstable the environment is.