Most software development projects don't practice what is usually cons
idered ''proper'' software engineering practices: well-documented, tra
ceable requirements do not exist, formal inspections are non-existent,
analysis and design models are incomplete or not even done at all, an
d so forth. We know that many of these projects fail, and it is easy t
o blame the failure of the project on the lack of good software engine
ering practices (''If we only had well-documented requirements, a comp
lete and thorough test plan, and formal schedules then we would have b
een successful!'') But many projects that do not practice what many co
nsider to be good software engineering practices succeed, and succeed
famously. Examples include the startup introducing a revolutionary new
product, the skunkworks project of an established firm that succeeds
in changing the status quo, and selecting a mission critical applicati
on as the first OO application of a group just beginning to make the t
ransition to the new technology. Gaining a deeper understanding of suc
cess and failure on software projects is absolutely essential for the
continued maturation of our industry, and object technology in particu
lar.