It seems like the first ObjectOrientedProgramming project (particularly those using CeePlusPlus) done by most companies turns out to be a disaster, leaving bad tastes in the mouths of managers and some programmers for years to come. It is too late to change history, but what can we do about removing that bad taste? -- KeithRay Such disasters often are due to bad planning (and no or insufficient education/tutoring), and these people often cannot be enlightened, mostly because they don't care. -- JuergenHermann (I agree with the first half of Juergen's sentence and disagree with the second half, but CeePlusPlus has left an ongoing and growing bad taste in my mouth for 13 years, and I won't get very close to a C++ project even now. For object projects using other languages, there are, however some cures. -- AlistairCockburn) ---- This is not an ObjectOriented problem, but a RiskManagement problem and a CeePlusPlus problem. Many first-OO projects were done with too many new things, which is bad risk management. Many first-OO projects were done with C++, a dangerous language which increases risk. Any project using a new ''anything'', be it a language, ProblemDomain, or platform, has increased risk. If you are doing just one new thing, you can succeed, although you are almost certain to not meet a constraint (budget, time, quality). The disasters comes from doing two new things at once ("Let's do our ''new'' product using C++"). These projects fail, or if they succeed, it's with everyone feeling like they failed. C++ is such a dangerous machine that it counts as ''two'' unknowns unless you have an experienced machinist on the team. The problems with learning C++ are not so much with OO itself, but with gritty realities such as MemoryManagement in the presence of exceptions. Objects are easy by comparison. ''The first time, I read 'machinist' as 'masochist'. That might help or might hurt.'' Things may be improving now that programmers are trying some ObjectOrientedLanguage''''''s which don't have C++'s exposed programmer-mangling gears. Languages such as JavaLanguage and PythonLanguage only count as one unknown because they have guards on the machinery. ''Can you reduce one of the unknowns with C++ by not using exceptions?'' I don't think so. You can chose not to throw exceptions, but libraries you call may throw them, and ''operator new'' throws an exception if it runs out of memory. ''You know you can turn that behavior off, right?'' ---- Here is a recipe for disaster: 1. Grab people with little or no experience in CeeCeePlusPlus. Little means less than a month. 1. Select CeePlusPlus as the implementation language and give them 3 months. 1. Wait exactly 3 months to get some feedback, realize that nothing works, give then 3 more moths. 1. At month 6 get some feedback again. Lack of training? Here is some training. Wait 6 more moths. 1. At month 12 declare C++ to be a disaster and get back to do VisualBasic. ** ''Changing a fast disaster into a slow-motion disaster.'' ---- CategoryObjectOrientation, CategoryStory, CategoryOopDiscomfort