How Computer Science Education Got Practical (Again)
jfruh writes: In the 1980s and 1990s, thousands of young people who had grown up tinkering with PCs hit college and dove into curricula designed around the vague notion that they might want to "do something with computers." Today, computer science education is a lot more practical — though in many ways that's just going back to the discipline's roots. As Christopher Mims put it in the Wall Street Journal, "we've entered an age in which demanding that every programmer has a degree is like asking every bricklayer to have a background in architectural engineering."
Sure, but you can't ask a team of bricklayers to assemble a livable house. In fact in this analogy it's so obvious that you also need an architect, a plumber, etc, that there's no need to even mention it. But when it comes to programmers and (corporate) management it's a whole different story. They will get a team of 'bricklayers' together and tell them to build the next Youtube - or a bit close to home, the next corporate content distribution platform - and then be utterly dumbfounded when that blows up in their face.
Maybe you should fire your HR people?
I love Jesus, except for his foreign policy.
We have hired, and let go, 3 "computer science" majors who didn't know how to calculate a range of IPs given a single IP and a netmask.
CS != IT. This makes as much sense as complaining that your car mechanic knows nothing about plumbing. If you want a sysadmin, then hire a sysadmin. But that is not what a CS grad is, or should be.
You should also change your hiring practices. If there are basic skills that you require, you should test for that during the interview process. By failing to do that, you are wasting your time and theirs. Letting one slip through may be excusable, but three in a row is a sign of serious dysfunction.
Computer science is a wide field, and you can't expect everyone to know everything. Just like many computer scientists would have to take some time to familiarize themselves with MS Office (because they probably wrote their thesis using LaTeX), many aren't familiar with aspects that are not in their area of interest. Hardly anyone configures hosts manually anymore, and home routers come with reasonable default network configurations. If you're not "into networking", why would you know what a netmask is? Maybe they run circles around you in database design or image processing. I'd expect anyone with a computer science degree to understand a short explanation and then do the calculations though. (If you, dear reader, know what a netmask is and feel the urge to proclaim thusly, please refrain. I know what a netmask is. Many other people know what a netmask is. That still doesn't mean someone who doesn't know is undeserving of a CS degree, necessarily.)
The link is paywalled, but programmers are not bricklayers. So just based on that one quote I can tell the article is stupid.
Indeed. TFA equates programming with bricklaying, and implies neither needs to be educated like an architect. But writing a program is much more like architecture than it is like bricklaying.
I have worked as a bricklayer. The first day, the foreman told me to pull the wall down and try again. The second day it was "good enough". By the end of the week, I could work as well (but not as fast) as the guys with years of experience. A programmer with a week of experience can not come close to someone with years of experience, and likely can't write a working program at all.
we've entered an age in which demanding that every programmer has a degree is like asking every architectural engineering to have a background in structural engineering
Fixed.
"The idea of programming as a semiskilled task, practiced by people with a few months' training, is dangerous. We wouldn't tolerate plumbers or accountants that poorly educated. We don't have as an aim that architecture (of buildings) and engineering (of bridges and trains) should become more accessible to people with progressively less training. Indeed, one serious problem is that currently, too many software developers are undereducated and undertrained. Obviously, we don't want our tools--including our programming languages--to be more complex than necessary. But one aim should be to make tools that will serve skilled professionals--not to lower the level of expressiveness to serve people who can hardly understand the problems, let alone express solutions. We can and do build tools that make simple tasks simple for more people, but let's not let most people loose on the infrastructure of our technical civilization or force the professionals to use only tools designed for amateurs." - Bjarne Stroustrup.
No sig today...
I think you are arguing against yourself. For bricklaying, it seems like experience was much more important than years of formal education. And you are saying the same is true for programming - that experience writing programs is what is important. You don't need multivariate calculus or OS design to write programs, it takes 6 months to a year to learn the basics. But definitely not 4 years of university.
Support microSD: in a post 9/11 world, it is unwise to carry your data on media that you cannot comfortably swallow.
Nowadays, anything that specific that you don't know, you just google it. I have a master's degree in CS and 30 years experience, don't have a clue what that subnet mask thingy does either, but I can find out in five minutes. Maybe your problem is you're hiring dumb people?
Have you read my blog lately?
I think the problem is we need both. In most cases programs are not like buildings they don't fall down and kill people if they are implemented badly. Now if that program is controlling your nuclear reactor or your medical implant, flying your plane its a different story.
Look at your accounts. Sure we don't let just anyone do the books at public company. Someone with a CPA at least needs to supervise the preparation of those SEC filings. On the other hand we don't need the guy at the HR Block kiosk running TaxCut for you while you shop at Wall-Mart to have an accounting degree or a CPA either (not to say some of them don't).
Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
A cs major might not be able to "calculate a range of IPs given a single IP and a netmask" on the spot, but if a cs major can't google what a netmask is, and then write a program which gives you the min and max ip for the range included in the same network as the given ip/netmask he is useless as a software developer.
It can be done in under 10 lines of code, and should not even take an hour to do. It is basic bit operations and a cs major should know how a number is represented on a modern cpu.
Also, why do we care what a former biologist, now sci/tech article writer for the WSJ has to say about technology-related education? Is there some connection that I'm missing?
We already have Playboy models advising the public on medicine and Fundamentalist Christians in charge of the National Science Curriculum so hey, why not?
No sig today...
Comment removed based on user account deletion
Your analogy is almost as bad as the articles.
CS != IT. This makes as much sense as complaining that your car mechanic knows nothing about engines.
Except I didn't say that. You edited what I said, presented it as a direct quote, and then complained that it was a bad analogy. That is dishonest and stupid.
Many of those large spreadsheets would be much better off as a database and a little bit of scripting language like Python. But most of these business analysts have only ever had exposure to Excel and VBA, and they would have been much better served with some technical training in the right tool for the job.
I agree with you, but, in my experience, the biggest single obstacle to deploying better tools is the IT department.
I'm an accountant, not a programmer (although my degree was a Computer Science joint honours 25 years ago) and I find that while Excel is great for some things, I prefer to us R for most data and financial analysis. But my IT department gets jumpy about R: We don't understand it! We can't support it! We don't understand its dependencies! If it stops working one day, we won't be able to help! Where will we find skilled resources if you leave the business?
"Fine," I say. "Give me C# or Python; I'll use those instead." But then I'm told I'm not allowed those tools because they're too dangerous and restricted to IT staff to maintain proper control. This hasn't just happened in one company - it's the normal response in my experience.
Comment removed based on user account deletion
What this author is trying to say is computer programming can be a trade of a learned skill set, much like a brick layer is a learned skill set; albeit a crude example. If companies are bemoaning about the lack of computer programmers and the skill sets in the market, then they need to realize that mandating a college degree is not needed.
When I read the comments, in here, and the general attitude in the outside world, it always comes down to some form of this:
"We know exactly what a student will need for their career, nothing more need be taught."
Or some other such truism, focused on the job as it presently exists. One thing for certain, is that if you train a student in the fully practical, the student will know how ot do exactly one thing, and will become redundant rather quickly.
A programmer knowing what a netmask is? Hell yes.
I have found through personal experience and general logic, that a person who knows more about what they are doing knows more about what they are doing. A programmer that can answer questions that do not relate 100 percent to his narrow job description is more valuable than one who cannot. KNowing bout more things can lead to nifty stuff like promotions, raises and the like.
My extraneous and supposedly non-relevant knowledge has over the years served me quite well, as relevant solutions are often found outside the normal solution set. In addition, I can never tell where a solution might pop up from.
disclaimer: I read Wikipedia for fun.
But if you want to teach someone off the street the programming language du jour, and set him or her in a cubicle raking in that minimum wage, then yeah, you can teach that in short order. That isn't worth much more than minimum wage, as you are producing an almost valueless throwaway employee.
The shepherds did so well protecting the flock that the sheep no longer believed that wolves existed.
Jeez I learned that stuff in my networks classes, but I don't remember the stuff about netmasks, does not mean am I a bad programmer? It does mean at least that if I am faced with a problem that requires that knowledge I would be able to study it to complete the task.
I am a recently retired software developer who specialized in scientific, engineering, and image processing applications. I must have been considered pretty good because I kept getting significant raises and I retired with a net worth of over a million dollars. I do not know what a netmask is.
Most people do not have photographic memories. I've learned and forgotten netmasks countless times. If I don't do something for a few months, I can't remember it off the top of my head. Expecting "CS" people to remember endless trivia is stupid and counterproductive. You'll only hire the people who remember trivia, not the people who can create new things from scratch.
I'm sure IT would be happy to allow and support R if management would commit to providing training, staff time for support and budget to handle the related costs. That won't happen though so basically you're trying to make your job easier at the cost of making their job harder.
I'm not sure how you're so sure that you know what happens in companies with which you have no connection. When I suggested to a senior member of our IT team that resources could be made available to support R, he told me (this is a direct quote), "I and my team have no interest in learning or supporting R."
I'm a director of the business; my offer of resources was serious and within my power to grant. They don't want to engage, so we will support our analytics environment outwith the IT department.