Whenever you create a program and try to not suffer the Not Invented Here syndrom, you have to research all kind of libraries. The biggest obstactle at this point it mostly the lack of good documentation, that let you start quickly. I lay particular emphasis on quickly, because there are a lot of excellent libraries available that have very detailed and precice documentation, but take a lot of time just to find out what it does and how to use it. A nice example is log4j. The first link in the documentation section links to Short introduction to log4j, which contains about 5600 words. That’s not what I call short, and it is certainly too much if you just want to get a quick overview.
Documentation should scale. It has to allow the reader to get to the level of understanding he really needs. This is what I believe what good software documentation should contain.