|
Hello! My name is Brad Appleton, and I'm a book-a-holic! Hear my serenity prayer: Lord, please grant me ...
We're not pretending these are the "only" classics, or even the "best" of the classics. These are just the ones from our personal list that we have found ourselves referring to most during 2005. A few of them might be surprising. In a later section we'll tackle some books that aren't really classics just yet, but we hope they will be someday soon. Software Fundamentals: Collected Papers of David ParnasParnas' papers are most definitely fundamental classics in the field software development for software architecture, software requirements, and software process. He is considered the "father" of encapsulation and the principle of information hiding. His papers on program families and designing software for ease of extension and contraction apply every bit as much to configuration management as they do to software design. And fans of both Agility, and RUP will never forget the classic paper after which "Rational Software" took its name. I'm proud to have played a part in the creation of this book. I had the initial idea for it, mostly because I wanted it to exist and when I found out it didn't, I felt very strongly that it ought to. When asked if I wanted to be the one to collect the papers together into a book, I said (in my best Wayne and Garth voice) "I'm not worthy", but I knew David Weiss (through Jim Coplien) and was able to get him interested enough in the project to turn it into reality! Gerald Weinberg has authored and co-authored so many classic books, it's extremely difficult to choose just one or two. Steve likes these two because they are so timelessly helpful in problem-solving, and in working with others to lead problem-solving efforts. Are Your Lights On?: How to Figure Out What the Problem Really Is is a bit of an easy-to-read "primer" on General Systems Thinking. One problem people encounter when they use SCM tools and techniques is that they do "too much," and their system ends up hindering rather than helping them. This book is not about SCM but rather how to figure out what is really wrong in a system. It is an entertaining read that teaches an important and often undervalued skill. This books is about figuring out what the problem really is before going off and "solving" it. A must for agile teams. Becoming a Technical Leader: An Organic Problem-Solving Approach is a must-read not just for all would-be technical leaders, but for anyone trying to champion change in their workplace processes (be it CM-related or Agile-related). It's a great book at helping us understand ourselves and how we can help others understand and express their voice so that we can all put our heads together, collaboratively. What else is there to say - the title says it all! Steve McConnell's 2nd edition Code Complete just came out this year and has been comprehensively updated and expanded. This book is still a must read for any practicing software professional and covers far more than just development. It doesn't claim to be the first and last word on the subject, but it's definitely a solid "first word" with comprehensive resources and reading lists on where to find the rest. DeMarco and Lister's Peopleware is another well-known classic that was perhaps one of the first well known books to popularize the importance of the people-factor in software development, which Agile methods brought back into the limelight when so many who were focusing on the Software CMM were appearing to omit that important part of the equation (even though the CMM fully acknowledged it, and even devised a People CMM to underscore it). Some of the seminal research on the importance of flow and context-switch interruptions and workspace layout and office design is in this book. DeMarco and Lister's most recent work together is on the critical subjecct of software risk management, entitled Waltzing with Bears: Managing Risk on Software Projects and was a 2004 Jolt award winner. It, and DeMarco's other recent book Slack: Getting past burnout, busywork, and the myth of total efficiency are likely to become classics in the not-so-distant future. We wish there were more to say here. The "classic" books on Software CM are the ones by Whitgift, Babich, Berlack, and Bersoff. Despite their technology-independent content being "timeless", the books are nonetheless out-of-print or hard to find, or very much "dated" by the amount of references to old or outdated SCM technology. What should the "new" SCM classics be? Great question! There were a dearth of good books on the subject for awhile, and then sometime around 2000 or 2001, the subject started becoming popular again and several good titles came out. Unfortunately, some of those too were either tool-specific and/or now outdated. If I had my pick, my first choice would be Susan Dart's Configuration Management: The Missing Link in Web Engineering. I'm aware of Alexis Leon's comprehensive SCM Guidebook (now in it's second edition) but Susan's work is among my favorite in the field and this book really combines together most of her best writings on the topic. My second pick would probably be Mario Moreira's Software Configuration Management Implementation Roadmap followed closely by Anne Hass' Configuration Management: Principles and Practice Michael Bay's Software Release Methodology warrants an honorable mention here too. Robert is allowed to mention Software Configuration Management Patterns: Effective Teamwork, Practical Integration by Steve Berczuk with Brad Appleton! This book would not have been written without encouragement from John Vlissides, one of the authors of Design Patterns, the seminal work on the subject of patterns if not on all of O-O software design, and one of the best selling computer-science books of all time. Unfortunately John died recently after a long bout with cancer -- there is a Wiki page to memorialize John showing some of his contributions and the lasting impressions he created. SCM Books in 2005The jury is still out on what will be the "new" classics of SCM though, particularly since 2005 was a banner year for Software CM books, including all of the following:
Although the majority of these appear at first glance to be tool/vendor-specific, most of them in fact have extremely useful general insights and nuggets about Software CM and/or Version Control, particularly the titles from Laura Wingerd, Brian White, and Vincent Maraia (though I have several quibbles with numerous statements in "The Build Master"). Agile Management and IT Career DevelopmentThere have been a number of books in the last year or two that seem less about CM or agile development and more about CM toolsmithing and administration, or agile management. While they might not be what you would expect to see on a list of "Agile CM" readings, I think they are nevertheless worth your attention! Agile Estimating and Planning and Managing Agile ProjectsMike Cohn's brand new book Agile Estimating and Planning looks pretty incredible. Whether or not your project is Agile, this seems to be the nuts and bolts of real-world estimating and planning. This is not what formal project management textbooks say to do - it is what you end up having to do anyway in the real-world, at least if you want to succeed. In the same vein, Sanjiv Augustine's Managing Agile Projects gets at the heart of the social and political dynamics of real-world project management, and managing interactions and relationships with your stakeholders and project team-members (rather than burying your head in the GUI of the project management tool). Esther Derby and Johanna Rothman have collaborated together on an indispensable "tour de force" in Behind Closed Doors: Secrets of Great Management, from The Pragmatic bookshelf. Every budding and first-time software manager should grab this and read it. Also from The Pragmatic bookshelf is Jared Richardson and Will Gwaltney's Ship It! A Practical Guide to Successful Software Projects, which is exactly what the title suggests it is. Both these books are just published in 2005 and both look to be winners by giving insider knowledge of what happens in the real-world and what's necessary, successful, and ethical, in order to deal with it. Just about anyone involved in Software CM has had to do some scripting here and there, and Perl is the language predominantly used to script and automate many such tasks. No Perl-scripting SCM automaton should be without Peter Scott's 2004 book Perl Medic: Transforming Legacy Code. For those first starting out as toolsmiths and automators, Mike Clark's 2004 Jolt award winning Pragmatic Project Automation is another must-have. And for those who are primarily doing IT and scripting and only dabbling into the SCM process area out of necessity (because no one else is there to do it), keep learning about SCM! But while' you're at it I would strongly recommend picking up Chad Fowler's 2005 title My Job Went to India and all I got was this lousy book. This book seems kind of important as a wake-up call for not only keeping skills current, but keeping one's career "marketable" and making oneself indispensable. Agile Software Development: Principles, Patterns and Practices by Robert C. Martin
This book won a much deserved 2002 Jolt Award. For me, few other books successfully combine and convey the essence of software design, design patterns, refactoring and agility in a single tome. "Uncle Bob" successfully inter-relates principles of object-oriented design to design patterns and refactoring and agile methods in what is likely to become a classic. I find myself referring to this book at least weekly if not more often. The principles of object-oriented design relate not only to agility and software architecture, but also to good SCM solution architecture and sound principles of SCM. My "runner's up" and "honorable mentions" for this one are:
This book isn't truly a classic (yet). I feel that it should be, and hope that it will be some day soon. I think it is a profoundly important book for all involved in software development/engineering to understand. If more businesses understood Armour's perspective about why "Software is not a product", but rather a medium for the capture of knowledge (and hence software development is a knowledge creation activity rather than a production manufacturing activity), they would find so much more in alignment between software products and services and Peter Drucker's expansions on Deming's theory of profound knowledge that it might well revolutionize the way they choose to develop software. Contradictory as it might seem, Armour's writing and "Laws of Software Process" are extremely well aligned with Agile methods and values. Anyone who considers themselves an Agile advocate would do well to read and understand this book. My "Runner's up" for this one would have to be: These may not be as well known as Kent Beck's seminal book on Extreme Programming Explained, but the above two books, along with Armour's are quite possibly the best out there for understanding much of the underpinnings of Agile methods. (Of course I'm leaving out Nonaka and Takeuchi's The Knowledge Creating Company and the existing literature on complex adaptive systems, but I can't fit everything in.) This is a book about neither CM nor Agility. It's not even about software development. It is a book about both science and humanity. And it's probably the book that had the most profound impact upon me of all the books I read during my high school years. I find myself regularly referring to it more and more as Agile development method keeps injecting the human focus on people and interactions into the art and science of software development. Bronowski's book has a chapter called "Knowledge or Certainty" that is about dealing with the inherent uncertainty in some things, and also in attempts at absolute knowledge/power attempted without grounding in real feedback, ending up doing things that dehumanize ourselves and others. Also, in the first chapter is a quote that: Man ascends through the discovery of the fullness of his own gifts. What he creates along the way are monuments to the stages of his understanding of nature and of self." I think the same is true of how we develop software and the iterative discovery and learning along the way about the system's real requirements, and the nature of the software development process itself and what software architecture can and cannot do to sustain both over time. Having just been published by O'Reilly in November 2005, Laura is the VP of Product Technology at Perforce and co-author with Chris Seiwald of one of the most quoted papers in SCM (High Level Best Practices for SCM). She brings an engaging writing style and tone to the explanation of a variety of subjects ranging from the arcana of merging through to the care and feeding of codeline management. Chapter 7 is available from the O'Reilly web site as an example chapter from the book, and is a very lucid explanation of codeline policies and "the flow of change". These principles apply to any SCM product, not just Perforce. It introduces concepts such as The Tofu Scale (from soft to firm codelines!), and nicely explains the conventions of releasing code via a mainline as "why you don't drive through hedges". The ideas presented are of course mainly directed at Perforce usage, but some of the principles apply to tools using similar "path space" branching mechanisms (what Perforce calls "inter-file branching") such as Subversion and Microsoft Team Foundation. My main quibble with the book is the focus on the command line - understandable as it is much easier to present examples than via screen shots which are more difficult to maintain - which might put some people off, but this is a "must have" for any site using Perforce. Robert reviews David Allen's Getting Things DoneThis book (GTD) has created something of a cult following in technological circles. From its author's website:
I have had some good experience personally with using this method to get to grips with my inbox in particular - reducing hundreds of messages to only a few on a regular basis together with generating appropriate lists of tasks to complete! The principles of tracking and managing items and co-ordinating them into "done" have direct relevance to SCM. The feeling of being more in control is also something that I feel with a well implemented SCM process - it reduces worry and frees energy for being productive with a relative lack of risk. There are a flood of web sites and resources discussing GTD but the book is a relatively easy read and very quickly gives you the idea. One of the big attractions is how easy it is to implement using a wide variety of different technologies ranging from pencil and paper (Hipster PDA) to an Outlook plugin. Happy Holidays and Hopeful New YearsThat's our Agile SCM Librarian's retrospective of 2005. We hope you all have a Very Happy Merry ChristmaHannaValiRamaKwanzaakah (or non-denominational solstice celebration) in 2005 and look forward to what 2006 will bring to all of us in the coming year!
Steve Berczuk develops software applications at Fast Search and Transfer in Boston, MA. He has been developing object-oriented software applications since 1989, often as part of geographically distributed teams. In addition to developing software he helps teams use Software Configuration Management effectively in their development process. Steve is co-author of the book Software Configuration Management Patterns: Effective Teamwork, Practical Integration. He has an M.S. in Operations Research from Stanford University and an S.B. in Electrical Engineering from MIT. You can contact him at steve@berczuk.com. Brad Appleton is co-author of Software Configuration Management Patterns: Effective Teamwork, Practical Integration". He has been a software developer since 1987 and has extensive experience using, developing, and supporting SCM environments for teams of all shapes and sizes. In addition to SCM, Brad is well versed in agile development, and cofounded the Chicago Agile Development and Chicago Patterns Groups. He holds an M.S. in Software Engineering and a B.S. in Computer Science and Mathematics. You can reach Brad by email at brad@bradapp.net Robert Cowham has been in software development for over 20 years in roles ranging from programming to project management. He is one of that strange breed of developers who enjoys SCM and the whole subject of improving software development processes (a sucker for the quick feedback wins of making a software development team more effective). He is the new Chair of the CM Specialist Group of the British Computer Society. He has a BSc in Computer Science from Edinburgh University and is a Chartered Engineer (CEng MBCS CITP). You can contact him at rc@vaccaperna.co.uk
Set as favorite
Bookmark
Email this
Hits: 9875 Trackback(0)Comments (0)
|
| Last Updated on Tuesday, 15 August 2006 05:25 |



