Joel Spolsky, whose books and website are essential reading for anyone involved in IT development, complains that today’s programmers can’t program, largely as a result of only having learned modern languages like Java, which don’t stretch students to the same extent as Scheme and C. I agree and disagree at the same time. Whilst I agree that these guys will never be able to advance computer science by programming up the next Google clustering system, maybe they will be able to solve the business, HR and user interface problems that cause so many IT projects to fail.
Java is the SUV of programming tools … A project done in Java will cost 5 times as much, take twice as long, and be harder to maintain than a project done in a scripting language such as PHP or Perl.
I think that’s a bit of an exaggeration, but I can see his point. You just don’t need all that overhead to develop web applications.
If all you want to do is develop web-based database applications, then a knowledge of databases and SQL is the most critical thing. You can learn a certain amont about how modern computers work from learning Java, not enough to understand the whole thing, but enough to give you an appreciation.
I think we are only beginning to appreciate the breadth of experience, from conceiving and planning through to writing code and designing user interfaces through to training and marketing that is required to deliver really good software. Broader courses are a good idea, but we have only begun to figure out how to develop them.
The people in charge of teaching computer science and related disciplines have big questions to answer though. How are they going to reduce failure rates and produce computer science graduates, when their subject is, at base, so damned hard? One answer is to make the subject easier. But it doesn’t seem to be a great answer.