Tuesday, November 24, 2009
Impact of Software Documentation
"The guy who knows about computers is the last person you want to have
creating documentation for people who don't understand computers. "
I had an interesting discussion on today's game development class. We were discussing the prospects and advantages of joining a game development company. One of the classmates told that he prefers game development companies over traditional companies because there is less documentation in game development companies.
It was a bit surprise to me that I never expected such a point. I requested him to eloborate on the topic. His overall argument was:
1. Documentation is an unncessary work. It is a hurdle to programmer.
2. Programmers could do a better job i.e. programming instead of documentation.
3. Game development companies require very less documentation.
Usually, I do not like to argue or contradict others personal opinions. But, in this case alone, I think the whole concept of documentation has been misunderstood. I have seen several people of this same opinion. They argue that documentation is a secondary grade work compared to programming.
Unfortunately (or actually fortunately), I could not agree with them. To me, documentation is a part of programming. I would consider it as one of the most important part of programming. I believe:
1. Documentation lets a programmer to have a blueprint for the implementaion of a project.
2. Documentation lets a programmer to prioritize the goals.
3. It lets a programmer to analyze his own work.
4. It helps in developing the test cases and ensures that all possibilities are tested.
5. It validates the program, tests for quality and much more.
6. More than everything, It helps the future developers.
As a developer for 4 years, I have used so much documentation, as a part of our project, such as:
1. Business Requirements Document
2. Preliminary Analysis Document
3. Project Estimate Document
4. Project Plan
5. Business Analysis Document
6. Technical Design Document
7. Unit Test Plan
8. Unit Test Logs
9. Integration Test Plan
10. Integration Test Logs
11. Stress & Performance Test Plan
12. Stress & Performance Test Logs
13. Implementation Plan
I do agree that all these documentation is a lot of work.
But, Practically, I have seen and realized that this documentation and a disciplined process of Software Development will create a High Quality product and make the life of a developer easier.