Michi Henning on Computing Fallacies
Karma Sucks writes "Check out this summary of a keynote at Linux.conf.au by Michi Henning of CORBA fame. It really hits the nail on several points. I especially liked the point about people constantly rewriting letters in these modern times, as opposed to say 1945 where it just wasn't worth the pain of re-typing a letter. The only point that didn't made sense in this summary was the one about "source code being useless"."
Fallacy 9: Programming is About Date Structures and Algorithms
I'll agree here, although I see it most in database design. With the advent of such super-fast DBs such as MySQL there has been a FLOOD of horribly written applications that utilizes them. For instance, you'll see every column defined as CHAR( 255 ), or every table prepended with AUTO_INCREMENT columns even when they are not necessary. Indexing is poor or non-existent, and tables are horribly in need of normalization.
Some finer points in design; I see some stuff like this a lot as well:
function bob( varlist ) { $var = $joe + 12345; return $var; }
You're wasting memory and such for the variable declaration and assignment, simply return $joe + 12345;.
Fallacy 12: We are Making Progress
- Progress in quality assurance has been remarkably slow
I used to work in QA for a software company and I wouldn't say that I was the worst programmer there, but I think the problem is that 90% of the QA staff WERE NOT PROGRAMMERS or didn't have access to the source. Basically, QA reports bugs, they go into the queue, and then a developer, if they have the time when compared to all their code development, meetings and such, may have a chance to get to the bug. It would be nice if the QA staff, who may have software programming skills, would be allowed to be developers as well (e.g. all the rights of a developer but QA is their main focus). They attend the same dev meetings and such which gives them the insight to the architecture to allow them to fix bugs which have been approved by management.
So in effect, have two programming teams.
Thanks,
--
Matt
"Given enough eyeballs, all bugs are shallow."
The idea is that if everybody gets to see the code, the problem will be obvious to somebody. It certainly stands a better chance of being found than if only the original coders (who might not see anything wrong -- after all, they wrote it that way in the first place) get to look under the hood.
"Given enough eyeballs, all bugs are shallow."
An absurd fallacy. Perhaps for fetchmail or hello, world! or other,
similarly sized projects, but nowhere else. Debugging require not
merely a pair of eyeballs, nor even crackerjack programming skills,
but mostly an understanding of the problems and compromises that went
into the creation of the software system in the first place.
To produce better software, we need better programmers, and better
tools, not meaningless platitudes about the business justification of
Open Source licensing.
Peace,
(jfb)
To spur "enterprise Linux," Big Bang, the distributed two-phase commit.
Complete BS.. I've yet to see any testing that manages to find 100% of the bugs.
Through my time as a sysadmin I've come accross bugs in both open and closed source software and have definatly come to appreciate being able to fix the bugs on my own.
Example: Last weeks helpdesk software installation. The software was incompatable with qmail. Fix: 5 minutes. Any guesses how long it would have taken to get the closed source equivelant fixed?
That's a really interesting summary of what looks like a talk I would have liked to have attended. Of course, a lot of the points were matters of opinion, and I disagree on some of them.
Fallacy 1 (Computing is Easy) I think is spot on. I shudder when I see some of the "For Dummies" titles out there now.
Fallacy 6 (Computers are Getting Faster), I would have to say I disagreed with him on. Sure, my desktop boots slower than my old 386 from 10 years ago. But my Handspring Visor has more memory and boots instantly. Web pages load faster with my DSL connection then they did over my modem (where could you get that 5 years ago?) Most of my compiles are shorter than they were 3 years ago. Sure, people tend to put bloat in, but Moore's law is still wining overall.
This ones really a quibble, but a subpoint of Fallacy 7 asks "How often do you need to do a Fourier transform?" I don't know if it's need per se, but I kind of like some of the music visualizations that use a whole bunch of frequency domain stuff.
One of the subpoints to Fallacy 13 (The Industry Knows where it's going) is
"There haven't been any new ideas in a decade"
My response
"There is no new thing under the sun"
--Ecclesiastes
That said, he certainly seemed to bring up a lot of food for thought. Do you think he'd be willing to do a Slashdot Interview?
I'll come here and say that, at least about one of the points: "Motivation for Open Source is inappropriate for most software." That is my main beef with open source advocacy: it will only produce good software that does things that *programmers* really want and need. Hence such things as Apache, whereas many Linux advocates see no need for a text processor more sophisticated than emacs. My main obstacle to moving entirely to Linux (other than games) is business applications, like Timeslips, Peachtree Accounting, Kleinrock's Tax Expert, and much other tax and legal software. Sure, I could find open-source alternatives *almost* as good, but that would entail reconfiguring my entire way of running my practice. Perhaps I should; but it is simply much more practical for a lawyer to use Windows and available Windows programs -- and I doubt that the open source community will produce a viable alternative soon. The bazaar does have its advantages; but it is not a replacement for the cathedral.
TANSTAAFL
I have to agree somewhat with Fallacy 10
Fallacy 10: Open Source is the Answer
- Economic model is doubtful
- Source code is useless
- Motivation for Open Source is inappropriate for most software
- Nerd culture is counter-productive
It seems like he's trying to make the point that many open source developer's motivation is in the wrong place (making technically interesting, but not useful software), but he does a pretty horrible job conveying that with these bullets.
While there are *some* (I'm not going to make up statistics) who do a pretty horrible job at making useful softwarebecause of poor motivation, there are also plenty of Open Source developers who's contributions to core technologies are VERY underappreciated because they were able to make the technology transparent.
Unfortunately, he begins to make some good points about these issues.
1. He right insofar as source code isn't everything and won't solve everything, but that hardly makes it useless.
2. Yes the economic model is pretty doubtful at this point. Some have made it worked, others haven't. Some do it for profit, others as philanthropists, and others do it to set standards that will benefit a consortium.
Personally, I think he's just beginning to hit the iceberg by pointing out these fallicies that many of us need to address, but he doesn't follow through with supporting arguments. Instead, it's as if he expects us to just "get it" because he "gets it".
Maybe we can expand on his work and fill in some of the holes.
"Communism is like having one [local] phone company " - Lenny Bruce
Care to back this up, say with some examples of projects where large numbers of people swarmed over the code and still couldn't fix the bugs?
I don't care if it's 90,000 hectares. That lake was not my doing.
It won't eliminate all bugs in software, but what it does is enable programmers to fix the bugs that are the biggest impediment to their project. An example:
The company where I work has a number of projects. One of them is a front-end, windows GUI. Another is a backend Java servlet. On the front end, we had to get our Viewer to work with a screen-reader so blind people can use it. The screen-reader is proprietary, and has bugs. We informed the maker of the screen reader of the bugs, but in the mean time had to put in all sorts of hacks to make our software avoid the bugs in the screen-reader. Also note that we informed them of the bugs almost a month ago and have not received a fix.
The Java servlet runs on Tomcat, which is open source and has bugs. Our programmer was able to fix the bugs in Tomcat that prevented our program from working, submit them to the project and have a working copy within a week.
Bite the hand.
i take issue with some of the sentiments here: ...
... it could be argued that tcp/ip was a major reason the internet could explode (the other being http, which has also undergone many revisions, but that's the beauty about a _standard_, people can start talking about _the same thing_.)
---
Fallacy 3: Computers Increase Productivity
- The sound effects in this presentation will make all the difference
- It only took five hours to format this memo
- The shading on this pie chart is simply superb - The icons on my desktop are lined up perfectly [sound of car screeching to a halt for each bullet point]
---
well, people have a certain actions to choose from, and a certain amount of resources (time, etc.) to allocate. choosing not to work further on your presentation is one type of action to take. another is to gussy it up with wierd sound effects and alpha channels. clearly, what's going on is, there more value in continuing to gussying-up than to doing something else. so yes, computers have increased productivity, in the sense that the total value what the person can do in a day has gone up, BUT, people have very strange utility functions.
---
Fallacy 5: If It's Graphical, It's Easy
- Single click, double click?
- Where is the #$%^@!! menu??
- Which part of the UI does *not* do something?
- With a GUI, anyone can be a
- System administrator
- Programmer
- Typesetter
- Accountant
- Statistician
-
---
well, thanks to modern tools, very bad system administrators and programmers can be made into moderately bad administrators and programmers. this is a _huge economic boon_, since good system administrators and programmers are rare and expensive, and will only get better as the tools improve to the point where very bad is transformed into mediocre.
my whole job is to make statistics and informatics tools for biologists (non statisticians, non computer scientists). yes it works, and it's a huge boon.
---
Fallacy 6: Computers are Getting Faster
- How long does it take for your PC to boot?
- How long does it take to
- start your word processor?
- load a web page?
- compile a program?
- how long did it take
- five years ago?
- ten years ago?
---
this relates to the presentation point above, but basically, the utility of booting faster than X is very low for most people, so computers settle upon the minimum and then stop improving that piece (just like a computer or tv or cd player or car cheaper than $Y is of little utility, so the cheapest computers/tvs/cd players/cars are always about the same price but have better technology.)
---
Fallacy 10: Open Source is the Answer
- Economic model is doubtful
- Source code is useless
- Motivation for Open Source is inappropriate for most software
- Nerd culture is counter-productive
---
but nerd culture is _motivated_, just by a different metric than money. because of that motivation, nerds will and have eventually realized that boring things like ease of use and installation make the difference between adoption and non-adoption of their favorite technology, hence gnome, kde, etc.
it's an alternative economy, but it is productive, in some ways more productive than the mainstream economy.
---
Fallacy 11: Standards all the Solution
- Usable standards are created only years after the fact
- Standards are foul compromises
---
this is total crap. i'm sorry, but it is. standards need to be designed with extensibility and the next generation of standards in mind, but please. tcp/ip? a foul compromise? usable only years after the internet exploded? no
more problems with this, but i'll stop here.
-- p
If people who sell software for money want to continue to do so they have exactly one choice: pay the people who are willing to write software for free.
The Harvard model(turning away qualified applicants because you have more applicants than slots to fill) ain't gonna cut it in the world of software. If the software industry expects to sell its wares, it damn well better hire all the qualified applicants.
Elitism will not work. Because if people have the ability and the time, but no job, they will sit around making high quality software and giving it away for free. And that poses quite a little problem if you have a similar product and want to charge for it, now doesn't it?
The current downturn in the computer industry is by far the worst I have ever seen. Ever since I can remember(back to the early 80's when PC's first arrived) the computer industry had always expanded and provided more jobs. Now its experiencing its first real downturn and you have a lot of skilled people without jobs. If those skilled people continue to produce software, but they give it away for free, that spells disaster for software companies who expect to sell their product for money.
Open source software will indeed "catch up" to its commercial equivalents. I give KDE less than five years before it is equivalent or superior in every way to Windows. Same thing with the Open Offices, the databases, the programming languages, etc. The software industry has one choice - start paying open-source programmers or die.
I'm not sure if our current economic model can deal with the situation of high quality products being given away en masse for free. I certainly don't see how the software industry can grow like it did in years past. Since the computer industry has led the economy for the last 20 years prior to the current recession, we may never see a recovery. Unless we revamp our current economic system to deal with the fact that what had previously been leading the economy into prosperity(software) is now being given away for free. Also, on a global scale we have to compete with entire economies of scale(China) that don't pay for software.
No, Thursday's out. How about never - is never good for you?
Lets run down them quick:
I have no idea what the 'Progress' is at the end. Apparently it's quite different from Progress? I guess I had to be there.
I think the designers should focus on design and let everybody else do their job.
Very very true that we need realistic growth expectations. Especially for startups. I remember an anecdote were AOL had figured a certain growth rate not factoring any sort of slowdown as they reach critical mass. They intened to account for something like 15% of the nations GNP by 2010.
I read the internet for the articles.
They may be more expensive than for other fields, but I feel it is worth reading e.g. one $60 book each month (plus magazines etc.) to expose you to new ideas and improve your insight. It's a damn sight cheaper than $1000 two ady courses that tell you nothing but marketing blurb! :-)
Of course this means every year or so I need to go to Ikea to buy a new bookshelf also...
Company I work for purchased a system in early 80's. Company was new. Who knew if it would last? This was pretty damned important software. So, the source went into an escrowed safety deposit box. They disappear or file bankruptcy, we get to open the box.
Never had to use it, never wanted to use it. But it was there, and allowed us to pick something other than IBM (way too expensive at the time. Not sure if they even offer a similar product anymore.)
Jesus was all right but his disciples were thick and ordinary. -John Lennon
Fallacy 1: Computing is Easy
Computer Science isn't easy, but overall computers have become much easier to use. Compare any modern PC with a PDP-11.
Fallacy 2: Computers Allow People to Do things They Could Not Do Otherwise
The World Wide Web, expert systems, natural language translation, mathematics, many forms of automation. All of these technologies have a long way to go, but are still useful. Cheap PC hardware lets me solve many mathematics problems without perceptible delay. It's possible to do video editing on a PC that would have required an SGI just a couple years ago. The typewriter has none of these capabilities. Computers cannot help those who are unable or unwilling to think, but intelligent people have benefited greatly.
Fallacy 3: Computers Increase Productivity
Of course they do, ever try managing a snailmail mailing list w/o mail merge? Consider all of the benefits of automation over the past 30 years. Thanks to Moore's Law, many applications no longer need to be written in C or assembly.
Fallacy 4: Programs Help Their Users
I would make the argument that many tools have gotten sufficiently powerful that programmers are no longer needed. Much of the tedium of early computer use has been automated away.
Fallacy 5: If It's Graphical, It's Easy
Please don't repeat the tired old saw about how CLIs are easy to use. A well-designed GUI is easier to use and has a shallower learning curve. Most of the flaws you are referring to are in Windows, classic MacOS was quite easy to use.
Fallacy 6: Computers are Getting Faster
Computers are getting faster and making a crack at Microsoft doesn't change this. How many current applications are now IO-bound instead of CPU-bound? How many desktop PCs have cycles to spare for RC5 or SETI@Home? Look at how many programs are written in interpreted or safe languages and compare to 10 years ago. Compilers are faster and generate better code. Even Microsoft OSes are reaching acceptable levels of stability.
Fallacy 7: Programs are Getting Better
I would argue that most desktop applications are close to feature complete. Those which aren't do improve with each release - Adobe Photoshop is an excellent example.
Fallacy 8: Programmers are Getting Better
Computer Science is still in it's infancy, but it's becoming more scientific every day. Even at the mediocre school I'm attending, writing a Unix kernel is required to graduate. I predict software engineering will become "real" in 50 to 100 years.
Fallacy 9: Programming is About Date Structures and Algorithms
What else would it be about? ADTs and object-oriented programming make complex tasks easier to deal with. Big O notation provides a means of evaluating performance of algorithms and shows you why you shouldn't use a bubble sort for a 1000 element array.
Fallacy 10: Open Source is the Answer
For some problems, it's a reasonable solution. For others, it's foolish. If an inhouse application costs development money, it may be advantageous to open source it. Source code is also useful when a program is EOLed by its developers.
Fallacy 11: Standards all the Solution
Standards may be foul compromises but they make cross platform development possible. Look at all of the different web servers, POSIX OSes, and C compilers out there and say that again with a straight face.
Fallacy 12: We are Making Progress
Yes we are. 30+ years after their invention, garbage collection, object-oriented programming, safe languages, and type checking are all generally considered good ideas. Functional programming shows a great deal of promise, and formal proofs are feasible for real world applications, e.g. Praxis' Spark95. Telelogic has an SDL to C translator that will produce C source code from a specification.
Fallacy 13: The Industry Knows Where it is Going
Does any industry? We've seen the second tech boom come and go, but overall software and hardware quality has been improving.
Life is a psychology experiment gone awry.
It seems that a lot of people are missing the point. These criticisms and suggestions seem to be directed towards the Extremely Computer Literateare and the lack of innovation in providing easy to use interfaces and significant improvements over traditional alternatives.
A word processor today vs a word processor from X years ago.......? A spreadsheet is still a spreadsheet.
I know I am going to get flamed for this and people will no doubt spout of examples of enlightened girlfriends & colleagues who were brought into the Linux fold and are quite comfortable in it.
For me to have to compile something (in Linux) to install a program is utter and complete non-sense.
I know many people who just manage to send e-mail and barely browse the web in Windows.
The Source Code is irrelevant point refers to people like them, and me for that matter I think its cool that If i really wanted to i could see how everything came together but I really don't care, and neither does Joe Blow or Mary Smith.
Linux Users & Computer guru's etc are in the extreme minority of computer users. Computers are designed by Computer people for computer people NOT for the Average human being. I think some people would be better off with Geos or some other restrictive GUI simply because all their choices are right there infront of them.
I know many people who are better off with a Windows 3.x or DOS based system. Even if it is text commands there is a clear progression from point A -> B instead of having to sort through various menu's and procedures in a GUI.
My 2 cents
Bruce
Bruce Perens.
When is the last time you thought it necessary to analyze (algorithmically) code that you are writing?
Its far more important to be very good in the programming language you have chosen and its libraries. Knowing how to write quicksort in your latest language is a dead skill - its already been done better by someone else, and added into the SDK.
Building plans are worthless to most people. Most of the time. Still better if they exist.
Two latent bugs. With the source, it's almost as good as if the bugs didn't exist. The overall effect is getting 5-nines reliability at a cost of 3-nines reliability. Also if you are facing a scissors/rock/paper scenario, any assumption you make will be wrong is some cases.
For most people, most things, most of the time, source code is useless. For most people, 5-nines reliability is useless expense.
So, basically what Michi is saying is that Computer Science isn't having the day-to-day impact that it once did. Advances in data structures and algorithms aren't impacting the development of products like it once did.
Computer Science now gets to join Chemistry, Physics, and Biology as science disciplines that can no longer handle their own engineering. Physicists don't design boilers any more, Chemists don't design refineries, and biologists don't build waste treatment plants. And computer scientists don't build operating systems well.
Enter Software Engineers and Computer Engineers, who get to learn their stuff from the CS boys, but who focus on production, on tradeoff, on integration, on management. Its the engineers that push for legislation, that make sure that you have the education and experience to practice, and build systems that we are willing to call 'infrastructure'.
What people need to clue into is that we have an industry that has hit the point where it needs to split and to recognize those that advance the theory and those that pave the roads.
I noticed you didn't touch that one. Perhaps you agree with Mr. Henning on this one point? He seemed to think great programmers have more short term memory slots. (of course, I have to guess his actual speech was much more responsible than these notes by themselves...)
Speaking as someone who has more short term memory slots than anyone (except perhaps one person) I've ever met, I'd like to point out being a good programmer takes a lot more than just that. (Yes, I write assembly at the keyboard without any visible preperation, but that's beside the point) As for a "great" programmer, I don't think I've ever met one, and if I did, I'm not sure exactly how I'd know I had.
Fire is useful. But the most useful technology ever is agriculture. Agriculture allowed humans to spend less time on basic survival and more on things which allowed them to progress and develop other technologies. We were able to stop being nomad hunter gatherers and move to living in cities, thus the birth of "civilisation".
Telephone switching was once only achievable by having humans sticking plugs into sockets. Now we have complex robots (called "telephone exchanges") that do this for us.
Someone had to know how to make an F16 fly. The computer doesn't just make it magically possible. What the computer does do is make it possible to perform all the real-time calculations that are required to get from "pilot moves joystick left" to the minute details of "adjust left aileron up 2 degrees, adjust right aieleron down 2 degrees".
Utility services such as electricity, sewage, water and gas were supplied using human-controlled pipelines and valves long before computers came onto the scene. With the advent of modern technology, we just don't need to have a gas-company employee on every street corner ready to open or close the appropriate valves.
The entire Internet could easily be implemented using humans instead of routers. Just don't expect latencies lower than three minutes, or data throughput higher than 200 characters per minute. The automation of the Internet allows much lower latencies and much higher throughput. There's nothing magical about the Internet - it's just lots of routers and switches operating in a predetermined fashion. Routers only make decisions based on a set of rules - they are not creative thinkers.
I believe that what Michi is getting at is that computers allow you to automate repetitive tasks, and make calculations much faster than is possible for a human with a pen and paper, but they don't make you more creative.
A computer cannot possibly make you know how to do stuff that you didn't know how to do. If you don't know how to write a prize-winning novel, a computer can't magically write one for you. All the computer can do is make it easier for you to store your ideas for the book, and keep track of all the different revisions of the book as you're writing it.
Computers cannot replace the creative process. They cannot make design decisions. All they can do is automate repetitive tasks, and perform calculations much quicker than you can.
All the examples you've given are samples of automation, not of creativity.