JRandomProgrammer: Hey, folks, Perl rocks! So does Linux! I love open source! Today I hacked a little on OpenGnuXyzzy!
JRandomProgrammer: Hey, folks, Perl rocks! So does Linux! I love open source! Today I hacked a little on OpenGnuXyzzy!
I'd like to contemplate for a few minutes on-line communities such as Slashdot, Kuro5hin, MeatBall, Wiki, and yes, even our beloved Advogato. Nearly everyone, at one time or another, has complained about the quality of participation in those communities of which they have been a part. The common theme is that "it ain't what it used to be." I've stated before my opinion that communities must grow and change -- often dramatically -- as the normal process of their life. This includes the idea that a community may change so drastically that I might no longer wish to participate in it.
Let's step back from the complaining and consider for a moment what most of us who are tempted to become snobbish seek in a community. I would like to propose two arbitrary stereotypes (gasp!) which I think nevertheless well convey the point I am trying to make: the difference between computer scientists and computer programmers. The difference I am trying to underscore is their basis for practicing their art: whether they value computer science, or merely value tinkering. Apologies in advance to all who fit my category "computer programmer;" I am not trying to use this in a pejorative fashion. I could just as easily have denoted this category as "blargs," but chose "computer programmer" since I felt it gave a better depiction of the class I am trying to represent. Like all stereotypes, I expect this to break down in a significant number of cases.
I think one significant impact of the Internet has been to reduce the size of the average communications quantum. For example, while my wife and I were dating, our e-mails tended to be significantly shorter than our letters. (Moreover, much more thought went into our letters than into our e-mails.) Books and newspapers have yielded some of their previous importance to various forms of digitally-based media delivery -- all of which emphasize smaller elements of information.
Perhaps one result of this has been a shift in our conscious awareness and practice of information integration. I found my attention wandering the other day while reading a particularly long but compelling Wiki page. I rarely before had this trouble when reading a compelling book. I think that we are slowly becoming conditioned to smaller pieces of information, and giving less conscious thought to the effort (for it is an effort!) of integrating information within our minds. This is similar to Wiki's integration and linking of information, only it is integrating it within our own minds. Wiki's integration is a double-edged sword; while it helps us to discover new information, it also encourages a mental laziness (a tenuous hypothesis; willing to be proven wrong).
With this "quickie" attitude has grown a lack of appreciation for many aspects of larger communications quanta such as books. Appreciation for things like symbolism is dying off (and I don't mean simple symbolism such as "X-men is a metaphor for marginalization," but deeper symbolism). Appreciation for good grammatical style is diminishing, as well. By comparison to a badly written book, a poorly written paragraph is quite palatable. Moreover, the effort of creating a structure: thematic threads weaving throughout a work, is losing appreciation.
I would submit that this is a societal example of similar trend amongst those who work with computers: a receding appreciation for the "erudite" corners of computer science. Not even merely computer science, but fields which have typically been closely tied to computer science and its practitioners: linguistics, philosophy, sociology, neuroscience, mathematics, and more. I am not claiming that the sky is falling; computer science is certainly alive and well. However, we have raised a breed of programmers who have little appreciation for the science on which their craft is built.
This is a good thing in some regards: it is wonderful to see computers adopted and used to the extent that one need not be a computer scientist to make use of them. I dream of the day when programming a computer is as easy as "programming" your CD player. However, this brings with it the result that the latest release of OpenGNUFreeSomethingOrOther is viewed as more "cool" than something incredible such as Gödel's incompleteness theorem, or even something as simple as converting between recursive and iterative code. I think what we are experiencing are the results of this shift. It cannot, of course, be undone; nor should it. But we should take some action to help: namely, become computer science advocates. We belong to something even more nifty and much broader in scope than the open-source movement -- it is a wonderful craft that is as old as eastern monks moving rings amongst three pegs. Inspire excitement and wonder in others! Encourage, rather than prod, our favorite communities in this direction.
And, in the end, when computer science has once again been deluged by all else, we shall pick up our bags and move on. Such is the natural course of community. (Some of that "all else" might actually be of interest and use to us. Often interesting and valuable discussions arise on topics not even directly related to computers. I am not trying to cast computer programming topics as lesser than computer science topics. However, as a rule, I prefer the latter.)
PS: I am not suggesting that Advogato should change its scope to that of "computer science advocate." Rather, this is a discussion on the state of on-line computer science communities in general.
PPS: As an exercise, I propose that no reply to this article take less than 30 minutes to compose, nor be shorter than four paragraphs, nor require fewer than 20 previews before posting. This is in a somewhat humorous vein, but it serves to underscore how little we tend to value disciplined thought today.
Conventially, computer science means algorithms (see the interesting discussion about n-time and exp-time difficulty problems in the diaries recently)
For me (and I suspect a lot of other programmers) these discussions are interesting, but somewhat irrelevent to our day-to-day programming. Does that make me just a "Computer Programmer"? My interests lie in writing reliable large scale systems. Perhaps that makes me more an engineer vs a scienctist, but I suspect most people on Wiki would fall into that category, too.
Infact, most open-source programmers (apart from the encryption- geeks, maybe) would be more involved in that (software engineering) area, too.
I guess people like raph, with his imaging software and algorithms are a fair match for the computer scientist, though.
I'm not sure what this has to do with decreasing attention spans and elitism, though.
2 previews, 10 minutes writing time ;-)
lets define the terms a bit clearer:
a computer scientist is someone who values computer science?
i don't think so. i do value computer science, as for the results that i can make use of. however i refuse to be called a computer scientist just because of that.
i did try to study computer science, but i stopped very soon, because i realized, that it is not what i want to be.
what is computer science?
it is the science of building devices that can perform complex mathematical operations.
however most people do not want to build those devices, they want to use them. therefore the number of computer scientists will remain very small, and most people who attempt to study computer science are wasting their time. it may be interresting what they learn, but most of it will not be used by them.
computer programmers are the ones making use of computer science, they
all must value it, they don't just tinker with it.
you therefore go way to far by denouncing programmers as blargs.
a destinction that makes more sense would be between programmers and users.
e-mails tended to be significantly shorter than our lettersbut how many more emails compared to letters did you write?
humanity while writting letters is a relatively new thing, any medium
that prefers a conversing style of exchanging information will always be
this is a quantitative difference, not a qualitative one.
I found my attention wandering the other day while reading a particularly long but compelling Wiki page.did you take into account the concentration it takes to stare at a computer for a long time? and the possible distractions that you don't have when reading a book? reading on a computer is more like reading a magazine. i don't think we are changing so much, it's just the media that forces a change. it does not (at least for me) change the appreciation for books
ps: hmm, half a dozend previews i guess, maybe 30 minutes writing time, but definetly more than four paragraphs :-)
Similarly, if you want others to know more about computer science, you teach them.
After all, a MeatBall:CommunitySolution requires community involvement.
I will preface my reply with the assumption that I am one of those who contributes diary entries that may have lead to the complaints mentioned in the following statement: Nearly everyone, at one time or another, has complained about the quality of participation in those communities of which they have been a part. However, I also trust all members of the community to be adult enough that if they find my writings useless, they will simply ignore me from that point.
A Social Creature
The Value of Social Creatures
I am a social creature. As such, my contributions to the Advogato community contain a lot more semi-personal information than purely technical information. I had expected this of myself and was hanging around as an observer until someone gave me a good enough reason for being listed as an Apprentice. At this point, I consider my technical input to be hovering around zero, so why should I be tolerated?
Social creatures, by their nature, know many other creatures of social, technical and literary natures who may be useful to the Advogato community but who would not hear about it but for their friends.
Young and social creatures, like those who say "perl rocks", are exactly the sort of youngsters who may turn into hot programmers of the future. They haven't cured cancer yet but if given a chance and a forum of peers to live up to, they're probably going to make something good happen. There is a natural attrition rate of youngsters who lose interest and take their ugly slang elsewhere. I am willing to put up with their comments while they discover their potential.
What is the Aim of This Forum?
If the aim of this forum is to provide a fertile ground for quick young minds to grow in, then acceptance of social and immature posts is important. Although such posts lower the signal-to-noise ratio, they do give an opportunity for a genius-in-training to find a sense of community and a "place" to post ideas, code, fixes, workarounds and potential bugs, whether for their own code or for others.
There is also a place for a Wizards community where the comfort-levels of uber-geeks need not be compromised by the number of Apprentices posting information that appears irrelevant or easily-fixed.
If a complaint is to be made regarding the content of the forum or community, then I believe that a clear statement of the aim of the forum must be made.
Where Do We Go From Here?
If Advogato is to be a wizards-only community, then I suggest that the abolishment of posting ability for the Journeyer and Apprentice classes would achieve that end.
However, I strongly expect that most people on Advogato consider Journeyers and Apprentices to be useful to keep around. This leaves us with the same situation that we started with:
I suspect that I am reiterating the concepts originally posted on this topic. However, this is probably better than a one-liner ("me too!") and it gives me an excuse to think I may have contributed something interesting to the Advogato community. My Reply Statistics are 50 minutes, 9 previews (my standard is 4), over four paragraphs. I'm left wondering if I could have done something more productive with the last hour.
I agree with many of the points of this essay: that quality is worthwhile, that it often (almost always) requires extra effort and skill, and that it's often hard to justify that effort when "good enough" suffices.
To illustrate this point, I'll examine a personal failure of mine: the Rcss project. You are supposed to be able to learn more from failures than sucesses, right? Let's see...
Rcss began when I was implementing SVG within the Gill project. SVG incorporates CSS by reference, so it became clear to me that Gill would need a good CSS implementation to be complete. I spent some time reading the CSS2 spec carefully, and realized that the selectors were extended nondeterministic automata, and that with careful design you could use an nfa->dfa construction to evaluate these rules extremely efficiently.
Those who have studied computer science will be nodding their heads sagely. Those who haven't will wonder whether I'm spewing gobbledygook. In either case, I wrote a promising prototype. At that point, it was a fun, exciting project. The prospect of using my computer science skills to make a higher quality implementation of CSS was encouraging.
Two things happened that made the project a lot less fun. First, the CSS3 proposed spec came out, with hideous new features such as the P"fnord" selector, which would not only match <p>fnord</p>, but also things like <p><b>f</b>nord</p>. Needless to say, these extensions completely break the careful design.
The other experience was talking with the GtkHtml people about maybe using Rcss for the next generation. I wasn't really interested in doing a full CSS implementation for HTML (remember, I started by trying to render SVG), so a collaboration was in order. However, it became clear that the people didn't understand the subtleties of my careful design and I had doubts about whether they'd be able to maintain it.
I say this not to bash the GtkHtml team (which are really nice people and good coders), but to point out a reality: dependence on specialized knowledge is a strong anti-survival trait for code in the free software environment. Realizing this is part of the "worse is better" philosophy.
I stopped working on Rcss when it became no longer fun. Meanwhile, GtkHtml has an incomplete CSS implementation started from scratch. Last I checked, Mozilla had a slow and buggy implementation, because they use a greedy matching algorithm rather than a nondeterministic one. Do these bugs matter? Probably not. Any Web page that uses more than baby CSS is likely to get butchered by the current crop of browsers, so careful attention to following the spec precisely is basically casting pearls before swine.
I'm not sure what the moral of this story is. If the computer science knowledge of finite automata were more widespread, maybe we'd have fast and precise CSS implementations, rather than the slow and buggy ones we have now. On the other hand, I believe the fault lies directly in the lap of the CSS designers for creating a standard with this much needless complexity. So perhaps the moral is: computer science is a wonderful tool where it is appropriate, but should also be carefully avoided when it is not.
Perhaps the distinction is not between computer scientists and computer programmers, but between the `A' Ark and the `C' Ark? :-)
Fred Brooks (of Mythical Man Month fame) gave a controversial keynote speech when accepting the ACM Allen Newell Award in 1994. Anyone interested in what computer science is should read this. He argues that "computer science" is the wrong term. We are toolsmiths; we make tools for engineers to use in building hardware and software systems.
Looking back, I've fallen into that trap quite a few times. Last time I reviewed a computer science paper for a journal, it was on a program analysis technique in logic programming. I gave it a weak acceptance, noting in my comments that the technique was unmotivated. Why should I choose it over existing techniques? Is it more efficient? Does it prove more things? In computer "science", we think nothing of that, but "hard" scientists would have accepted it with open arms, because discovery of new facts is a worthy thing in itself. I feel retrospectively ashamed.
My point in bringing this up is that most "computer scientists" are really not so far from "hackers" as we might like to think. Computer scientists, on the whole, don't value discovery of laws and techniques by themselves. Most of them have some practical goal in mind. Computer scientists who claim to be working in abstract algebra are often actually working on new ways for encoding data on hard disk platters or breaking ciphers. Computer scientists who claim to be working in lattice theory are often actually working on compiler optimisations. Computer scientists are making tools for hackers, and in a real sense are hackers themselves.
So why is the open source community seemingly ignorant of computer science? Others have given good points from inside the community, however, I think computer scientists partly have themselves to blame. My supervisor always said that if the source isn't available, it isn't a scientific result. He was right: scientific experiments works on reproducibility, and reproducibility in computer science experiments includes peer review of the source code to ensure that your results are due to what you said they were. Far too many computer scientists, under economic pressure, don't release their source for the academic community and we all suffer as a result. As an example, I saw a paper at a conference once which was on solving the priority inversion problem in Windows NT. It was a solid paper, but the result was not science, because it was impossible to peer-review.
And one final comment on what cla said:
If Advogato is to be a wizards-only community, then I suggest that the abolishment of posting ability for the Journeyer and Apprentice classes would achieve that end.
There is a slight semantic shift here. A "Master" on Advogato is someone who is a master contributor to the open source community, not a master of their computer-related geeky field (whether hardware, software, theory or whatever). There are plenty of Observers, Apprentices and Journeyers who are Wizards in the true sense.
I think one significant impact of the Internet has been to reduce the size of the average communications quantum.(eskimoses)
I don't at all intend to reply to the full article; but just to say that the reason for the "reduction in the size of the average communcations quantum" is simply because the interface is not as comfortable or personable as conventional analogues.
For example, writing a letter by pen is a very comfortable thing - the texture and color of the paper, the scratch of the pen. Seeing the lines you draw echo your sentiments. Curling up and using your body language as you write. None of these things are possible locked upright in good typing posture. ASCII text simply isn't up to the task, and so we get by with the bare minimum.
Similarly, content providers who write in short paragraphs and quick soundbites are mostly reacting to the slow and uncomfortable nature of reading on current computer setups. The resolution is crap compared to a book or newspaper. You can have no special body posture according to your mood relating to what you read, again because you are stuck in a chair looking up at a monitor.
Thankfully, the latest predictions are that desktops will become dinosaurs, and we will again curl up in bed and write our loved ones mail by warm comforting candlelight before spellchecking and sending it away on wireless networks from our PDAs or ubiquitous systems.
Here's a cheer to that future!
<dl> <dt>Dacta says: <dd> [on time complexity] For me (and I suspect a lot of other programmers) these discussions are interesting, but somewhat irrelevent to our day-to-day programming. Does that make me just a "Computer Programmer"? My interests lie in writing reliable large scale systems. Perhaps that makes me more an engineer vs a scienctist, but I suspect most people on Wiki would fall into that category, too. </dl>
Ah... Dacta, I see a logic fallacy. Time (and space) complexity is of utter importance when writing reliable, large scale systems. Choosing good data representation and good algorithms avoids ending up with (say) using bubblesort to order data. Works *very* well for small systems (say 10-30 data to sort), but when you reach 10000 data, it slows down to become unusable.
For space complexity (not as interesting, but still something to think about, since time and space (memory) are somewhat tradeable), there are similar issues to think of. I can only tell you a mistake I once made. I mean, everyone knows that calculating something twice is silly, especially when the calculation takes much time. And when you're generating mandelbrots, it takes a while to do your 1024 iterations, compared to a table lookup. So, I built myself a hash table, to store coordinate->iterations pairs and it ended up slower.
Why? Well, the main reason is that I ended allocating lots of memory (two doubles per ccordinate, wrapped in a complex and one int for the iteration value, plus whatever was needed for the hash entries) and all this made the poor program swap heavily.
Here, I had planned on having a witty summary, but I think I'll have to settle for "know your algorithms and your data representation, for otherwise your project will fail". Note that this doesn't mean each and every programmer is expected to have their nose in the algorithm design trade press (is there such a thing? and, if so, where can I find it?), but that a rough outline of space/time complexity for your algorithms should be known.
Time: 17 minutes (from start of writing to final submit)
eMBee, you are right in pointing out my shallow definition of computer science, and in underscoring the fact that many others appreciate computers from more of an engineering point of view than my preferred computer science approach. I forgot (for a moment) how pervasive the software engineering practitioners of our craft are. The beauty and elegance they produce has somewhat less to do with mathematical notions and more to do with the overall design and structure of a project (which, sometimes, is more practical than elegant, yet that is good).
cla, I like your correcting points about people being social creatures. I think especially for us geeks it is important to have this sort of communication, even if only on-line. I appreciate this aspect of Advogato -- I feel that I am slowly getting to know some of the participants, even though I have never carried on conversations (e-mail or otherwise) with most people here. I agree with you in that Advogato is -- and should be -- a training ground for future masters. I still think that the more sage elements of our community should work hard to promulgate some of the deeper beauties of our craft. I appreciate the hour you spent hashing out your thoughts!
ingvar, I'd like to echo your point as to the importance of computer science in any context. Both computer science and software engineering have much to offer in any mid-scale to large-scale project. Few understand this, however, since few appreciate the depths of technique that computer science has to offer (cf. raph's reply).
This brings me back to my original point: we must encourage and educate those in our community to appreciate and understand computer science and engineering. One need not become an expert in either field, but aware enough to know basic techniques. If any open-source developer sees the need for computer science techniques to improve the efficiency of their code, then they should know they can come here for help! If developers are having difficulty designing and managing large-scale projects (or, better yet, anticipate this before beginning a project!), they should know they can come here for help in engineering their design. Again, Advogato should not necessarily become a "wizard club," but nevertheless a place where wizards and apprentices can come together and benefit from each other.
Time spent editing: 45 minutes, less the time spent sending off my compile jobs; previews: 7; paragraphs: 4; participating in Advogato: priceless.
Much as I like the term, I have to agree with some of the other postings here about Computer Science being a bit of a misnomer. Except for some of the more theoretical research (which is more mathematics than science), a lot of Computer Science is really engineering. Science usually only enters into the mix where there is some collaboration with other scientific disciplines like Cognitive Science or Physics.
I'm not advocating that we discard the term, but I feel that the engineering background governs our work more than science. Thus, we can reject papers that discover new methods, if they are deemed inefficient or useless. Of course, this can stunt growth of novel areas, but it's how we work. We want to optimize.
This topic reminds me somewhat of the perennial thread about whether a university education in Computer Science is necessary for a career in the field. While I feel you can succeed without a degree in the field (I've known some great programmers with degrees Physics and Political Science), it always troubles me to read about people who feel that a degree is pointless or even a hindrance in the field. I myself have a combined BA/MEng degree, and I feel that it gives me perspective to tackle all sorts of simple and complex problems. Without proper teaching, my software design would probably suck. Research for a new project here at work (no, I can't say what it is. Sorry.) has involved studies in the following fields: linear algebra, neural nets, support vector machines, statistics, automatic summarization, etc. Without a theoretical background I would be lost, no matter how many years of C++ experience I had.
I am concerned if people work on the application without the theory. While you can get something that works, without an understanding of the underlying theory or limits, you will run into future pitfalls. The recent discussion of computational complexity came about, because mattbradshaw was working on a project involving encryption and he wanted to know why encryption was thought to be secure, but there were no proofs that it was secure. He could've done his work without such knowledge, but it gives him more information about the area and more resources on computer security. I'm not doing any work in the field, but it was most illuminating to learn more about (my textbooks stopped below EXPTIME). We work well with black boxes in computer science. But I feel that we need to peer into the black box sometimes before we plug it blindly into our code.
These are just some thoughts I've had recently that seemed vaguely on topic here. Of course, I'm not going to preview it at all and violate a few of the other precepts as well (like being on-topic and concise). ;)
Computer Science is an area of research in discrete mathematics. The end result is theories, hypothesises, and articles in refereed journals. Same as any research area. Computer Programming is about producing working programs. Both can be done well or badly. I am a Software Engineer, one of the many flavors of Computer Programmer. I read, research, study, and use the theoretical results of the Computer Scientists when useful. I have to understand this stuff to evaluate it. I may not have the skills or interest to find these results on my own. I do check out their derivations. There is as much crap in academia as in industry. There are plenty of incompetent, ignorant people in both camps. The only advantage the academics have is that there aren't many self-educated professors. Too many self-educated programmers re-invent things that are covered in any lower division CS/SE education and think they have some great trade secret they should be outrageously rewarded for. I have seen some real garbage code produced by academics (typical: if less than 1/2 do this, if greater do that. What about equal to 1/2? They get random garbage values.) The real problem is petty managers that just count referred articles, lines of code, etc. Then professors and programmers can knuckle under and crank out the crap or not crawl up the promotion ladder and produce simple, elegant, beautiful results. This requires time, intellectual honesty, talent, and practice.
Personally, I am pursuing the latter.
All my systems involve database interaction, so the "build a list and sort it" is kind of irrelevent to me. I use a pre-written solution: a SQL sort statement on an indexed column. True, this may be slightly slower than a highly specialised and optimised sorting algorithm, but (a) it is more maintanable by other programmers (see raph's post in this article), and (b) it allows me to use the thought and careful design (hopefully) that has gone into the coding of the DBMS.
Even if that wasn't the case, and I needed to use a list and sort it, would I care exactly what algorithm I used? Yes, but I wouldn't go and do Computer Science (again) to choose. I'd read the documentation of the list classes and sort algorithms that my developement environment had available. One would say (hopefully): "This works for quick sorting of small sets", while another would say "This is slower that algoritm a, but uses less memory and as the size of the set increases it approaches the performance of a". I'd weigh up the options, and choose.
Would I ever write my own list class and sorting algorithm? Probably not. I know I can find/buy better ones than I can write (without hours of research). I believe in code reuse whenever possible, and I can't see any reason that this isn't the ideal case.
Does this make me a computer scientist or a hacker or an engineer? I don't know. I'm leaning toward an engineer, I think.
I worked for a company that successfully understood and deployed ISO 9001 (Software TickIT) Quality Standards. As a result, I really, really like QA standards in Software Engineering projects. I have talked to other people who have had disastrous experiences with Soft. Eng. QA standards.
So, based on my experience, I naively sent a message round my next company, which happened to be U.S.-based. The message went something like this,
"Do we have any Software Engineers who have worked with QA standards before?"
I got three responses, out of three hundred staff. I was informed much later by some colleagues that my message had in fact been laughed at, on the basis that, "What's this stupid idiot talking about? Of course we're Software Engineers! how dare he imply that we are not!".
That is a matter of opinion, however, my assessement of their procedures leads me to believe that there were in fact very few Software Engineers in the company - Software Engineers follow Software Engineering practices, and there were more ad-hoc programming practices than Software Engineering ones.
Beware The Different Meanings Of Phrases In Different Countries!
That's when the CS enters. Just like physics in normal engineering. Not (perhaps) something you do every day, but something you need to know.
I didn't mean to sound as if "You have to do everything from the ground up, everytime", but "You have to have a sound knowledge of what makes building from the ground up possible" and (hopefully) have made something similar in a lab environment at one time.
As for what I usually do, I need to do graph searches, graph optimising, loop-finding and similar and it's so much faster doing that "in memory" than using an external database. The database (not that I use one, but...) would, however, end up as persistant storage, since it's a bit of a bother writing that from scratch.
[preamble: I read books at a rate of about 150 pages an hour, often for eight hours at a time. i have run out of my favourite science fiction authors [William Gibson, Neal Stephenson, Peter F. Hamilton, Bruce Sterling] and fantasy authors [Tom Holt, Terry Pratchett] and am scraping the barrel and broadening my horizons as a result [Stephen Donaldson, Janny Wurtz]. i do not watch television, only videos. i do not listen to the radio, only cds. i do not read newspapers].
i have heard that the "average" attention-span for television watchers is two and a half seconds. based on this statistic, guess what t.v. producers do? they change scene within at least two and a half seconds.
i have heard that after twenty minutes of television watching, the watcher undergoes physiologial reactions symptomatic of stress, anger and fear [as a result, an acquaintance only allows their child a maximum of 30 mins of TV per day]. [digression: personally, i find adverts to be UTTERLY irritating, finding myself giving them the finger and uttering obscenities at the screen - no i am NOT kidding. perhaps i am more sensitive than other people to these things].
i have read Piers Anthony's "Incarnation" Series. Piers Anthony, in the back of his books, writes notes describing what happens during the writing of his stories. At the fifth book [Mars] in the series of seven, his notes describe that he replaced his antiquated style of hand-writing novels and then typing them up on a manual typewriter with a wordprocessor. I noticed a significant degradation in the quality of books five, six and seven, compared to the first four.
My guess is that the rate of ideas that occurred to Mr Piers Antony remained a constant, whilst the means to write words increased. As a result, the quality of his books suffered.
To draw conclusions from these points:
I sometimes write personal emails at the rate of 5, yes five, words per minute. i will sit in front of the screen planning what sentence to write next for approximately ten minutes.
there are always diamonds in the rough.
say what you mean, and mean what you say.
and other such trite nonsense.
The practice software engineering varies from shop to shop. The
spectrum would vary from fully compliant to non-compliant. With the
years of experience I had working for a variety of shops (I'm in the
consulting field, BTW) I came up with my own view of it. It looks like,
that if I would graph the frequency, the resulting graph would look
like a bell shape curve, heavily skewed to the non-compliant side. That
is explainable, the reason for that curve is attributable to the nature
of these shops. It would also point out that most shops are mostly on
the first level where there are lots of superstar personality
dominating, causing the software engineering standards to become
relaxed. At this level, developers are the ones who call the shots. And
QA people tend to be squeezed real bad when it comes to scheduling.
With that, I have tested that this equation holds true for most cases and that is QA efficiency is directly proportional to product quality and programming expertise contributes only 40% of the total quality of the product.
You probably are getting the idea that what I just stated was bad. No it's not bad, it's still software engineering except it's only at the first stage. I will leave the discussion about the higher levels since I'm trying to get this reported defect fixed. BTW, thank you eskimoses for the topic.
15 minutes to write, 2 previews.
urr.... what in seven different ways is my post to one of the _other_ articles doing in here???? urr... i will ask someone/raph if the reply can be moved...
urr.... what in seven different ways is my post to one of the _other_ articles doing in here???? urr... i will ask someone/raph if the reply can be moved... ah, no: that's not necessary, it _is_ the right article. hey, everybody, i'm here to make a complete fool of myself. no outside intervention required - please just either ignore me or laugh outright :) apologies.
I feel differently about the relationship between computer science and programming than most people in this discussion, so I thought I'd post my thoughts on the matter. Computer science does not have a topic (the study of algorithms and data structures) so much as a purpose (to represent and solve problems that people encounter writing programs to perform tasks, and to classify these tasks). The main division that I see between "engineering" and "science" is not whether it's "theoretical" or not, but what the aim is. Is your aim to build a particular instance of something, that you have created a specification for? That's engineering. Is your aim to discover what limitations, if any, exist around such a system being built? That's science.
While there are still many interesting algorithm and data structures problems left, I don't see them as the more interesting problems in computer science. There are lots of other problems about robustness, security, and communication that people talk about, and the sets of problems change regularly, almost faddishly, as they do elsewhere.
We see discussions about engineering everywhere on the net today: Does this product do this for me? Does this software solve my problems better than that other software? I'm working on software that will connect these two other pieces of software, etc.
Scientists have discussions about abstract principles, where they are posited or refuted through a particular set of evidence. This process is slower, and because there is a strict set of approval guidelines for entry into the discussion, (eg the review of an editorial board for a periodical, or a thesis committee), this doesn't happen at internet speed.
For engineers, there are really two questions here. The first is "What is to be gained for society from the progress of computer science?" and the second is "What is to be gained for me from knowing computer science?" The first question is really about what we hope to do later, based on what computer science has already brought. There is no conclusive answer to this question, but how much our society supports and encourages science is an important clue.
As to the second, the benefits of knowing "computer science" for engineers are really about making it easier to learn and invent new things, as opposed to exercising one's current skills. Anyone who wants to be able to do this, will sooner or later need to understand some measure of computer science.
But as to whether you consider yourself _primarily_ a "scientist" or a "programmer", I think this relates back to my earlier point: Are you most interested in getting something done to work for you and others? That's being a programmer. Are you most concerned with understanding how a whole class of systems work, and breaking them up to understand that for use in the future? That's being a scientist.
If being part of "snobbish" community is discussing science, I don't think the smaller "quanta" of information is the problem, but the fact that the ability to "post" at all is a privilege and an honor rather than a right in most scientific communities. It is about being heavily moderated to the point of being slow. It's about being reviewed by an organized committee and having process spew out your ears for just 1 or 2 posts. Are people willing to expend the time to write posts that good? And are other people willing to expend the right to throw out all of the other ones? I'd consider it if it really meant the ability to read useful information.
academia is weird. there are established mechanisms for the exchange, acceptance and categorisation [evaluation of their usefulness] that, funnily enough, have parallel's in mod_virgule's aims.
the purpose of these mechanisms is to ensure that the academics don't waste inordinately stupid amounts of time finding out what has already been done, and where the new frontiers are, particularly as phd's have to be ground-breaking and bring something new to light. a wholely negative perception of the application of these mechanisms is as elitist practices, and arrogant and snobbish attitudes to people who are "beneath" the attention of the academics [substitute, in the context of this article, computer scientists for academics].
again, there are parallels for these attitudes towards the use of mod_virgule...
my silly $AUD 0.02-worth. again.
New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!