A few days ago I was working on a gnarly problem with a component in a large application. Debugging the problem was made doubly difficult because I didn't originally write the component and I don't have the source for the component.
Well, I sort of have the source code. I have version of the source which is close
to the version the compiled version that's been used for a couple of years. I don't have a changelog between the two and I don't even know if the source archive was created before or after the compiled version! It's a pretty frustrating situation.
Why is it that some developers continue to deliver software built with less care and attention than most people would use in making a sandwich? Worse yet is when whole teams or organizations engage in this poor behaviour. You'd think that at least one person would stand up and say "This is madness!" Sometimes the poor practices continue for years and years before the team eventually fails. Inevitably the reasons for the failure are never understood by the participants but they are left burned out and frustrated.
My experiences with most teams in Sun has been pretty good. Sun teams seem to generally be somewhere around SEI CMM Level 3. There are some teams at Sun which perform even higher. This is much better than the industry average and it's one of the reasons why I like working at Sun.
The most disappointing part of modern software engineering is that it seems to be taking forever for the standard practice to improve. I keep expecting that there is going to backlash against the software industry as a whole for shoddy development practices. Maybe it's already happened though. The custom software market has dwindled in recent years. Perhaps it's because the customers realized they were getting poor value for their money in most cases.
A lot of the problem is cultural. Know a developer that eschews testing? Has disdain for version control? Contempt for process? Ridicules documentation? It's time to start treating them like the crackpots and outcasts they should be. Perhaps a few software van Goghs might be lost, but would you really want him painting your house anyway? The idea of a brilliant but inscrutible programmer is pretty much a myth anyway. If you think of the people who have been recognized for making significant contributions to the software industry are they not all fairly well spoken and articulate communicators or at least understand the value of communicating their ideas? Grace Hopper, Larry Wall, Linus Torvalds, Bill Joy, Tim Berners-Lee, etc.
Extreme Programming has been helping a lot to improve the culture of software development. I certainly hope it continues to have positive effects. Lost source code may one day be a thing of the past.