The Times They Are A'Changing, Part 2

Three months off, in the middle of summer. What a deal! Well, I didn't quite appreciate it at the start, but by the end it was a Good Thing. All I needed to do was realize that this was one of those times you saved money for in the past. Once I got through that, time off was really great. But all good things must come to an end (the best you can do is hope that they end with the beginning of something else good, which this did), and this vacation ended in mid-July with a job at Adobe. Wait a minute — Adobe doesn't make games (oops)! But they make incredibly successful products on the Mac and the PC (with some Unix versions thrown in), they do it with teams smaller than some game teams, and their productivity compared with game developers is quite impressive.

There is no question that it's going to take some getting used to, however. Beginning with the security — it's the first time I've had to wear a photo badge — the building in downtown San Jose is remarkably like a city unto itself. When I invited my former boss from Rocket Science out for a milkshake he admitted he'd only been out of the building for lunch once in the last four months. It seems like almost everything you could need is available inside the bounds of Adobe. It reminds me sometimes of Todos Santos in the Niven/Barnes novel Oath of Fealty. Somehow I had gotten the idea that feudal loyalty to your corporation (and vice versa) had gone out of style. I guess we'll see.

Rapid Development

Steve McConnell
Microsoft Press, PB, 647 pp.
ISBN 1-55615-900-5

I have previously reviewed Steve McConnell's Code Complete, and it was the first book I saw that I thought every programmer should own. When I discovered that McConnell had another book out, I knew I had to read it. Read is hardly a description of what I did with Rapid Development — I attacked it, I devoured it, I consumed it voraciously — and it did not disappoint me.

Rapid Development is about the same size as Code Complete (big!) and fits nicely next to it on your bookshelf. But don't expect it to spend a lot of time there when you first get it. You will get hooked by this book the same way you get hooked by a good novel, because it talks about something you want to know — how to manage development without going crazy. The subtitle is Taming Wild Software Schedules, and that's a good description of the information in here. Almost two-thirds of RD covers basic issues, from Risk Management through Lifecycle Planning, Estimation, Scheduling, Teamwork, and for those of you who missed my lecture at CGDC (blatant plug!), Project Recovery. The final third of RD is a list of 27 "best practices", including techniques such as Change Boards, Evolutionary Delivery, Inspections, JAD, Measurement, Reuse, Spiral Lifecycle, Staged Delivery, Timebox Development, Tools Groups, and UI Prototyping (among others).

McConnell writes very much to the point of figuring out how to get software done on time without insanity. Central to this, of course, is estimating and scheduling your project. Alan Davis' Rule 148 is "Avoid The Impossible", meaning that you should know there is a minimum time to deliver a product of a given size and don't try to do it faster. McConnell goes deeper into the techniques of schedule estimating and the mathematics behind Davis' bald statement (to be fair, Davis' book, 201 Principles of Software Development is meant to be a collection of pithy sayings with one-page explanations), and gives you (well, gave me) a much better feeling for where the impossibility is and why our schedules are so often wrong. McConnell's charts of Shortest Possible Schedules (page 190) and Efficient Schedules (page 194) are fascinating and I immediately had to compare a couple of projects done at Rocket Science to see how we stacked up.

Throughout the book are a series of Case Studies demonstrating good practice and poor practice. A few of them are (to my eye) somewhat contrived, but many ring very true, and illustrate the application of McConnell's techniques (or their absence) quite well. While I have no reason to believe that I was specifically targeted, I've been part of at least a couple of these examples or teams just like them ;-).

Like Code Complete before it, Rapid Development is a must-read for team leaders, producers, technical directors, and development managers of all kinds. While there are other project and development management books which cover some of this material in more depth, I have yet to find any other book which covers the breadth of material in sufficient detail to justify changes in a corporate setting. It ranks up there with Peopleware among the books you should have your managers read.

The Art of Computer Programming

Volume 1: Fundamental Algorithms
Third Edition
Donald E. Knuth
Addison-Wesley, HB, 650
ISBN 0-201-89683-4

Donald Knuth's series of volumes on programming are being reissued this year by Addison-Wesley. I've only received Volume 1: Fundamental Algorithms (Seminumerical Algorithms is due in August and Sorting and Searching in October), but a quick perusal indicates that these works are as valuable today as when they were first printed. The mathematical review at the beginning of Fundamental Algorithms is worth the price of the entire volume.

Knuth himself admits that the job of updating these books is incomplete — that there are still piles of additions to be made. But as we all know, keeping up with the fast moving cutting-edge of technology is difficult, if not impossible. Hence the decision to release this third edition now instead of waiting a few years to catch up.

While it is unreasonable to expect every programmer to read every bit of these volumes, we should all aspire to have read them, and any serious student of computer science should own a set.

Well, I have to get back to learning the difference between the "real world" and the world of computer games. See you next time around...

Evan Robinson is a freshly-hired Engineering Manager in the Graphics Products Division at Adobe Systems, Inc. Previously he was Director of Games Engineering at Rocket Science Games, and before becoming a manager he was a consultant, programmer, technical director, and game developer. You can email him to talk (well, OK, type) about books, software, development, or the meaning of life.

Copyright © Evan Robinson. All Rights Reserved.