Hacker News new | past | comments | ask | show | jobs | submit login
Getting things done in small increments (2022) (dubroy.com)
233 points by begueradj on Jan 1, 2024 | hide | past | favorite | 54 comments



My trick for this, which has been working extremely well for me over the past few years, is to make very heavy use of GitHub Issues.

Everything I'm working on, no matter how small, starts as an issue.

I post a continuous stream of comments on that issue as I make progress - documenting what I tried, what failed, what I've figured out, what micro-decisions I've made.

Many of my GitHub repos, both public and private, have issues with dozens of comments, all of which are me just talking to myself.

This is the single best solution I've ever found to the "interruption" problem. If I get interrupted, or distracted, I can read through my issue thread later and pick up where I left off.

I wrote a bit more about this approach here: https://simonwillison.net/2022/Nov/26/productivity/

A recent example issue: https://github.com/datasette/datasette-enrichments-gpt/issue...


I do this same thing, but with a notes app instead of GitHub.

Sometimes I catch myself thinking about progress on a project as the process of moving my notes from one state to another, with the actual work I need to get done being a "side effect."


I just wrote up a new trick I'm trying with GitHub Issues where I run a private "daily planner" with a new issue for each day, to track my daily goals and progress: https://til.simonwillison.net/github-actions/daily-planner


This (ie. using the github issues on the repo) is great because it co-locates the mental notes breadcrumbs, the todo list and the project itself.

I use org-mode for personal project management, and by design it intermingles notes and todos. But it never fully clicked until I started putting the notes closer and closer to my repo (my workflow pre-dates github, but this approach makes me consider some modernization :))


Interestingly, I actually did the opposite. I started with GitHub Issues as my note taking place, used that for several years. And then eventually moved away from it to Org Notes as a centralized system for all projects. Some of my reasons were:

- it's centralized; sometimes projects are related and being able to search for "all project notes involving LEDs" is useful across repos

- sometimes project work is not solely related to code, and in that case your notes are split between repo-notes and non-repo-notes

- Git issues build up and become huge threads over time, lack hierarchical organization or advanced state/dependency tracking, rely on arbitrary tags, etc.

- Git issues are non-personal, often public-facing - and even on personal repos there is sometimes the thought that you might publish the git repo one day, and now it's littered with your private thoughts.

- During dev, the process often is a bit experimental in nature - this amounts to tons of failed ideas or dead notes that clutter issue db

- Not a lot of support for the note-type distinction between "moonshot"-style rough ideas and actual concrete projects. If you use GitHub Issues for all your notes, you'll have all your wacky ideas mixed in with your actual issues. You'll subconsciously avoid posting the wild ones which means you'll subconsciously damper your creativity.

All of these lead me to suggest sticking with a well-designed centralized project note-taking system, use GitHub Issues to track /issues/ and then /link/ to the issue in your note-taking system (ideally with a little automation glue) or simply avoid GH Issues entirely for your personal issue tracking and work directly off of your notes system.


I've addressed many of those problems with a bunch of different tricks:

- I have a simonw/notes repo which will NEVER be public, which is for me to put issue threads in for things that aren't part of one of my other repos, or that I want to keep private. I sometimes change my mind and transfer issues out into other repos using this trick: https://til.simonwillison.net/github/transfer-issue-private-...

- I frequently run searches across every issue in my "simonw" GitHub profile, which covers both my public and private issue repos

- I also built https://github-to-sqlite.dogsheep.net/github/issue_comments - a separate Datasette search interface across 10,000 issue comments from my various repos. I use that a lot less now that GitHub search has improved though.

- For tying issues together, I use GitHub Projects - which can contain issues from multiple repos in a single place. I use that for my personal TODO list, and for collaborations with other people that span multiple repos.

- I link issues together a LOT - if you add a "- #123" Markdown bullet point list in a GitHub issue comment it will turn each bullet point into a fully displayed link to the referenced issue, including its open or closed state.

- You can use this for checklists too: "- [ ] #123" will turn into a checkbox which automatically checks itself when the referenced issue is closed.

- I use GitHub labels for things like "Research" to mark issues which are longer running research things as opposed to active bugs or features.


GitHub is nice but starting about a year ago I have been asking myself "what if they lock me out of my account" for online services and there is no good answer.

Obsidian plus a data query plugin can do most of the stuff you've described but my data isn't at the mercy of a 3rd party, so that's what I go with.


Yeah, I worry about that too. I have SO much of my stuff dependent on my GitHub account now.

I'm slightly reassured by how useful their APIs are. I have automated exports of a lot of my GitHub issues, though I really should shore those up and make sure I'm capturing everything.

That's one of the reasons I built https://github.com/dogsheep/github-to-sqlite


At work, I have a private Confluence space where I post comments to myself or a OneNote


Great article and talk, as always. Thanks!


I use redmine in a similar way


One of the best advice I've found in this subject is "Leaving things broken": https://news.ycombinator.com/item?id=35456059

Just like the author suggests leaving a failing test case so it's easier to resume, I leave a syntax error, or something small of the sort undone.

It has been a much better way to tackle the inertia of getting started.


This, I strongly encourage this way of finishing task. On monday, I just dive into all the stuff I gotta do that week, poking around and even writing some test cases, even if the task isn't finished. This reduces pre-deadline pressure and allows me to continuously brainstorm robust solutions throughout the week for timely delivery with quality outcomes.


My ocd stops me doing this. I like to close out the task before I even go home, or I feel like something is incomplete… weird. I am gonna really try implement this now though. Have seen it recommended multiple times.


Refreshing to hear this approach. Grounded in reality. As a dad, I know the value of “deep work,” but rarely find myself on that state. As a result, I procrastinate my way into inactivity. “Oh I only have 45 min.”

Great article to break out of that cycle.


Any lasting positive chance can only be achieved by making it a habit. It takes hard work, pain, suffering, until you do not even think about it.

I have been working hard to improve my upside-down life for a while now, and somehow I got into the habit of waking up at 8am, faffing about until 9am on the dot, then turning on my PC and doing deep work. Phone in focus mode, no one at home, no one really visits before the afternoon. Body is rested, stimulants are kicking in, and there a whole day of possibilities ahead.

Now, even on weekends and days off, I feel dirty if I don't do productive or creative work between 9-1pm. It's become a habit like brushing my teeth. That said, my afternoons are still all about procrastination, and fixing that is a bigger challenge...


>It takes hard work, pain, suffering, until you do not even think about it.

Something even better: Teach kids by example how to acquire habits.

It is the best skill you can teach a child, as she will use it the rest of her life. And kids learn much faster and with way less effort than adults.


I desperatly wish my parents taught me GTD as a child, haha. I'm sure I'd not have been to enthusiastic about it as a youngin', but man, my early projects would have been so much more inmpactful and it'd have given me a great self-confidence boost to get those projects done at a young age.


This reminds me of something I have been mulling on.

let’s call it “the death of project management”.

- Every Human and by extension every group of humans has an id ego and superego

As we expand up sizes of groups (I take two orders of magnitude) we treat the lower group as id and their day to day needs become angry passions to us.

The point being making a plan seems like ego managing the balance. But far too often the plan is prescriptive guesswork and holding to the plan is inflexible and frequently poor choice.

The point I am trying to make is plans that involve dates are almost always the wrong kind of plan but we still need to track where we have spent time and need to make the journey many times (something about patchworks vs zippers)


The problem with plans is that they are "linear" thinking tools.

Life is chaotic. Picture, for analogy, a Lorenz attractor https://www.youtube.com/watch?v=Qmbq82jwHgY our projects gravitate toward a goal, we make adjustments that drive us closer and push us apart. We can't go back and make difference choices, so where we are and where we go heavily depends on where we were.

When we define plans or delegate, I think too often we think in terms of "I am here and I want to get there" instead of "what is a robust way to nudge us toward our defined goals, how should the forces that shape our trajectories balance out to keep us in the right regions of the space of possibilities."

In a sense, this is the difference between having a project and having a strategy.


Interesting idea! Along similar lines, this year, I am planning in terms of number of hours available in the year and how I want to allocate those hours, without binding them to specific dates. We'll see how it goes and whether or not it helps me accomplish what I want to accomplish.


This, to me, is identical to the concept of "reverse budgeting" (aka "pay yourself first" or "every dollar has a job" in YNAB terms) in the financial domain, but instead applied to the time problem space.

If you assign every hour a job, and you take care of "paying yourself first" by taking into account critical/high-priority time-spend first and then allocating for yourself the liesure time last; assuming that your estimates are correct and realistic and don't forget to include all overhead, you can safely say "hey, I have budgeted away 4 hours of free time today and I can use it guilt-free because I already have accounted for all my critical tasks time-spend."

The reason this is not often done however is because it's hard. Time continuously moves, you can never pause to analyze your usage. And the assumption that "your estimates are correct include all overhead" is really hard to ensure - you need to have excellent time tracking and estimation skills to inform/predict those estimates. And time tracking is too much effort to do manually, so it requires good supporting systems, which require intensive classification techniques, which really don't exist yet.

But I digress. We're basically discussing budgeting, but for hours instead of currency, here.


"Always know what the next thing to do is" is really powerful. I never end a work day without leaving a note for the next micro task I would have done if I could (or wanted to) keep going.


I really like leaving a unit test failing at the end of a session. Its much easier to write it at the end than the beginning and they are often pretty easy to complete. Its a surprisingly simple way to get back into things the next time you pick it up and it is I think superior to just leaving a todo list of microtasks because it solves the problem of what precisely you need to reload into your brain to get going, the approach is at least for the first 10 minutes already decided.


The "micro task note" is what unlocks this for me.

I will leave a todo or comment of the next steps in the commit message, and each day i start out with a 'well what did i even do? git log -n 1'.

"Leave a broken test" doesn't work for me, because the test can be breaking for other reasons, and it often takes a lot of time to set up a test, in which you wake up with a better / cleaner solution. (so the test you wrote is testing the wrong implementation.)

I've been trying out "logseq"[1] for daily journaling, which allows you to see what you did yesterday VERY easily, and this has been pretty good for me. (but i don't normally use these note taking apps and it possibly won't last long, we'll see.)

1. https://logseq.com/


> and it often takes a lot of time to set up a test, in which you wake up with a better / cleaner solution. (so the test you wrote is testing the wrong implementation.)

Isn't that a smell?

There was a recent topic on testing. In my view, I should be testing the API of units of coherent logic. If I change the underlying implementation of that logic, why should my tests change?


i agree absolutely, which is why when i'm stuck in the middle of writing implementation, i'll write a "TODO: now do foo then bar" and not bother trying to "write a failing test"


Completely agree. This is more than half the battle for me. You might say it’s the entire job for some roles.


Wow, three kids! Developer here with a software side project/business I’m passionate about, going to be a first-time dad soon. Any high impact advice to maximize both productivity and family quality of life during the early years?


I've got two kids and I work from home. If you really really need to focus, the get out of the house. Even with someone watching your small kids at the house, your lizard brain is still monitoring ALL the noise in the house, expecting some kind of disaster. (Your kids will be at home around the clock for the first year, or three.)

My (awful) hack is that I stay up really late while the house is quiet.

As a first time dad, do as many diapers as you can, wash and dry all of the bottles and/or pumping stuff you can, get the kid in and out of the car as much as you can, and just do everything you possibly can. No matter how exhausting it is, it's orders of magnitude easier than pregnancy, birth, and the first year for your wife. She'll definitely appreciate it, and it'll really help your marriage.


It depends on your current work style.

Unless you’re pushing parenting duties solely into your partner, like the absentee father who’s trying to make partner at the law firm, you’re going to be limited to working 40 hours per week, or less, and sleep deprived for months, maybe years depending when the baby starts sleeping through the night.

With that, if you’re one of those hyper-conscientious types that gets more done than everyone else yet always seems to have free time in the work day and never works nights or weekends, it may have little effect on your work.

If, however, you’re like me and take on more than you can chew but make up for it by obsessively learning every waking hour outside of regular working hours, your productivity is going to get crushed.

My only advice is:

* There’s the pain of the thing, and there’s the pain of resisting the thing, and one of those is optional.


> Any high impact advice to maximize both productivity and family quality of life during the early years?

throw expectations out the window and set yourself (and business) up to be resilient to you having other time commitments / balancing with family time.

I have one 1.8yo, and another on the way; I can only ever get things done if I wake up at 6am and the little one doesn't have her eyes shoot open at that time.

Would not trade this time (with the kids) for all the success in the world though; you don't realise how much other stuff doesn't matter, until there's something else more important.


This is the exact problem I’ve been dealing with lately. As a dad of a toddler, can’t find any time for deep work for personal work. And that’s probably okay since family does take priority. Good strategies though, thanks.


This seems to work well for me when I only have a single (highest priority) project for the next couple months. But as soon as I have competing priorities, the context switches (or scheduling overhead) kill all the momentum that I could build up with small increments.


If they are competing with each other such that neither are getting done are they really priorities?


Yes. They are in the important but not urgent quadrant of the Eisenhower matrix.


And yet, if you have two tasks that each take 1 hour, and only 90 minutes until the deadline, only one task will be completed by you, regardless of quadrant, and you will then be reminded that priority is singular.


That scenario moves the goalpost towards a losing proposition. You have two important and urgent things and already know you fail at least one of them.

TFA is about non urgent important tasks that you want to show incremental progress on. If there are multiple of those then those short bursts of works actual work can be eaten up by context switching, reprioritization, scheduling, etc.


What I do in those cases of to arbitrarily pick an order to do those things. (Likeliness to become urgent in the future, difficulty, unpleasantness, etc...) If I can't, I just pick a random order


This is good advice. Also never decline meetings - just mark the one's you won't go to as "maybe", and eventually nobody will be able to add meetings to your calendar.


I am a parent of three young kids and I turned my ‘office’ into a toy room a long long time ago. Now, I remote into a 8GB raspberry pi from my phone to do side projects. The raspberry pi is slow but I am not sitting around waiting for it to work. It can run LLMs and even stable diffusion.

I remote in, do something, write notes, then get back to life. I’ll check back once I have time. I even have wireguard set up so I can remote in from anywhere!


Very much on board with practicing this sort of thing and getting to know what works for you.

For me, it’s really about deciding about what bit of micro “value” I can do next, doing it, and leaving things in a working “done” state. And interestingly not so much leaving something “unfinished” as some commenters say.

And also maybe not knowing exactly the next thing to do. Tomorrow can bring unexpected things, new priorities (stemming from me sometimes depending on the situation) and that’s ok with me. Leaving things “done” makes this all fine and fairly non-painful.

Suspect this takes practice and a certain amount of confidence. Submitting a PR that doesn’t do all that has been planned/asked of you might be scary.


Most programming work is not deep work; you can work for only 20 minutes.


Isn’t that the point that the article is trying to make?


some weeks ago, I was caught by my partner cheating , He took records of the whole incident and threatened to expose it on the internet. I was so scared and didn't want to be exposed so I researched for an hacker and i was referred to Remote Spy hacker as the best, I'm so happy he saved me the embarrasement my ex was planning to put me through by deleting all the pictures and videos he took on his phone. If your in need of a professional hacker contact [ Remote spy hacker @ gm ail . c om ].


Revenge porn is already illegal.


As a father, I also wish recruiters will understand when I tell them that I work in odd and random hours because of my kid. I always get that "oh?" response. I get meaningful uninterrupted coding only when my kid takes a nap or sleeping.


I’m surprised this is surprising or insightful.


I'm surprised you assumed that's what it was intended to be.


My productivity life hack is not having any dependents. I have no children, no pets, and no plants.

Having children is optional, and in many ways, can reasonably be said to ruin one’s life. They’re also expensive and terrible for the environment.

Working around an opt-in kneecapping seems silly to me. Just don’t reproduce and you won’t have to figure out life hacks because your children’s existence is incompatible with productivity in areas other than raising children.


The great thing about this strategy is that you won't appreciate what you have missed until it is too late to fix anyway.


From whence comes this presumption that you know better than me about what in my life I will need to “fix” because I have “missed” something?


Probably from the same kind of personal bias that leads to saying children “ruin your life”


I wouln't recommend this to anyone, though




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: