Design wise I make good use of trello. I have a todo, do next, and done list and everytime I think of something that needs doing I add it to the todo list. Then when the do next list is getting empty I look through and move the highest priority todo items to it.
Keep me from losing focus on what needs doing right now vs the greater design
I figure a lot of people here are solo devs, but for those interested in how this can be done for a team (ours has 5 people), here are a few things we set up. Keep in mind, all of this was set up by necessity, as trying to manage a project of our size is untenable without something very organized.
Version Control. Even solo devs should use it
For version control, there are a lot of options out there. Git can host public and private repositories, as well as host tools for you to communicate with your team, log issues, host a wiki, etc. SVN is becoming a bit outdated but as a lot of tools that are easy to host yourself. I used SVN mostly because I am very familiar with it and its toolset, and I hosted it on my own server which pushed out email updates to the team and had archived log entries. This all comes out of the box with SVN, and you can host it anywhere you want. I used a free-tier amazon server and it was up and working in a few hours
Unit testing
Some people think Unit testing is overkill, but it's really just taking any code you use to test a new feature, pulling it out in a modular fashion, and sticking it between some annotations. I think of it like putting your laundry in the laundry bin. If you throw your clothes on the floor, you're just going to have to sort it out later. Unit tests are also important in the next step because you can run these automatically any time someone commits code to find out right away if someone broke something!
Build Automation and Testing: What is build automation and why would anyone need to use it?
Build automation hooks into version control to check for changes and kick off builds of your game. It will also run your aforementioned unit tests every time someone commits code or runs a build. Then you can tag your various builds and send them out to whomever you want to test them, whether they be beta testers, developers, friends, whatever. This is particularly useful because you can store as many builds as you have room for and always go back to them. You'll also never have to worry about creating a build with regressions because of your units tests! We used Jenkins which I hosted on my free-tier server as well, so no pain there.
Professional issue tracking with open-source technology
If you're using Git, then GitLab can be a good fit for tracking issues. We wanted a more powerful solution though to keep track of all of our milestones, wikis, source control hooks, user roles, customizable feature/bug types, all kinds of things. For this we used RedMine. It looks like it's from the 1990's, but don't let it fool you! You can do awesome things with this tool and once you figure it out, it's an organizational dream. Keeping everyone on track and hitting milestones with visual cues, burn percentages, even seeing with issue a commit goes with by tagging it in the commit comments! seriously love this tool
All of this to day, with literally one day of work, you can decrease miscommunication and set clear goals for yourself or your team really easily. It's also going to save you a ton of headaches down the line, especially when it comes to testing. If anyone has any questions on this let me know, since this is just a rough overview...