Dr. Brooks
Addison Wesley Longman Inc.
Chapters 16&17:
These chapters both focus on the same topic, and that is, there is no silver bullet in programming. Essentially it is the idea that once the software becomes a large uncontrollable beast that it cannot be stopped. We all want to be able to shoot the program with the silver bullet and be able to reduce its time and costs and just have it be dead and done with. To accomplish this, programmers need to realize that they need to look at design elements such as conformity, changeability, invisibility and conformity and make them play off each other equally. This also takes the cooperation of a team and making sure that each player on the team understands what needs to be done as well as where the project is going. The team needs to have a unified programming environment and cooperating standards of coding to accomplish the task. The team needs to also be able to set themselves up into stations, similar to the idea of the surgical team each person needs to have a job and they need to be able to do it at all times. This makes the group flow together and they allow the group to make lots of prototypes and develop in ways that are doable by the programmers but also comfortable to not make mistakes. The whole team needs to have clearly defined roles and each person needs to make sure they have a mentor or someone who they can fall back on in times of need. However, there is some things that can be done to a project that can help it immediately, without being the great "order of magnitude" jump that programmers are looking for. Ideas such as designing the interface with the customer in mind and doing things that the customer said they would like to see in the software is a pure bona-fied way to get more sales as you are adding features that the users said they would directly pay for. There is also the idea of having "interchangeable methods" that is, methods that only do actions with the information they are given and do not affect the program as a whole, this way if a method becomes hopeless or done then it can simply be removed or fixed later. They also talk about the idea of the brass bullet and will it do when you cant find a silver bullet? Can you simply fix a lot of small things and make the program into a working piece of software that maybe has a few flaws that are livable? This essentially comes down to the idea of reusing what you can and doing cost-benefit analysis of what needs to be done and what can be left for a later version or an upgrade. Essentially it is the idea that while you might not be able to do a single change that will improve your program ten fold, you can fix enough to make it good software, you just need to know where to look.
I like these paragraphs for the most part but there seems to be examples missing here. I get what they are saying and I understand the chapters but I don't see any examples or what kinds of situations you want to practically apply these. In most of the chapters there are lots of good examples and there are specific historical and personal cases of the author using these and it really feels like he defends his work and says WHY these techniques work. In this case, he presents these two conflicting viewpoints and then simply says "these are the cases, they work like this" and doesn't really back up his claims. I feel like even if he didn't want to be objective and say strait out "I support this side of the argument" and then write more about that one that would be fine but we don't even get that. It feels like we are trying to fit into a small pair of jeans and we know we can simply cut off the knees and be OK. Why not just simply give a basic example and say that's good enough, why try to make these chapters so overly involved with technical. In fact these are some of the longer chapters and they really don't say much that hasn't already been said in earlier chapters of the book. I think that the ideas are really good but if you used some of the techniques presented earlier in the book then you wouldn't even be in this situation. I liked these chapters but wanted more examples.


