The essays span a range of subject and styles. Some of their content is fairly technical, minute advice to software managers on ways to get their jobs done. Other writing is more philosophical, asking questions about what make programming such a rewarding task. As a rule, his writing about people and organization stands the test of time much more than his discussion of good programming techniques.
I don't have the energy for a full-scale review. I do recommend it to anyone is software development. It provides some genuine insights along with a very interesting glimpse into what programming was like more than 25 years ago.
On a personal note, Brooks appeals to me because his is obviously a Christian. I find it delightful that he has managed to link two of subjects that are very dear to me, and usually considered quite distinct: Software Engineering and Catholic Theology. (I have a Master's Degree in each. Don't ask. Actually, go ahead and ask, since they're two of my favorite subjects! But I digress.) Brooks quotes from a papal encyclical in this Software Engineering book.
Here are some selections from the book:
On The Joys of the Craft
Why is programming fun? ...On Conceptual Integrity
First is the sheer joy of making things. As the child delights in his mud pie, so the adult enjoys building things, especially things of his own design. I think this delight must be an image of God's delight in making things, a delight shown in the distinctness and newness of each leaf and each snowflake.
...[In respect to the joy of making useful things, ] the programming system is not essentially different from the child's first clay pencil holder "for Daddy's office." [pg. 7]
I will contend that conceptual integrity is the most important consideration in system design. It is better to have a system omit certain anomalous features and improvements, but to reflect one set of design ideas, than to have one that contains many good but independent and uncoordinated ideas. [pg. 42, emphasis in the original]On "Essential Difficulties" in Software Development
I believe the hard part of building software to be the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation. [pg. 182]
The complexity of software is an essential property, not an accidental one. Hence descriptions of a software entity that abstract away its complexity often abstract away its essence.
No comments:
Post a Comment