I think the crux of the problem is that computer science as a field has grown a lot since most CS departments were founded, and is less like its roots (usually math or engineering) than it used to be. This isn't because math and engineering aren't important to CS, but because there's a lot more substance in computer science as distinct from other subjects than there was decades ago.
As a result, a lot of "Computer Science" departments have an identity crisis, mainly between mathematics and (software) engineering. Some of them even realize it.
The problem is that there are lots of facets to this whole computers and software thing, and IMNSHO, you can't teach it all in one degree program---there's just too much.
The problem is that few departments/schools/universities (pick the level of the hierarchy you think is most blameworthy) have wanted to admit that they really need to give students a choice between specializing in computer science OR software engineering and not pretending that you can be an expert in both (at least with one 4-year BS). There's a lot of overlap, clearly, but there are also differences in what each specialty needs to know.
Then there's related areas farther afield from traditional CS roots, like MIS and HCI (human-computer interaction). Most traditional CS departments (or, to be fair, most any other single traditional university department) couldn't grant degrees in these even if they wanted to, because they require knowledge from areas that have historically been in different departments.
I agree with all your numbered items. However, you said these were "crap":
1) Human-computer interaction is a discipline and you should read this HCI book or that HCI book. (Alan Cooper's About Face comes to mind).
I'm surprised you said that, considering your advice sounds a lot like what this sort of book recommends.
If someone doesn't know anything about HCI and wants to make good UIs, I think it would be really helpful to do some reading. If I had to choose just one, it would definitely be Norman's Design of Everyday Things (which I saw others recommend, too).
One thing that HCI books do is not just recommend what to do, but give guidelines how to do it. For example, a good way to get early feedback on a UI is with prototypes. There are lots of different kinds of prototypes you might build, and each have pros and cons. A good book could help you decide which kind of prototype to use when.
Another example: you'd like to evaluate your UI somehow, to see what's good, what's bad, etc., right? But how? User studies are one that lots of people know about, and they have definite advantages, but they're really hard to do right, and they're really labor-entensive. The right HCI book will tell you about cheap evaluation methods, too, what the pros and cons are of the various methods, and help you decide which one(s) are right for your project.
2) Some vague advice about making look like the OS you're targetting.
I find that very hard to believe. What law allows that? The government pays for a lot of software that's used for national defense. I doubt the Department of Defense, for example, would pay for software (for example, a licence to the Unreal engine for America's Army, mentioned in another comment on this article) if they could just use it for free and spend that money on more other things.
A professor I had early on in college (Randy Pausch) summarized it this way:
Think of programming not as a way of telling the computer what to do, but as a way of telling someone else what you want the computer to do.
If you think about your real audience as another person and not just the test suite (assuming you're not still thinking of it as the compiler), I think it really helps write maintainable code.
I guess all commenters so far think everyone knows about Ghostscript and related tools, and maybe they're right, but in case you don't: Check it out. Ghostscript can render PDF (and PS) to the screen and to lots of different file formats and printer languages.
You'll probably want to get a helper app for viewing docs from the above site, too. (And there are other front-ends, like KPDF.)
In my very limited opinion it is a grey area as to whether this is infringement or not. According to this post Rowling was planning a similar book the profits of which would go to charity, so she asked Lexicon to at least do the same which they wouldn't do.
Copyright gives authors certain rights with respect to works they've already created, not ones they're just thinking about or may create in the future. If she was planning to do a similar book, that explains her motivation, but has no bearing on whether the Lexicon infringes her copyright on existing Harry Potter books.
If you want to better understand what Creationism is, you might want to take a look at Biblical Innerancy:
Biblical inerrancy is the doctrinal position [1] that in its original form, the Bible is totally without error, and free from all contradiction...
(from the article linked to above).
Personally, I think Biblican inerrancy is totally untenable since the Bible isn't even internally consistent. But, if you are a Biblical innerantist, then Creationism is an obvious consequence.
The Mythical Man Month, by Fred Brooks. A must-read for anyone doing anything related to software engineering at any level. Amazing to me how applicable it still is.
Orbiting the Giant Hairball, by Gordon MacKenzie. Offbeat and easy to read. Has some good insight about navigating corporate life.
Software Project Survival Guide, by Steve McConnell. Lots of concrete advice about techniques and tools for managing software projects. From what I've heard, there's some overlap between his books, so another one of his might be a better fit for your situation.
I learned some details about the MCSE-like certs a few years ago when my wife was studying for them. It seemed like a lot of rote memorization that would rarely actually matter. Now whenever I interview someone who has a cert like that on their resume, I ask them what they thought about the exam and cert.
We libertarians believe in things like civil rights and limitations on federal government power. If republicans have ever supported these concepts, it hasn't been during my politically aware lifetime (last 15 years or so.)
...
Republicans have certainly become corrupted since then (The current administration very much so), but they're still more likely to limit government interference in the free market than Democrats are.
You're right that Republicans are in general more hands-off economically than Democrats. But Libertarians are not just about economic non-interference, but social/civil non-interference, too. Which is why Libertarians don't all vote Republican: Democrats are generally less socially authoritarian than Republicans.
Disclaimer: The problem with sweeping generalizations is that they're all wrong.
Oh, and here I was feeling relieved that Firefox did not set free any ground to rampage across the countryside, destroying houses, pillaging, etc. (You know, as ground is wont to do.) I think Firefox's popularity might suffer if it did that.
That's an interesting article, but it's kinda light on details. It's too bad the article doesn't link to a published paper about the studies they did. If anyone knows of published papers in a refereed forum, please post links/refs.
And why should this be surprising to anyone? For some years now, Microsoft's biggest competition for new versions of their products (at least for Windows and Office) is the previous version of that product.
And, as other posters have pointed out, upgrading Windows is much more painful than upgrading an application, even an app as big and monolithic as MS Office.
But don't cry for MS just yet: there will be lots of new computers sold in the next year, and a huge fraction of those will have Vista on them.
If you really want to give a bad talk, merely using PowerPoint may not be enough. If you neglect Dave Patterson's advice, you might inadvertently give a good talk after all.
Re: PP, I agree with some other posts I've seen here that PP can be used badly or well. Most of the aweful PP talks I've seen would have been just as bad (and possibly worse) with another technology.
That said, it's not as though all tools for a given task are equivalent. I'm a lot more likely to make a long straight cut using a table saw with a guide than I am using a hand saw without a guide (and possibly even with).
In this regard, I don't think PP is nearly as bad an offender as MS Word, because Word makes it far too easy to do bad things, like ignore styles, and hard to do good things, like use styles instead of one-off formatting. (In fairness, it seems to be improving, but is still a far cry from, say, FrameMaker from 1992.)
Plagiarism today is heavily invested with morality surrounding intellectual honesty. That is laudable. But truly distinguishing plagiarism is a matter of intent. Did I mean to copy, was it accidental (a trick of memory), was it polygenesis? Young people today are simply too far ahead of anything schools might do to curb their recycling efforts. Beyond simply selling used term papers online, Web sites such as StudentofFortune.com allow students to post specific questions and pay for answers.
In case you didn't even RTFS (RTF summary), the above is a copy of the summary.
I had Speakeasy DSL for a few years and it was great. Then I moved and had no other option except Comcast cablemodem. It's been ok, but I liked having a static IP.
I were still with Speakeasy I'd keep it, but keep my eyes open for when the nigh inevitable happens.
I agree that there are cultural/societal biases about what boys and girls should be interested in (at least in the US, and I believe elsewhere, too, although I only have firsthand experience in the US).
However, my personal estimation of how much external factors (i.e., nurture, like parents, friends, siblings, etc.) affect what kids are interested in has dropped a lot since having kids myself and seeing my nephews grow. My wife and I have both been amazed at how much of their interests and personalities are built in right "out of the box".
Are there things we can do to make IT more approachable to females? Almost certainly. But even if we were completely equitable in how we treated male vs. female, I don't think we should necessarily expect 50/50 in any field, including IT.
I couldn't agree more. Knowing more layers of abstraction certainly helps in some domains, but it's not clear that knowing how your CPU's pipeline works will help you write better code in Java (or PHP, Python, or lots of other popular languages).
By the argument of the GP, programmers should know how CMOS works, and be fluent in VHDL. Heck, why not know how copper, aluminum, and silicon are mined and refined, too?
I think you're basically right on, but to me, you left something out when you said "it allowed us to use abstractions which were measurably less efficient". What's missing here is "Less efficient for what?"
The answer is obvious, less efficient in terms of the computer---its runtime, memory, disk, etc. 30 or 40 years ago, those were good, important things to optimize for, because they were really expensive. Each early computer had a team of people whose full-time jobs were to make sure none of the computer's time was wasted.
Today, for most people in the developed world (and I'll bet everyone reading this post), their computers far outnumber them (since almost anything electronic has at least one CPU in it now). Even just for traditional "computers", we think nothing of wasting huge fractions of their cycles (e.g., while they're waiting for us to type the next character or click the next link, at night when they're off or idle).
What's the precious commodity today? CPU cycles, RAM, disk? In rare cases, yes, but the vast majority of the time the most valuable thing is humans' time and attention. So it makes sense to optimize for that, both in terms of making it easier and faster to write programs, and easier to use them.
I think the crux of the problem is that computer science as a field has grown a lot since most CS departments were founded, and is less like its roots (usually math or engineering) than it used to be. This isn't because math and engineering aren't important to CS, but because there's a lot more substance in computer science as distinct from other subjects than there was decades ago.
As a result, a lot of "Computer Science" departments have an identity crisis, mainly between mathematics and (software) engineering. Some of them even realize it.
The problem is that there are lots of facets to this whole computers and software thing, and IMNSHO, you can't teach it all in one degree program---there's just too much.
The problem is that few departments/schools/universities (pick the level of the hierarchy you think is most blameworthy) have wanted to admit that they really need to give students a choice between specializing in computer science OR software engineering and not pretending that you can be an expert in both (at least with one 4-year BS). There's a lot of overlap, clearly, but there are also differences in what each specialty needs to know.
Then there's related areas farther afield from traditional CS roots, like MIS and HCI (human-computer interaction). Most traditional CS departments (or, to be fair, most any other single traditional university department) couldn't grant degrees in these even if they wanted to, because they require knowledge from areas that have historically been in different departments.
If someone doesn't know anything about HCI and wants to make good UIs, I think it would be really helpful to do some reading. If I had to choose just one, it would definitely be Norman's Design of Everyday Things (which I saw others recommend, too).
One thing that HCI books do is not just recommend what to do, but give guidelines how to do it. For example, a good way to get early feedback on a UI is with prototypes. There are lots of different kinds of prototypes you might build, and each have pros and cons. A good book could help you decide which kind of prototype to use when.
Another example: you'd like to evaluate your UI somehow, to see what's good, what's bad, etc., right? But how? User studies are one that lots of people know about, and they have definite advantages, but they're really hard to do right, and they're really labor-entensive. The right HCI book will tell you about cheap evaluation methods, too, what the pros and cons are of the various methods, and help you decide which one(s) are right for your project.
Sounds to me a lot like your #6.I find that very hard to believe. What law allows that? The government pays for a lot of software that's used for national defense. I doubt the Department of Defense, for example, would pay for software (for example, a licence to the Unreal engine for America's Army, mentioned in another comment on this article) if they could just use it for free and spend that money on more other things.
If you think about your real audience as another person and not just the test suite (assuming you're not still thinking of it as the compiler), I think it really helps write maintainable code.
You'll probably want to get a helper app for viewing docs from the above site, too. (And there are other front-ends, like KPDF.)
Good point. However, the remedies may be different for malice vs. incompetence.
Personally, I think Biblican inerrancy is totally untenable since the Bible isn't even internally consistent. But, if you are a Biblical innerantist, then Creationism is an obvious consequence.
The generation of random numbers is too important to be left to chance.
- Robert R. Coveyou
- The Mythical Man Month, by Fred Brooks. A must-read for anyone doing anything related to software engineering at any level. Amazing to me how applicable it still is.
- Orbiting the Giant Hairball, by Gordon MacKenzie. Offbeat and easy to read. Has some good insight about navigating corporate life.
- Software Project Survival Guide, by Steve McConnell. Lots of concrete advice about techniques and tools for managing software projects. From what I've heard, there's some overlap between his books, so another one of his might be a better fit for your situation.
As usual, YMMV. Void where prohibited.I learned some details about the MCSE-like certs a few years ago when my wife was studying for them. It seemed like a lot of rote memorization that would rarely actually matter. Now whenever I interview someone who has a cert like that on their resume, I ask them what they thought about the exam and cert.
Disclaimer: The problem with sweeping generalizations is that they're all wrong.
Oh, and here I was feeling relieved that Firefox did not set free any ground to rampage across the countryside, destroying houses, pillaging, etc. (You know, as ground is wont to do.) I think Firefox's popularity might suffer if it did that.
Now I'm worried again.
But, but, web-based applications are The Future(TM)!
That's an interesting article, but it's kinda light on details. It's too bad the article doesn't link to a published paper about the studies they did. If anyone knows of published papers in a refereed forum, please post links/refs.
And why should this be surprising to anyone? For some years now, Microsoft's biggest competition for new versions of their products (at least for Windows and Office) is the previous version of that product.
And, as other posters have pointed out, upgrading Windows is much more painful than upgrading an application, even an app as big and monolithic as MS Office.
But don't cry for MS just yet: there will be lots of new computers sold in the next year, and a huge fraction of those will have Vista on them.
More advice from Dave Messerschmitt.
Re: PP, I agree with some other posts I've seen here that PP can be used badly or well. Most of the aweful PP talks I've seen would have been just as bad (and possibly worse) with another technology.
That said, it's not as though all tools for a given task are equivalent. I'm a lot more likely to make a long straight cut using a table saw with a guide than I am using a hand saw without a guide (and possibly even with).
In this regard, I don't think PP is nearly as bad an offender as MS Word, because Word makes it far too easy to do bad things, like ignore styles, and hard to do good things, like use styles instead of one-off formatting. (In fairness, it seems to be improving, but is still a far cry from, say, FrameMaker from 1992.)
Plagiarism today is heavily invested with morality surrounding intellectual honesty. That is laudable. But truly distinguishing plagiarism is a matter of intent. Did I mean to copy, was it accidental (a trick of memory), was it polygenesis? Young people today are simply too far ahead of anything schools might do to curb their recycling efforts. Beyond simply selling used term papers online, Web sites such as StudentofFortune.com allow students to post specific questions and pay for answers.
In case you didn't even RTFS (RTF summary), the above is a copy of the summary.
Anybody else miss the days before Cantor and Siegel?
A coworker of mine who's quite a C/C++ jockey used it recently (this month), and said it's still very good.
I had Speakeasy DSL for a few years and it was great. Then I moved and had no other option except Comcast cablemodem. It's been ok, but I liked having a static IP.
I were still with Speakeasy I'd keep it, but keep my eyes open for when the nigh inevitable happens.
In case anyone is unaware of the relevant RFC: RFC 3514 - The Security Flag in the IPv4 Header
I agree that there are cultural/societal biases about what boys and girls should be interested in (at least in the US, and I believe elsewhere, too, although I only have firsthand experience in the US).
However, my personal estimation of how much external factors (i.e., nurture, like parents, friends, siblings, etc.) affect what kids are interested in has dropped a lot since having kids myself and seeing my nephews grow. My wife and I have both been amazed at how much of their interests and personalities are built in right "out of the box".
Are there things we can do to make IT more approachable to females? Almost certainly. But even if we were completely equitable in how we treated male vs. female, I don't think we should necessarily expect 50/50 in any field, including IT.
No mod points today, so I'll comment, instead.
I couldn't agree more. Knowing more layers of abstraction certainly helps in some domains, but it's not clear that knowing how your CPU's pipeline works will help you write better code in Java (or PHP, Python, or lots of other popular languages).
By the argument of the GP, programmers should know how CMOS works, and be fluent in VHDL. Heck, why not know how copper, aluminum, and silicon are mined and refined, too?
The answer is obvious, less efficient in terms of the computer---its runtime, memory, disk, etc. 30 or 40 years ago, those were good, important things to optimize for, because they were really expensive. Each early computer had a team of people whose full-time jobs were to make sure none of the computer's time was wasted.
Today, for most people in the developed world (and I'll bet everyone reading this post), their computers far outnumber them (since almost anything electronic has at least one CPU in it now). Even just for traditional "computers", we think nothing of wasting huge fractions of their cycles (e.g., while they're waiting for us to type the next character or click the next link, at night when they're off or idle).
What's the precious commodity today? CPU cycles, RAM, disk? In rare cases, yes, but the vast majority of the time the most valuable thing is humans' time and attention. So it makes sense to optimize for that, both in terms of making it easier and faster to write programs, and easier to use them.