Managing software development projects
Back around 2005 I was thinking a lot about how to manage uncertainty in software development projects. This became a more popular topic a few years later, with pretty much everyone eventually converging on the same core ideas.
- BDUF or incremental? UML, CRC cards or ...? For at least the last 40 years, software development methodologists have been arguing about when and how to design software. Examining the principles motivating software design helps make sense of the conflicting camps and choosing the right alternative. See
"How much design?"
- Strategically structuring a project is obviously important, but not much has been written about it. Given a long list of things that need to be done, how should the list be structured? What is the optimal order of tasks? On what basis do you decide what to do next? See
"Structuring a Project"
- Process development and improvement is a lot like software development: Just incrementally fixing what's broken works pretty well. See
From my time at UPenn.
Two software products I wrote in my entrepreneurial youth.
Time Planner Deluxe was a Personal Information Manager (PIM) for Windows that I wrote with a friend in the early nineties. It took us about a year to get version 1.0 ready for commercial release. Our first success was with a huge OEM deal of 250,000 units that went to the US Air Force; we also scored a licensing deal with Softkey in which a rebranded version sold 60,000 copies at retail. This was written in Borland C++, arguably the best Windows development tool at the time.
Telios was a commercial communications program for PC-DOS that let you connect to online services via modem. I wrote this -- entirely in assembly language, rather stupidly -- in the eighties shortly after the original IBM PC was released. It received very nice writeups in PC Magazine and PC World and sold about 3,000 copies.