The Other Face is the 15th installment of the Re-Read Saturday of the The Mythical Man-Month by Fred P. Brooks. In this essay Brooks tackles the thorny issue of documentation. Both code and documentation are the manifestations of a message. Code is the tool though which the programmer communicates with the machine. Documentation is the tool through which the programmer communicates with world outside the operating systems. Both communication paths are critical to delivering the most value possible. While documentation is widely acknowledged as need, the downside is that, from time immemorial, documentation has been viewed as a scourge, a pain, and sometimes as a punishment; it is designed to keep developers from doing real work – creating code. Leaders and teachers need to find a means to surmount this seemingly natural hesitancy. Brooks’ solution is to show them how to do the documentation needed, rather than relying solely on exhortation.
Brooks begins by laying out the three different levels of documentation, and the requirements each conveys.
- Documentation needed to use a program. The prose description of the program forms the centerpiece of the documentation needed to use a program. Brooks includes nine categories of information, ranging from purpose to operating instructions, in his definition of the program’s description. The idea is to start the description at a high-level, and then deconstruct the data into a more detailed view. In many organizations I have observed that some organizations use technical writers to shift the burden from the development teams for this level of documentation.
- Documentation needed to believe a program. Simply put, this documentation includes test cases need to prove the program works. Including the test cases to prove the program actually works in a repeatable manner is the basis for Agile testing. Again, Brooks foreshadowed the ideas that would evolve into the technical components of Agile.
- Documentation needed to modify a program. Having worked as a maintenance programmer more than once in my career, I have more than once cursed the programmers that came before me as I tried to understand the convoluted code they had written. Brooks identifies the typical documentation organizations need to change or adapt a program into five basic categories:
- Flowcharts (Brooks argues later in the essay that flowcharts are oversold),
- complete descriptions of algorithms used,
- description of file layouts,
- overview of the pass structure, and
- a discussion of modifications contemplated in the original design.
The focus of this type of documentation is single-mindedly on what will be required when someone is making a change or contemplating making a change to a piece of code.
The solution Brooks suggests is relying less on the obsolete nuisance of flow charts which he believes are only suitable for initiating beginners into algorithmic thinking, and instead leveraging self-documenting programs. Self-documenting programs disprove the fallacy of the need to maintain code and documentation synchronously. In agile it is often said that code is the only documentation programmers need for support, although some more mature Agile teams combine code and test as documentation. For programs to be consistently self-documented requires building the process directly into how work is completed while reducing the burden placed on the developers. Good self-documented programs use all of the bells and whistles built into the language being used, leverage white space and formatting to enhance readability and also include comments.
Brooks culminates the essay with the sentence “since machines are made for people, not people for machines, their use makes every form of sense, economic in human.” The point is that since the interaction between the developers represented a flow of information there is no reason we can’t reuse the same information as program level documentation.
Previous installments of the Re-read of The Mythical Man-Month
The Mythical Man-Month (The Essay)
Aristocracy, Democracy and System Design
Why did the Tower of Babel fall?
Ten Pounds in a Five–Pound Package
November 1, 2015 at 3:12 am
Roll your eyes, this isn’t a very exciting subject for most.
I had to comb this chapter a couple of times to find some useful tips from Brooks; unlike the previous chapters, where usefulness and interesting information just jumps out.
Are you using a standard that is not being used as intended?
Flowcharting was such a standard practice. Mandated as a deliverable when I started my technology career.
p. 168 “Many shops proudly use machine programs to generate this “indispensable design tool” from the completed code.”
Flowcharting back then meant documenting the entire program flow. Flowcharts are a great teaching tool and also a good visual design tool when used informally (paper and pencil, and high-level). But formally replicating the exact code logic is a waste of time.
I doubt if anyone consulted independent flowcharts more than once. Why? Because they could not be trusted as a source-of-truth, but source-code has always been a trusted source-of-truth.
Any documentation extracted from the source-code can be trusted (assuming reliable software). Brooks does discuss “self-documenting programs” and I am sure Brooks became a fan of Javadoc. Wait, perhaps Brooks writing in this chapter helped influence the creation of Javadoc.
November 1, 2015 at 9:01 pm
[…] Remember that the Re-Read Saturday of The Mythical Man-Month returns this week when we tackle the essay titled “The Other Face” Check out the new installment at Software Process and Measurement Blog. […]
November 7, 2015 at 11:57 pm
[…] The Other Face […]
November 8, 2015 at 9:00 pm
[…] Remember that the Re-Read Saturday of The Mythical Man-Month returns this week when we tackle the essay titled “No Silver Bullet” Check out the new installment at Software Process and Measurement Blog. […]
November 14, 2015 at 11:56 pm
[…] The Other Face […]
November 15, 2015 at 9:57 pm
[…] Remember that the Re-Read Saturday of The Mythical Man-Month returns this week when we tackle the essay titled “No Silver Bullet, Refired.” Check out the new installment at Software Process and Measurement Blog. […]
November 22, 2015 at 9:15 pm
[…] is winding down. THis week we are running a quick poll to identify the next book on the Software Process and Measurement Blog. What would you like the next re-read book to […]
November 29, 2015 at 9:47 pm
[…] the essay titled “The Mythical Man-Month 20 Years Later” Check out the new installment at Software Process and Measurement Blog. What would you like the next re-read book to be? Please vote on the […]
December 5, 2015 at 11:57 pm
[…] The Other Face […]
December 6, 2015 at 9:00 pm
[…] with the essay titled “The Mythical Man-Month 20 Years Later” Check out the new installment at Software Process and Measurement Blog. We will be choosing the next re-read book to be? One last call for votes. Please vote on the […]
December 13, 2015 at 10:11 pm
[…] The readers have spoken and next week we will begin the re-read of How to Measure Anything, Finding the Value of “Intangibles in Business” Third Edition by Douglas W. Hubbard. Like The Mythical Man-Month that we completed last week, the version we are reading is not the same version I originally read in 2007. Check out the introduction to the next re-read at Software Process and Measurement Blog. […]
December 14, 2015 at 3:01 am
[…] Essay 15 reply (November 01, 2015) … […]
December 20, 2015 at 10:01 pm
[…] Finding the Value of “Intangibles in Business” Third Edition by Douglas W. Hubbard on the Software Process and Measurement Blog. Chapter one lays out Hubbard’s philosophy and approach to measurement. What do you think is […]
December 27, 2015 at 10:07 pm
[…] Finding the Value of “Intangibles in Business” Third Edition by Douglas W. Hubbard on the Software Process and Measurement Blog. Chapter Two provides the evidence that measurement does not need to be complex or expensive, and […]
January 3, 2016 at 9:46 pm
[…] Finding the Value of “Intangibles in Business” Third Edition by Douglas W. Hubbard on the Software Process and Measurement Blog. In Chapter Three, Hubbard explores three misconceptions of measurement that lead people to believe […]
January 10, 2016 at 10:07 pm
[…] Finding the Value of “Intangibles in Business” Third Edition by Douglas W. Hubbard on the Software Process and Measurement Blog. In Chapter Four, we focused on two questions. The first is getting the reader to answer what is […]