Ask HN: How do you organize work as a solo developer?

lukev | 59 points

I run a one-person SaaS company and have been using Trello as a simple planning/tracking tool for my work. For simple tasks, each card is just a title. For more complex ones, I add some notes in the description. My board has just 3 columns: Backlog, In flight, and Done. I spent an hour or so getting it all set up a couple years ago (mostly creating all of the cards for the backlog) and usually spend less than 10-15 minutes a week on the board. As customers submit new feature requests or I find bugs, I add a card and drag it to it's appropriate priority spot in the backlog. Besides that, I review the board every 1-2 weeks to decide if the priority of any items has changed. I try to keep it clean, and quickly archive/delete cards if I decide that I'll never work on them. This gives me a lightweight way to keep things organized without feeling like overkill.

davidclark22 | 9 days ago

It sounds more like lack of discipline than bad organization.

If the person you're working for (i.e. yourself) says that today you should do whatever sounds more fun to do that day, then it's no surprise that when this thing is not fun anymore, it will be paused and put back into the backlog, and velocity will suffer as a result.

If you work strictly only on the fun stuff, that's something you'll have to accept. If you want velocity, you'll have to come to terms with doing unfun stuff from time to time. If you want only fun, you'll have to come to terms with sacrificing velocity in exchange for whatever short-term dopamine hit your brain wants to receive in this particular moment. If something stays fun for a long enough time to deliver, then that's either a nice coincidence, or you somehow found a way to force yourself to have fun even when you dislike something.

Working for others (employer or customers) usually doesn't have this problem because then they would make it easier to prioritize tasks that need to be delivered to bring in some expected value (whether that value is the same as expected, is another thing). Something is wrong and should be fixed, or we need to do this because it's been requested a lot, etc. And the possibility of losing income (or something else, physical or not) tends to give a large boost in discipline.

(EDIT: Added emphasis in some words.)

quectophoton | 9 days ago

For solo projects, my code is the project planning. I use a bunch of #TODO or //TODO in different files throughout each project's codebase, that a small Python script picks up and compiles into a single HTML file.

As I'm working on a lot of projects, the important thing for me is keeping it easy to start/stop working on a project, and make sure that when I have time to make a pass on a project I don't have to also deal with the additional headache of keeping the codebase and my todos in sync.

Not sure if this is really helpful though. Good luck!

ilovefood | 8 days ago

Kanban is good once you have multiple brains looking for idle work. Until then, my recommendation as a driven, solo-starter who has created 3 ~huge projects more-or-less solo, is to rely on a `notes-todo` file where you religiously and often and frequently log the date and time and then write some notes. Append to the TOP of the file so you can see the latest words at the top, and then you scroll down and it's like a historical feed. You can put what you accomplished in the log to start. Eventually you will have design questions, debates, breakthroughs, and even just long treatise on what you want to accomplish. All this is amazing. You need a written record that helps you sort out where you are in the process. Remember, when working it's microscopic zoom mode surgeon style, and when reflecting it's telescope mode from the space station. You need to be kind to yourself moving between the two, and the answer is NOTES

sova | 9 days ago

Here's my experience from the last ~12 years as a full time solo developer:

1. I use Github issues to track features and bugs that I am working on. It's useful because sometimes I come back to a feature months (or even years) later, and I don't have to start from zero again.

2. I've tried a lot of systems for planning work, but I found nothing that beats pencil and paper. Plans always change anyway, it's good to just spend 5-10 minutes planning your day before you start working.

3. It doesn't matter if you move back and forth, change priorities, etc, as long as you keep making progress. You only find out after the fact which of the features were the ones that really made a difference.

4. At some point I realise that I'm getting close to a release, then I switch into "release mode", I stop working on new features and just fix bugs until the release is done.

newaccount74 | 9 days ago

It helps to understand that you're doing multiple jobs. You're a developer, but also a marketer, a product manager, a designer, you run business operations, etc, etc. I've found it very helpful to not do more than one job at a time and to have breaks between switching roles.

In terms of managing development tasks, I use a kanban board in Notion. I'll put on my product manager hat, analyze my product, and define high level requirements for ideas. Then I'll switch to developer mode and work on a single idea until it's complete. I have a completely separate kanban board for marketing work.

I also don't do different roles on the same idea back to back because I have recency bias. So if product manager me comes up with an idea today, I won't even prioritize it until tomorrow.

leros | 9 days ago

> Currently just using a single text file with checklists for features, tasks, plans, and ideas. But it still feels like I'm suffering from lack of planning and organization.

I use a wiki, with a different page per project, to keep all of this stuff. I have an "overview" wiki page that is a directory to all of the projects and is where I keep my "Top 10 task" list across all projects.

JohnFen | 8 days ago

I'm a maintainer of a large open-source cyber-security projects XENA. I don't use Jira nor similar software. I leave notes with TODO comments across the codebase, from to time I'd search and see if something should be done from those. I have a single notes.txt where I write anything, I tend to keep it short and prune anything I do not feel confident about anymore. My priorities about the project are ordered in a simple fashion. At first place comes any bugs. Then I work on a singular feature until it's stable then I release it and move on. The way I decide which feature goes in or not is based on the "10 year" rule. Basically I think if this feature would be used in a decade, if so then I'm keen on introducing it. That's pretty much it. if bugs.length > 0 { fixBugs() } else { feautre = new Feature() if feature == good_enough { feature.implement() } }

ZARKONES | 9 days ago

On Scoping Work

Scoping work is just as vital as work itself. If you are going apple picking you must go to the correct orchard. You cannot go to a forest bereft of apples and start picking what is not there. Nor can you pick all the apples in one day, or maybe if you do you will be so fatigued that you cannot work any more days that week. Scoping work is the ability to "bite off exactly as much as you can chew" and add "buffer time" so that you can successfully complete that delicious morsel. Indeed, the only way to success is to celebrate small victories, and you must now regulate what those are on your own. That means biting off not too much to chew, and overcelebrating what goes right. And finding the most essential meaningful path to your goal via junctures where you work on just enough of the project to accomplish either the: knowledge gain required, the app upgrade required, or the app creation required. Bit of a free-flow ramble for ya, but hope it helps.

sova | 9 days ago

I may not be suitable to answer this question at present. More than a month ago, I was fired by the company. Then, I entered the exploration stage of independent development. Currently, I am learning SEO and learning to build websites. (I have been doing server-side development for many years before) I found that there are many things to learn every day. In addition to development, I also need to explore needs, promote, interact with users, do data analysis, and continuously optimize products. Now I work day and night, almost 80 hours a week, which is longer than when I worked in a company. Although there is no progress yet, independent development is destined to be the path that suits me.

jsamqiu | 8 days ago

I use Google keep. I usually follow all the latest trends and best practices even for trivial projects (Just not CI/CD, that might cost money!), but I don't really apply the same idea to project management.

I like to do more waterfall than Agile, so I know what I want to build pretty early and often just focus on one subsystem at a time.

I don't do spike solutions or proof of concepts or prototypes, unless someone else wants me to do so, I build to an architecture even if it means I have nothing to show for weeks other than some classes and tests.

I do try to get to a minimal GUI fairly quickly even if some features are missing, since that makes manual testing easier and it's the part Momoa likely to need iteration.

eternityforest | 8 days ago

If you’ve got some underlying issue - organization, planning, whatever - you aren’t going to solve it with more tools and process. Keep the single text file as long as you can, because that way at least the cost of your issue is contained in one place and you don’t need to pay even more context switching tax.

I’m guessing your problem is lack of clarity and direction. You can’t plan if you don’t have an objective. And you can’t pick an objective if you don’t have a target. Do you want people to use this project? Your priority should be to get it into their hands as soon as possible. Then the clarity will come naturally as you see people using the product and understand the gaps.

chatmasta | 9 days ago

For me, the best thing with the best balance is a 5x7 legal pad. Here's why:

- pen & paper makes adding and crossing off tasks frictionless

- compact & portable

- the small size limits scope, which gives you a quick & easy-to-read bird's-eye view of what needs to be done

Fill a page with tasks, then STOP and get to work. Each task should take no more than two lines to specify. You may have more tasks to add after filling the page, but that doesn't matter because one page gives you more than enough to get to work. You may only accomplish half of them anyway before you realize some facets of your project will need to shift direction. Once those tasks are complete, tear off the page and repeat.

VoodooJuJu | 9 days ago

The medium is less important. The ceremony is more important.

You don't need a lot of ceremony. But adding some ceremony is making all the difference between feeling unorganized vs. feeling on track.

Work requires planning. You probably already have the tracking work part covered. You should also improve the planning of work, as a ceremony.

Building a system to track work, regardless of the medium where you do it, will pay dividends. You should also write down the system you chose, and from time to time review and improve upon your system.

There are multiple tools you can borrow for your system from the field of project management. Specifically for the planning and the tracking phases.

One example out of many can be WBS.

kesor | 9 days ago

Is it a goal to ship this project? If so, has it shipped yet? If not, then center on the _minimum_ needed to ship. And focus solely on that.

jononor | 8 days ago

> it still feels like I'm suffering from lack of planning and organization.

IF that's really the pain point here, then I doubt the choice of tools is the bottle neck.

I would suggest getting crystal clear on exactly what is important and what you want to build. That could be a mockup in figma , a diagram of the dataflow through your code (or future code) or a written narrative about what you are building and why. A really crisp narrative should clarify your thinking and make it obvious what the next most important thing to do is.

(some of these links are focused on product management rather than software engineering, but the principle is the same).

https://notes.andymatuschak.org/zAf4oNSV9qB38ncSvYEZGAb

https://www.svpg.com/coaching-tools-the-narrative/

https://www.linkedin.com/pulse/beauty-amazons-6-pager-brad-p...

kingkongjaffa | 9 days ago

I run a physical Trello of post it notes running across the bottom of my ultra wide monitor.

Priority descends from left to right.

When finishing a task, I pick the next one from the left that fits the time/attention/deadline budget I have available.

It works mostly, at the expense of some crumpled up paper.

Nihilartikel | 9 days ago

Sublime markdown file with monthly goals, immediate priorities, and stream of consciousness notes

jncfhnb | 9 days ago

All of the organization suggestions are great, but maybe an accountability buddy would be helpful as well? (I need one for self managed projects at least) There’s tons of people out there also working on a solo project. Just having someone else be aware of the commitments you make to yourself could be juuust enough pressure to keep things on track in the early stages.

You’d need to find someone where you’re both interested in what each of you are doing, but commit to not significantly contributing to each other’s thing. Set up a recurring time to fill each other in on progress and next steps, and be each others cheerleader!

graypegg | 9 days ago

David Allen's Getting Things Done as a Method is still the GOAT of self organization for me. I personally use a hacked together Obsidian Notebook because it was the only tool that was flexible enough for me.

dtx1 | 9 days ago

I've tried Notion Databases. It's great to see history of projects. Notion feels clunky nowadays but ok.

For simple, lightweight, fast organisation, I'd recommend maintaining a single file as a todo list.

A file per project. This can be markdown (todo.md) with checkboxes or just a simple todo.txt

This helps you add/edit stuff to the list rather quickly.

This is no answer. Just do things.

tnvmadhav | 6 days ago

I'm in a similar boat and I"m not doing it full-time. So my time is precious.

I keep it simple in terms of planning and organisation. I use a set of Markdown text files for now since I'm alone and I develop as if I was on a team. I don't cut corners in setting up projects, repos, and code quality.

I'm afraid of bogging myself down and slow my development speed but at the same time there's going to be a point where another person will join me.

You're probably doing just fine. Just be on the look out for not putting more planning before its time.

jeanturgeon | 9 days ago
[deleted]
| 9 days ago

The work organizes itself. I only do what is worth doing right now.

achempion | 9 days ago

I try to avoid overcomplicating things as (a) it takes time and effort and (b) I won't stick to it. For a to-do list I use a notepad + pen. If I need a plan, I'll make something in excel then print it off. If I need to track lots of bugs, I'll use <insert your favourite bug tracking software here>.

sam29681749 | 8 days ago

I just do minimal kanban. If somethings needs to get done create a todo, then either do it or you have a note for what to do later.

Your todo list is your backlog, no need for sprints or any of that overhead, but it is nice to keep a list of your todos and their state and context in case you come back to it a couple of weeks later or so

moi2388 | 8 days ago

I use obsidian with the boards plugin, it's basically Google docs + Trello.

petabyt | 7 days ago

The trick is to get a breakdown structure that you can see progress from. The GTD, tickets that are appropriately sized, etc. GTD and separating today from your single file everything will help.

Doing what feels fun is always going to create a path where what you want to do will be different than the annoying thing you need to do.

cmgbhm | 9 days ago

I don’t. My way of deciding what’s worth doing roght now is to just read through all the sources again at “morning”. It establishes all sorts of contexts and priorities automatically. There is a TODO.txt, but I mostly see it as an unfinished source file.

wruza | 8 days ago

All of mine are managed like your typical open source project, I'm just the sole contributor. Liberal use of PRs, Issues, branches, etc.

I can't make drawings to save my life, anything I write would go to SCM. Ideally as code... TODO.md is acceptable

bravetraveler | 9 days ago

"Currently just using a single text file with checklists for features, tasks, plans, and ideas"

This, but I made an app where I convert the checklists into quests using AI.

muzani | 8 days ago

one - understand that software is a living organism that morphs and evolves everyday.

two - use a simple todo list. it should not be prioritized. just like when you're writing - ideas come and get refined. your todo-list, will be that - sometimes you will add something, do it, and cross it off. other times, you will simply mark the todo item, as not necessary as you work on your stuff.

dzonga | 8 days ago

Bear (markdown editor) only.

I dislike bureaucracy wich many companies adopt.

delduca | 9 days ago

Hipster PDA

counterpartyrsk | 8 days ago

[dead]

Andy101 | 9 days ago

[dead]

Crucifery1 | 8 days ago