Depending on the nature of the project and the size of your development team, a number of methods are necessary to adequately cover all of the bases:
- Paper Notebook (for personal day-to-day notes)
- Dedicated Bug-Tracking App (because it's too important to not be its own thing)
- Wiki (for internal documentation within your team or department)
- Blog (to keep a journal of your growth as a developer)
- Forums (for team discussions and Q&A)
For day-to-day notes, reminders, and sketches, I still haven't found anything as good as an old-fashioned pen & paper notebook. Part of the beauty of this solution is that your notebook can be as organized or as chaotic as suits your style. I don't think there is any best way to use a notebook.
A wiki is great, but I find that in order to get the most out of it, it has to be a common wiki used by everyone on the team or in the department. TiddlyWiki is an excellent piece of software, but it is designed for individual use. You want something more like MediaWiki that can be set up on a central server.
The focus of your wiki should be on practical documentation. It should be rife with FAQs, tutorials, How-To articles, sample code, and so forth. Ideally, any time somebody on your team hits a stumbling block and has to learn something specific to your company or project, they should contribute an article to the wiki about it.
Avoid email for documenting things such as gotchas and best practices. Many people tend to reach for email when they first identify a recurring problem and want to publicize the solution. The problem is that email tends to be hard to find weeks later, which is when the problem being discussed will most likely resurface. The best thing to do is to write a wiki article and then send an email to publicize the article. A good wiki will have a much better signal to noise ratio than a typical email inbox.
A blog is a useful tool for personal development and communicating your experience to other developers. However, writing a good blog tends to be a lot of work, and may prove to be too much of a distraction within a software development team. Also, blogs lack the hierarchy that a wiki has; they capture information in chronological order, and therefore suffer from the same issues as an email inbox to a small degree.
If your team or department is large, a forum might be a useful alternative to email, and may also be a convenient dumping ground for transitory topics that don't belong in a wiki. A forum can be a useful place to track fire-fighting style issues that occur suddenly, affect many team members, and may require some discussion or exploration. It can also be a place to post light-hearted stuff such as funny web links or other topics that team members use to blow off steam.
Generally speaking, the most important things to have are the paper notebook, the bug-tracking DB, and the wiki. Blogs and forums are good to have, but not as effective for capturing simple, straight-forward documentation. So far I haven't found any single piece of software that is effective enough to replace a combination of individual notebooks combined with a central wiki and a central bug database.
It should also go without saying that your project should use some sort of version control software. :)