Tuesday, February 16, 2010

Dreaming in Code by Scott Rosenburg

Cool story about software development at a silicon valley startup. Mitch Kapor, the man who created Lotus 1-2-3 years ago, decided to do another killer app. Rented office space, small team of experienced programmers, self financed by Mitch. The author, who is not a software guy, hung around the operation for it's first three years and wrote a book about it.
Software development hasn't changed much. Three years into the project and they had little to show for it, despite all the experience on the team, leadership by a silicon valley legend, and a booming economy.
Rosenburg gives a good layman's account of the various fads in software engineering, going back to the 1960's. Each new fad was supposed to create great software on time and on budget. Well, that hasn't happened yet.
The project was to create a super personal information manager that would hold contact information, to-do lists, appointments, photographs, and anything else, keep the home computer updated with the work computer, allow sharing with everyone and anyone, and perhaps travel faster than light as well.
Rosenburg, a non programmer, doesn't understand what specifications are for. He mentions that the project lacks specs. He doesn't understand that a spec is a trial run at the real program. If the programmer cannot explain what he is doing to other humans in his native tongue, he won't be able to explain it to a non sentient computer using a complex programming language. And, specs allow the others on the project to know what the program is going to do, and if it will fit into the rest of the project.
This project didn't understand "the minimum working set". Until code is running, you have nothing. To get the code running, you select the absolute minimum amount of code needed to make the program do something, even if something isn't very much. Get the minimum working set running and then add in the rest of the project, piece by piece. This project did "release" early versions, but it was a pro forma activity, the early releases crashed continuously and didn't do anything.
Anyhow, good to learn that software development hasn't changed since I retired.

No comments: