Software Management Pitfalls
As an independent software development consultant who has practiced full-time in Silicon Valley since the early 1980’s, I’ve encountered some rather interesting situations over the years. This posting discusses two separate new client prospects that contacted me within a few weeks of another earlier this year (2016).
The first contact was from the owner of an engineering development firm located on the Monterey peninsula that specializes in the manufacture of integrated circuit package decapsulation systems for semiconductor producers. They had been successfully operating for more than twenty years, and had shipped hundreds of customer systems (each priced north of $500K USD). They currently were about a year and a half into development of their ‘next generation’ product model. This next generation model was to be a ‘greener’ version (using less toxic chemicals) that their current model, and included several additional product features customers had requested. Upon contacting me the CEO explained that his main software developer had recently left the project to pursue other outside ventures, and that he only then learned that the only copy of the in-development new software project files were on the departed programmers laptop hard-drive. The CEO had contacted his former developer, and was told if he wanted the project source files he would need to pay an ‘additional fee’ for them. Obviously the CEO was faced with a potentially lengthy and costly legal battle, while his existing customers were hounding him for a promised forthcoming prototype release of the new system.
The second contact was from the engineering VP and CEO of a small custom engineering development firm located in Santa Clara, CA whose firm had recently designed and built a prototype gemstone metrology inspection system on spec for a high value customer in Manhattan, NY. The measurement system uses a high resolution imaging system and a multi-axis precision positioning stage, controlled by an embedded microcontroller running complex custom firmware coded as a bare-machine c language control algorithm. Upon arriving at their office for our initial meeting, they described how the firmware had been developed by a young programmer who worked for a partner firm in India. A few weeks earlier this programmer had been involved in a serious motorcycle accident, and both he and his laptop had been seriously burned. The programmer was hospitalized and his recovery time was uncertain, and his laptop had been destroyed in the accident. They were attempting to recover his hard-drive files, but due to the extent of the damage it was unclear if this would be possible. Furthermore, the programmer’s laptop had not been backed-up for over six months and the project files had not been duplicated elsewhere.
Amazingly the above two scenarios are not hypothetical – they’re real and recent!
While the field of software engineering/development is almost 60 years old, these types of mind boggling project engineering and management blunders unfortunately still occur.
While to professionals it seems trite to mention, the following management procedures are critically important for any software development effort:
1. The project’s required Software Development tools and setup must be documented.
2. All source files, tools, and documentation should be maintained in a network based source control system. Typical control systems include SVN, GIT, TFS, Clearcase, etc.
3. The project source file control system server must be backed-up on a regular (typically daily) basis, with back-ups stored off-site from the server.
Feel free to contact us if you have questions.