I'm currently working on several different software development projects, for two different companies, and for me. Several different technical domains are involved: embedded, frontend and backend. And for each of them, I have to use several frameworks or toolkits.
As I've got a regular brainpower , I need some tools to keep up. My current way of working:
- for each project, I use a git-based version control system, a wiki and an issue tracker
- when starting the project, I first write a few wiki pages, with usually three sections: what I understood of the user needs, envisioned global system architecture, envisioned technical environment
- once the project has started, I use the issue tracker to store use cases and related tasks
- when I have to investigate some technical points, I document all what I do as comments attached to the related task
- when a task is done, I move stable information from the issue tracker to the wiki
- I add a README file to the git repository, which contains links to the wiki and to the issue tracker
To summarize: git for code, wiki for (almost) static documentation, issue tracker for dynamic tasks.