I am looking for advice for doing "emergency documentation" for a large and complex software module in the technical/embedded domain, that I worked on for several years.
I am going to leave the company within weeks, due to some developments which don't leave me another choice. The domain is more quality-conscious than the proverbial Internet startup. Projects often take years to complete. However, software is only part of the project, and due to severe time and cost pressures, managers had a tendency to focus on urgent issues while ignoring more long-term quality issues, which technical documentation is a part of. The idea was probably to produce some documentation at the very end of the project.
Now, the project manager realized that they will need an estimated six to eight months for getting the next developer (which has yet to be found) up to speed with the software. It will also be difficult to hire a sufficiently competent developer in a short time, given that the salary is below average.
Now, managers want me to "just document everything", which is hardly realistic given the size of the project. I also have the impression that they do not have a clear picture of what they need now. Only one of the involved persons has a strong software background.
What exists are some requirement specifications which are however incomplete. The code itself is already commented at a reasonable level. It is not deliberately tricky but some stuff needs specialist knowledge and/or a lot of experience. I already documented many technical decisions and considerations by email, writing weekly reports on strategy and technical difficulties. There is also already some good API documentation that I somehow managed to sneak in. What is needed is essentially some technical documentation which allows the next developer, assuming he is competent, to understand the larger picture so that he can relatively quickly continue working on it. I will need to assume that the reader of the documentation is somewhat proficient in C++ and is able to familiarize himself with any extra concepts he might need.
What do you recommend? In your experience, which aspects are most important and / or helpful? Would you recommend to use some kind of Wiki for documentation?