Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: How do you stay organized for solo dev?
92 points by pta2002 5 months ago | hide | past | favorite | 72 comments
When working with a team, I've found that Scrum-like short-term goals and organized task backlogs really help keep me focused and on track with the work I have to do. For solo development, however, I've never really found any approach that sticks and often end up getting sidetracked and losing track of my objectives.

So my question to all of you is, what tools and techniques have you used to ensure you stick to your objectives?




Paper notebook.

When you don't need to share information, there's nothing better than a notebook to see all of your ideas spread out and iterated. No need to log into anything. Take it with you anywhere -- sit on a bench and ideate. Go to the gym and jot down ideas.

I can keep my daily goals in a checklist in there and just check them off 1 by 1. No need for GitHub projects or anything like that because there's no need to communicate status with anyone.


Well, some sort of log, be it paper or a text file of whatever works for you.

Keeping track of the decisions you make, both to do things and to NOT DO THINGS (and why) is almost a superpower. You can save so much time when you come up with a 'new but vaguely familiar' idea by being able to check back through your notes and see what you came up with last time it occurred to you. Maybe circumstances changed, maybe they haven't, but you can bring yourself back up to speed on what you've done previously with little effort.


I retired fairly recently and I seem to have largely gone back to a Moleskin weekly calendar and a couple of notebooks. (I do try to avoid too many random pieces of paper.) For more detailed tracking for dev (etc.), I could see using GitHub or something along those lines but paper works pretty well as long as you don't need to share.


I'm curious what different notebooks you use.

I tried to differentiate mine a lot, but I often found I had the "wrong" notebook at the "wrong" times. Now I have have a general notebook, and other notebooks that might live in 1 place. E.g. all my D&D campaign notebooks sit with my D&D stuff.

But I don't have a separate work/life/personal dev notebook. Shuffling them got annoying.


Nothing nearly systematic enough. I do use some back of calendar pages for simple stuff. And small separate notebooks for specific projects. But I found a few books were better than an electronic thing for most purposes for an individual.


Obsidian is good


I use a `TODO.md` file.

GitHub flavored markdown will format a list like this:

    1. [X] Dockerfile
    2. [ ] Bulk Inference
    3. [ ] CLI
    4. [ ] Logging
as a neat little list of checked/unchecked checkboxes. I create a section called "Backlog" for future ideas, a section called "Bugs" for bugs to fix, and an unnamed section at the top with current items. Once I reach a milestone like a release, I delete all the completed items.


You can also nest them which is nice

  - [x] A
    - [x] AA
    - [x] AB
  - [ ] B
    - [x] BA
    - [ ] BB
And if you want to document an item you can link to it with [[A wiki link]]

  - [ ] [[A wiki link to another markdown file]]


Does X mark mean you won't do it or does it mean you already did it?


Usually for me I use Obsidian so [ ] means todo, [/] is in progress, [-] is cancelled and [x] is completed


X means "done"


Lots of writing to my future self.

1. Trello with columns for the week, month, and quarter, year.

2. Open notebook next to mouse

2a. Left page: daily todo checklist with pen and paper. (2-3 rows per day)

2b. Right page: scratch, sketches of plots, sticky notes, etc.

3. Typed dev journal to capture research, URLs, papers, thoughts, ideas, progress, and extensions. (every github project has a dev/ folder for these notes, filename yyyymmmdd-n.txt) New file per project per day, as needed.

4. Yellow sticky notes for ad hoc ideas (end up on the bottom of the screen, notebook or whiteboard). Typically maxims to keep me pointed in the right direction for a project (e.g. "no one ever will rtfm")

5. Whiteboard, column per project, printouts + magnets (monthly plots of project progress), sticky notes, ideas for future projects, all kinds of stuff

I try to overcommunicate with my future self. It helps to get my current thoughts straight re expectations, progress, sticking points, etc. I'm the roadblock, not the work. The work is typically paint by numbers after a "hard think" about it.

Working like this solo for 8 years.

Been using a /dev dir and .txt files for live development journal since my PhD days in early '00. Saved my ass countless times (grep).

Oh, and doing the same things every day. Mostly. E.g. customer support, then promote, then writing, then code, then... No thinking required, just do the next thing we do after this...


As far as side projects go, "Readme Driven Development" works to motivate me, and keeps the scope contained.

https://tom.preston-werner.com/2010/08/23/readme-driven-deve...


Obsidian vault with all the major apps in my system each in a folder. The folders contain similar common elements. A kanban note using the Kanban plug-in for the screen structure (what functions or activities are on each screen), a roadmap note with details of how each is to function and a general note that contains the various tasks for that app or component. I use the Tasks plug-in to track what I am working on specifically. The folder contains additional documents like screenshots, references and misc notes related to that particular app.

My project is a suite of programs for managing livestock and rare breed registries. So I have Farm Mobile (Android), Farm Desktop (Python), Registry Web (Flask) and Registry Desktop (Python) apps and the Database schema (SQLite) all as separate GitLab repos.

I now have 3 additional collaborators and we now share the Obsidian vault via Obsidian Sync. My solo system scaled to handle teamwork.


I have a daily routine template in my obsidian daily notes. gets me focused and excited about the day. The first [x] I get to give myself every day is the completion of my daily routine checklist. It's a freebie W to kickstart a productive day. I actually use Windows Voice Typing to take most of my notes so it really ends up being like a daily standup. I also often livestream my entire day so even if I only have an audience of myself (which is every day because they are just private livestreams I do in case I need to go back and remind myself what I was doing/thinking about 20 minutes ago before I got lost down some rabbit hole - windows recall is good, actually) my day really does end up playing out similarly to when I would work with other people (aka meetings) in 2+ person orgs.


I make daily/weekly/monthly goals, and structure it in whatever App I use e.g. Linear, Todoist, or Notion.

- Monthly goals are very high level and few (e.g. “Make PoC for this”, “Redesign and relaunch blog”)

- Weekly goals are more tangible and limited (e.g. “Settle on approach for calling Rust from Swift code”, or “Finish design and styling of posts”)

- Daily are very concrete (e.g. “Set up UniFFI pipeline to generate Swift bindings” or “Implement new theme across blog pages”)

Sometimes things come up that I discover during implementation, and then I typically shift a daily goal to the next day.

Has worked well so far for giving me focus, and I then pick the daily goals based on the weekly focus from the list of many open tasks/issues I have in my various projects.

I set up each thing I’m working on as a Project in e.g. Linear, and immediately add a priority when I add things, which allows me to easily keep an overview of many smaller or larger projects I might have going on or want to do in the future.

While I do like paper, for me that’s only for ephemeral things. I prefer to keep things digital, allowing me to easily add stuff from my phone in the go when I get an idea while being out-and-about. I also write much faster on a keyboard and use the various tasks as the dumping ground for info while I’m working through something or researching something.


Easy, before leaving for the day I leave a comment in code: I’m working on this, need to do A, B C… to get it working.

Next time I open the code editor I know exactly what to do.


Leaving a failing unit test is really good for efficiently establishing yesterday's context.


Yes, super useful. I call that saving and restoring mental contexts: https://www.dsebastien.net/2022-09-01-saving-and-restoring-m...


I really like using nested bullet lists. When I think of a project idea, I create a new list.

Each bullet is a goal of the project, and then I split it into sub goals and problems, and keep notes as I go. One thing that really helped was the soft rule of only allowing leaf nodes to be actual tasks, everything else has to be a problem or goal. If it turns out a leaf node needs to be split up further, I gotta re-formulate it as a goal/problem.

Also, I try not to work on anything before I've written it down first. Since I've been doing this, it's easier than ever to come back to a project after not working on it for a while. I've always thought that people write things down to remember them, but for me at least it seems that it helps me forget and free my mind for other things.

It's important to me that the software supports infinite bullet nesting. I use Dynalist but there are other good ones out there, I'd love to switch to RemNote actually.


I have been using simple Kanban-inspired text files for years. I have managed everything from small to million-dollar projects with this approach. Each project has a main log file. Disciplines usually have their own (electronics, mechanical, optics, manufacturing, testing, etc.).

What's in the file?

  <Project Name> Log File
  -------------------------------- WORKING ON NOW
  <move whatever task you are working on to this space>

  -------------------------------- TO DO
  - <start each task with a dash>
    - <indent related sub-tasks or notes>
  
  -------------------------------- IDEAS
  <free-form notes>
  
  -------------------------------- RESOURCES
  <free-form resources>

  -------------------------------- DONE
  <move anything that's done into this section>
  <timestamp if desired>
That's it. Simple.


Emacs/org-mode/org-roam managed, org-agenda on current year notes, notes are time-divided in files, one file per day, one dir per year under a common org-roam-directory. This reduce the amount of files org-agenda have to traverse and long running stuff got passed from an year to another in yearly summary notes.

It's a long road, I've hesitated much since for me it was a slow full migration to Emacs and EXWM at the same time than another step moving most of my configs to org-mode notes, tangle-ed from them and finally org-attaching files.

One part still left behind is literate programming though, I do for something, but not for most of the thing, since I tend to disperse myself in lengthy prose, loosing focus on the code and the available tooling inside org-babel blocks are limited/hard to use respect of a direct-code codebase.


Trello board with three lists Done/Doing/ToDo

Make a list of all the stuff you need to do.

Prioritize it.

Move the top item to the doing list and start working on it.

When you’re done move it to done. Take the next item off the to do list and repeat.

I use other lists on trello to maintain cards for my research or to move features off the to do list that aren’t necessary for v1.


I second this but with a tiny addition: for software, I have a 4th column called "Bugs" and any time I come across a bug, I chuck it in there and get round to it eventually.


Yea I do this too or find the card the bug represents and move it back to the ToDo with a description of the bug


>Move the top item to the doing list and start working on it.

>When you’re done move it to done. Take the next item off the to do list and repeat.

What do you do if you need or want to switch to working on another item before the top one is complete?


trello boards are overkill you could just use markdown checklists

  - [x] A
    - [x] AA
    - [x] AB
  - [ ] B
    - [x] BA
    - [ ] BB
And if you want to document an item you can link to it with [[A wiki link]]

  - [ ] [[A wiki link to another markdown file]]


I like to work similarly to how I'd work with a small team: Github issues, many of which contain a checklist of items, loosely organized into milestones. I like this because:

- It's close to the code, so I can easily make notes to self with links to line numbers, copy-pasted code blocks, or linked draft PRs to remember where I left off with something that I'm going to punt on for a while.

- It's super easy to access from any device, so I can quickly create an issue for something on the fly on my phone/non-dev machine when I have an idea or get an email about a bug.

- It's straightforward to bring someone else in and have them working on something right away, when the time is right.

- There's a good API and lots of integrations (like creating issues directly from/linked to an error tracking system)


I'm still trying this out, but I've been using Superlist [0] (no affiliation) for different projects. For me, having a single app that is both a Markdown document <-> todo app has been helpful. I'm able to jot down notes in greater structure and depth than in another todo app and interweave todo items throughout, which helps contextualize tasks a lot better (especially when working across different projects).

Reminds me of org-mode in Emacs - overall, I'm really liking the cross-platform sync and Markdown interface out-of-the-box.

[0] https://www.superlist.com/


I write sprawling semi-structured webs of markdown in obsidian. Thoughts written on android while walking around, more coherent long form things at a physical keyboard.

I thought that producing a bunch of trello style cards to look at would help and it kind of did, but in practice I don't seem to look at them as often as the raw markdown.

YMMV though, my solo work is a weighted random walk in the direction of things that look interesting, not an optimal shortest path to a product. Which might be the sidetracked you're talking about. E.g. I'm currently writing a regex engine and that's not especially well correlated with where I was a few months ago.


1. Obsidian synced between MacBook and iPhone for daily notes with check lists, and hierarchies of thoughts, drafts, prose.

2. A dated piece of paper in front on my desk that tells me what to do right now.

3. A GitHub Projects kanban for software-related tracking.


I use Github Projects. Which I would not particularly recommend. But managing a list of tasks and bugs isn't really rocket science. And I have used project management solutions that cost hundreds of thousands of dollars that are infinitely worse.

Github Projects are sufficiently minimally functional, even if strangely broken and unloved. There are a lot of things that you would think would be automated. Things like rolling over to a new sprint with a couple of clicks, instead of having to manually revise all the queries on your scrum board. But you can do what you want to do. And maybe that's better than having to live with the inflexibility of somebody else's idea of what process should be. In some ways, minimality might be an advantage.

A heart, this is a list management problem. And not a very complicated one. And Github Projects do lists perfectly well.

The one thing that recommends Github Projects over a paper-based or card-based task list is that it does provide public visibility to users as to how their bug reports and feature requests are being dealt with. And it's incredibly easy to take something brought up in a discussion board, and flip it over to a bug report, or development task (deferred or active).

Usual scrum rules apply. All bugs are fixed before working on new tasks. And tasks move to done status only when they are fully and completely done.

You need lists. I like sprint structure on top of tasks, because they provide a useful punctuation point for interim updates and continuous releases.


I rely on Personal Knowledge Management [0] and journaling [1] to organize myself and think.

And tagged/prioritize project backlogs

And sane habits/routines :)

[0] https://www.dsebastien.net/tag/personal-knowledge-management...

[1] https://www.dsebastien.net/tag/journaling-for-founders/


I wrote a blog post to describe my system in detail: https://www.dsebastien.net/how-i-organize-my-work-as-a-solo-...


I forgot to mention that periodic reviews [0] help me set the pace: looking back, and forward.

[0] https://www.dsebastien.net/2022-05-16-periodic-reviews/


I use a cascading "knowledge" system myself:

- A pocket Moleskin notebook keeps track of random thoughts, notes, scratches, diagrams, and more.

- This eventually becomes either "tickets" in my issue tracker, or becomes "wikis" or "wiki updates" on my wiki server.

- This eventually leads to things like: snippets, configuration notes, historical documents, record keeping, runbooks, and more.

Eventually it just became "natural" to keep my documents up-to-date, or as issues are discovered get them thrown into the correct backlog.


I've found Logseq the easiest tool for taking quick and journaled notes. Since outlining in plain/markdown text is really quick and I don't need to think on text formatting or organization, just write, and fold if I want to have focus on something (plus it's open source).

So I have a daily template like this:

- Meetings (where I take notes about my meetings)

- Tasks (where I set the daily tasks, if there are unfinished tasks I can move them to the next day, but the idea is to set tasks that can be done in the same day)

- Notes (any quick notes that doesn't deserve a full page, like quick annotations)

Then for more long text I use Notes.app or Bear.


I separate out the following roles and only do them one at a time: product manager, project manager, software developer, marketing, business ops, and overall business leader.

So for example, I might sit down as the overall business leader and decide a strategic direction I want to take. I then put on my product manager hat and decide what to build. I'll then project manage and prioritize those ideas. Then I'll become product manager / designer and spec out the features I prioritized. Then I'll sit down completely separately (usually it's own day) and develop a feature. Once it's released, I'll put on my marketing hat and do any relevant product marketing. That's sort of the lifecycle of developing a single feature.

I think what's dangerous is when you're jumping around all those roles at once. You can spin without being productive. There are times to be strategic, times to be creative, and times to just execute. You need different headspaces for those tasks.

I do all my planning in Notion, using a few different Kanban boards for different purposes.


I've been trying to do something similar by using a Pomodoro app (flocus) to dedicate time to a task. In MS Windows, you can have multiple desktops (crtl+win key+ right arrow), and I set several up based on my task to eliminate distractions. I build in get up and move time and respond to any new emails or Teams messages.


Asana! They have a board view and you can just create a project that is a 'sprint' by adding categories and putting it in the board view. And then add tickets from other projects to the sprint and drag them through different states. And it's free.

Mobile app is also very very good which means you can easily update or use it to make tickets while on the go...or in bed.


I just like a text file.

Everything that needs to be done goes in, no matter how small.

Every now and then I work through and sort it by most important. I also group tasks that are about the same importance and in the same area of code.

Then just work on the task at the top.

I have a separate text file for life and each project. Life comes first, pay bills, buy socks.

Then the text files are in Dropbox so available and editable anywhere.


I use a BOOX Note Air as an infinite supply of paper. In that I create general and specific "notepads" (using the BOOX built-in app). Those are basically just filled with sketches and lists.

Lists of projects I'm thinking about doing. Lists of things to do on the current project. Lists of bugs on a project.

Just scratch things off as I'm done. I like this method because I often want to draw a little sketch of something (like a UI element or quick flow chart) inside the list to remind myself of some aspect of the project/bug/etc. The freeform nature of pen + paper helps me remember things, having gone through a physical action of writing. I also find it much easier to go back to another project to look up something, because I remember doing it. I remember drawing something. I know, visually, what I'm looking for and every notepad I ever made is right there, immediately browsable.

"Works for me," as they say.


You can start with the same tools you would use on a team, and tune for your needs, just like a team leader might do for a team.

For example, for one early startup, while I was the only engineer, and operating in a somewhat reactive mode, I used GitLab Issues to track tasks, and their Structured Labels and Board view to give a modified Kanban-ish view.

For a different solo-engineering project, which nevertheless had lots of interdependencies, and needed some estimating, I used a Gantt-based tool (unfortunately not integrated with GitLab Issues, though it really-really should've been).

That's the tools part. What you might be missing is the social part. If that's bothering you, maybe find a way to get some human accountability, team feedback, etc., even if you're the only engineer. (I'm pretty self-motivated, but I'd do things like show the biz people milestones, achievements, funny or cool things, etc.)


I’m a solo dev. At a high level, I find that just writing down what I’m trying to achieve and referring to it often is critical. The most important things to understand are what you’re building, who your users are, and when you want to launch. Use this as a razor to determine what features to add/remove. This should not be complex - one sentence each! Try to make all decisions through this lens. Revise the lens as you learn more.

In terms of managing the day to do, my project has 4 or 5 modules and each has its own TODO and README in markdown. The README is where I explore the design and the TODO is obvious.

You don’t need fancy tools, what you need is a vision that pulls you along.


I have one project that I am writing for fun. This is not work, not a job. Therefore I do not want it to remind of 'work'.

Whenever I see something wrong in app I write it on my phone, on note taking app. Note taking apps allow you to have freedom in syntax and style.

Most of the problems, some I would like to communicate to eventual people interested in project, are written as github issues.

There is no prioritization. I do whatever I like. It is a hobby project, not a work project. I daily drive my app, so I know I need to fix it, whenever it breaks.

I do not like paper notebooks, as it would have too many crossed-out points. I like to 'edit' in place.


I wanted something as close to paper as possible, but with tracking etc. Couldn’t find it and built my own :) Maybe it will be useful for you as well: https://can.do


It kinda depends upon the project.

Small ones just get a todo.org file that I commit with the project.

For medium ones I put a .org file in my "Projects" directory in Dropbox.

For larger ones I put a subdirectory in my "Projects" directory in Dropbox.


Yearly, quarterly, monthly plan - broken down again with weekly plan. Review each plan at the end of week, month and quarter. Yearly, quarterly and monthly - I schedule an email to myself in future. Monthly goes into my notebook which is again broken into weekly plans and then follow the schedule daily to complete the tasks.

I have Linear cycles and create tickets, projects and stories to keep track of things for future reference. It also helps with commit and linking of the tickets to PR.

For notes, use the Documents feature of linear and separate based on the projects


i did an hour and fifteen minutes of project management today for some product features, using github issues and their project board.

i use obsidian as a dump for things. i use boards in obsidian to track higher level product stuff + capture any fleeting todos/ideas as obsidian notes, then move that to github issues once i do project mgmt time. and i use obsidian for non-dev project management, like marketing/sales/operations stuff. i also use obsidian for todos like "do some project management for X features or whatever"


Most answers seem to be different documentation and reminders, but I'd like to focus on something a little different. I think Scrum and daily stand up is a "forcing function". It creates tension in individuals. Even if you get side tracked at work, and you are a bullshitter, most would probably reason something like "It is better so do some useful work that I got assigned/committed to so I can report progress tomorrow. And I want to avoid conflict". That would create "force" to move you and the rest of the team forward. Tools and reminders etc. are all good, but weak forcing functions. You still have to be disciplined.

I don't think you can create that same force pure solo, but can still improve current process. One way could be to have a friend, sibling or virtual assistant that you do the same reporting to every few days. Perhaps pick someone assertive. And as you know, if you bullshit you just fool yourself. Hopefully something like that is a strong enough "forcing function" to snap you out of your tangent and back on track for a few hours/days before the next report.


send myself emails. then search for email from:me to:me.

on desktop i use a cli[1]. on mobile i use homescreen bookmarks to fastmail web.

body is typically empty. subject is the note. first word is the category.

most recent note: game deltas represent discrete positions on the 13bit ratchet

1. https://gist.github.com/nathants/53efd551e5eadfdbf5792b3efc3...


I've started using YouTrack recently since it's free for small teams or single devs, and most importantly to me their knowledgebase is Markdown based and can be exported as Markdown if needed. Too many past lives spent moving KB content in custom formats. So far it's been a good tool for me, and I can just ignore any of the projects management features I don't need.


Workflowy to organize both time and bullet points.

Have a bullet point for your long term goals and/or backlog. Have another for weekly plans. Dump what you need done into the backlog.

Break down the weekly plan into a bullet point per day. Have other bullet points on what you want to do that day.

You can move around bullet points as needed, but try to stick to them and undercommit for the day.


I've been using Post-Its along the bottom of my monitor for 25 years. Works fairly well as they are always right there in front of your face, and if one loses it's stick, well, you know that's the one to focus on or move it to long-term.

This of course only works at a desk. I've never done work on a laptop so my system is very YMMV.


Documentation and comments mostly. Project goals, methods, status, reference documents explaining all components in detail. When developing try whenever possible to lead by writing tests that demonstrate a feature is actually working. When coding lay everything out with comments and then fill in the details with actual code.


Trello board (also use it for personal life). I have lists that separate the different kinds of work that need to be done (dev, marketing, research, website, etc...) and then label them according to how easy/challenging the task feels to me. This allows me to easily be able to pick something to work on every single time.


I use our https://github.com/GeneralBots open-source LLM Orchestrator (chat-gpt and claude) to manage a list called ALM with requirements, bugs, tasks and so on. So WhatsApp is a channel to anything that we need. If you need more info, message me.


Quarterly goals one year out, monthly goals the next quarter. Keeping these as few as possible, high level but concrete, stretch but attainable. Then re-ranking actual TODOs regularly with respect to these, with low barriers to dropping things that do not contribute to overall goals.


Business model canvas & others for strategy.

Trello to track tasks driven by my strategy for each milestone (with some flexibility based on competitor analysis).

Without a strategy you're just drifting on the tide. It should underpin all your decisions and tasks.


I have a physical whiteboard.

I write each task as one line on it (if I need bigger notes I keep those electronically - typically in Apple Notes).

There's something very satisfying about getting to wipe tasks off as they get done :)


as CharlieDigital said, a paper notebook. would recommend art store quality large and wide sheets and a handful of pens. depending on work, you can get different colors of pen. the very fine archival widths are great but easily bend outta shape. ideation and project development has phases, you must uncover and scope, and then implement. this oscillation of tides is natural and ensures healthy progress. for here, once the app is adequately scoped it's time to implemenr. but pretty much everything is designed on paper first


you don't need a lot of the overhead in team-focused working models. As suggested already, paper based lists work well. Only you need to know what needs to be done, and you are generally focused on only a handful of things at a time.

Pomodoro has been another thing that works well for me to split up my time/keep getting things done while making sure I'm taking frequent breaks.


I use Google Tasks for just about everything these days.

I also use inline TODO comments, Excalidraw diagrams, and explanatory log text in release notes.


https://bear.app with GitHub flavoured todo lists



Talking with my clients and setting goals keeps me on track.

Organizing that: gitlab issues


* GitHub issues

* simple specific goals

* obsession with functional imperative architecture and DRY


Does anyone use any wiki software for this kind of tasks?


long-term notes go into Notion. Short-term notes go into Excalidraw which I treat as a digital whiteboard.


TextEdit

Todo lines that I remove when done


Scrap paper with list of todos. Throw away or transfer to new list if down to one or two items.


Dynalist.io




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

Search: