Devil's advocate time.
"The hardware side of computers keeps on getting better and cheaper at an exponential rate," writes Lanier. "[But] this breathtaking vista must be contrasted with the Great Shame of computer science, which is that we don't seem to be able to write software much better as computers get much faster."
Behind this statement is the observation made 30 years back by Jerry Weinberg that when you peel back the onion on most technical problems in software, you'll quickly get to a people problem. If you think the people side has improved over the past 30 years, read Weinberg's "The Psychology of Computer Programming," written in 1971. Or better, pick up the Silver Anniversary Edition (1998), which adds some commentary on how well the original has held up. The problems in software that Weinberg talked about 30 years ago are ones you still see today.
Sure, we're seeing multiplier effects based on software tools getting better, but having been in this business for long enough to have lived through long-range trends, I don't see that we're much better at simple things like communicating with each other than we were 30 years ago. We have better tools, and improved methodologies, but the classes of problems I see in development today differ from those I saw 20 years ago only in detail. We have interfaces based on objects and UML to describe them, but we still get "oops, didn't I tell that that we changed the design?" or "yeah, it's more complicated to do this this way, but I'm getting to use this cool new algorithm/pattern" on a regular basis. People or groups don't get along, and their disagreements spill out into the product. Introverted developers still let themselves get run over by Extroverted Marketing managers in schedule negotiations, and products still suffer because time for QA got squeezed out at the end of a death march. In the meantime, I have a Palm V in my pocket, more computing power in my study than most colleges had 30 years ago, and am burning CDs for backup instead of waiting in line to put a magtape onto a tape drive.
Software development is a human activity, and we're not any better at being humans than we were when we were feeding carddecks into room-sized mainframes.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.
| & || & |
| < || < |
| > || > |
| [ || [ |
| ] || ] ||