I can't believe no one's mentioned:<p><pre><code> Computer science is no more about computers than astronomy is about telescopes.
-- Edsger Dijkstra
</code></pre>
Contrary to the beliefs or desires of some, colleges and universities are not vocational training institutions. In the actuarial world, there is a rigorous credentialing process involving a series of exams usually taking a minimum of 4.5 years to complete. However, even with all of the exams passed, without experience you'd be put into an entry-level position. If your experience is in one field of insurance and you want to get into another, that experience won't count for much in the new field and you'll probably be starting near entry-level again.<p>That's for good reason. Academia is for teaching you known facts and theories, and how to think for yourself. Experience in an industry teaches you how to do a particular type of work so that other people are willing to give you money in exchange for your labor. These are inherently different activities, though the former can weed out some inappropriate candidates for the latter.
What he says sounds good in the abstract, but I worry about how it will be implemented. For instance he raises the issue of licensing people to practice computer science. However as he acknowledges that it is difficult to even identify who should be in charge of deciding what should be <i>tested</i> for such a license.<p>And that is a big issue. A license created to meet the needs of business 40 years ago would certainly have required learning COBOL. A license created 20 years ago would have no relevance to web development. One created today would likely be geared towards the needs of large organizations with large code bases - which would put most agile development techniques, languages, and practices off the table.<p>For better or worse the programming world has diverse communities with rapidly changing, diverse needs, and no possible solution has any hope of fitting all of them.
The only problem that he actually mentions is:<p><i>Also, many students fail to connect what they learn in one class to what they learn in another. Thus, we often see students with high grades in algorithms, data structures, and software engineering who nevertheless hack solutions in an operating systems class with total disregard for data structures, algorithms, and the structure of the software.</i><p>That is to say pass fail grading of programs, grading should be similar to an English class how you express it is just as important as what you express.
I find it interesting the he suggests <i>requiring</i> a minor in another field. I largely agree with this, but at my school, you can't get a minor if you're a CS major. For instance, by the time I graduate, I will have the required credits for a minor in math. That minor won't be recognized by the university, and I can only say that I've completed the courses for a math minor without actually earning one.<p>The same is true for double-majoring. I have a friend that wanted to double major in CS and linguistics to do AI, but he was told that he couldn't. Instead, he has to stick around for an extra year to get two distinct degrees. He's had to waste time because some of the courses he needed to take required you to have declared a major in that field.<p>This is from a school that probably has a more vocationally applied view of a CS degree. We are, for instance, required to take two semesters of software engineering. They're obviously interested in giving a student an education that will be useful in the industry, but they also have inane rules like the one described above.
It seems unproductive to respond to this discussing how difficult it would be to fix/implement. I think Stroustrup probably knows that better than most anyone else, given, as he noted, his unique perspective.<p>What is productive is gaining acknowledgement that this problem exists, as that is the (cliche) first step. I believe this is a serious problem. I've seen the sub-par software, code, and the people writing it for years - it's not changing through academia or industry. Both sides continue to address their needs independent of one another, and that is far from optimal.<p>Many of the finest professionals I have met in the industry cannot say more than a few positive words about their CS programs. Most of them will also recommend <i>against</i> pursuing the degree if you actually want to excel with code.<p>Agreed, the fix(es) will not be an easy find, but it is far from impossible. This needs to be taken care of - I'd love to be able to tell friends that want to be a good coder that they can go to school for that.
This reminds me of Andrei Sakharov, the father of soviet nuclear bomb who became an anti-nuclear activist later in his life.
OOP makes writing bloatware so easy, you don't need to think, just reuse someone else's classes, and this is what they teach in CS 101.
Ironically the author is one of the creators of the problem.
You are never going to be able to license software developers as a whole. Maybe some small subset, but the barriers to entry are just too low for a widespread licensing system to be imposed. Software is too fluid for some standards body to say 'you must know XYZ', we are constantly inventing new and better ways to write software.<p>Also remember, this is the guy who gave the world C++