Writing is an essential skill for software developers.
Software documentation should cover the development and engineering decisions, not the code. It should explain why and how it was built and is maintained. An ideal to strive for is making it possible to recreate the system from scratch, without access to the code, should it be necessary.
Technical documentation for any software system should include:
- A logical model of the domain
- logical architecture schema
- physical architecture schema