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."
The link is paywalled, but programmers are not bricklayers. So just based on that one quote I can tell the article is stupid.
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. Two of them didn't even know what the netmask DID!
Computer science means you can turn on a windows computer and win at minesweeper these days it seems.
Just my $0.02 worth.
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.
It seems like a commonplace that not every line-of-business java slinger is going to make use of the more elegant mathematics being worked out on the edges of 'computer science'; but isn't this issue already addressed by the fact that things like 'software engineering' are distinct courses of study, with a different emphasis?
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?
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.
Sorry, sir, over quota.
though only if you identify the scope of the work. You need a bricklayer to build the house, but he needs to be educated if he's going to be the GC / project lead. Don't hire unskilled labor for a skilled position.
But it totally makes sense to hire basic codemonkeys for the grind work. You don't need a CS degree to maintain your site's javascript or write queries all day long.
I work for the Department of Redundancy Department.
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.)
I would argue that any CS curriculum that doesn't offer at least a basic peek into the fundamentals of networking is completely flawed. For the past twenty years most all serious software has been network-aware, and ignorance of that is inexcusable.
You probably can't even communicate to the institution that provided that employee with a degree that they have some serious deficiencies with their program without it being actionable. So, even though it's not "right", you're stuck vetting every bloody thing out in the hiring process. Even though they have a "degree", you have to vet them like they don't.
And now imagine an agile team of bricklayers "doing" an Empire state, sprint after damned sprint, under time pressure. Led by some MBA suit.
That sure looks like a recipe for success...
Problem 1. computer programming has nothing to do with networking.
Problem 2. If they are new grads you are supposed to teach them.
Problem 3. A lot of Programers do not start till college. So they lose years of general knowledge.
Bricklayers. That's what most of us (brogrammers) are.
Workers that is.
With a CS degree, you should know damn near everything. My cousin had a CS degree and based on required classes, he had to know how to write compilers, kernels, network stacks, design CPUs, 3D game engines. He did not have a lot of practical work in any of those, but he had to learn the theory, data structures, and understand how and why the were designed the way they were, then implement simple versions of what he learned.
He came from a Uni that is a world leader in Bio Engineering, and CS was considered a harder subject because CS is very hard. If it's not hard, you're not doing CS.
Is that some sort of code for why so many comp-sci graduates now seem to struggle with basic concepts like linked lists or object oriented programming, have never even seen assembly language let alone have any real understanding of what the CPU actually does or how to write code for best hardware performance (cache efficiency, etc), and generally seem to be exposed only to the most fluffy things? Never mind being able to write multi-threaded code, something of critical importance these days.
To be sure, there are some who are great! But they are harder and harder to find.
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 graduated with a CS degree and spent the first half of my 20+ year career as a software engineer. These days, I'm a sysadmin. Becoming a sysadmin was considered a step up from writing code - it was a responsibility given to the senior engineers who had a more in-depth knowledge of the OS and hardware.
But I guess these days some folks think of us as IT janitors...
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.
Fail.
A decent car mechanic might not know the building code by heart but he's probably unblocked a drain or two in his time simply because he's the sort of person that enjoys using tools to do stuff. If my mechanic could only do cars then I'd be suspicious of him.
If nothing else a potential employee should be interested in the job he's applying for. If you've got "CS grad" who don't know what an IP mask is then they clearly have no personal interest in computers and only took the degree because they thought it "might lead to a career". You can bet that sort of person will be in management within a couple of months (maybe at another company) and you'll be looking for yet another programmer to fill their place.
No sig today...
I wish people would stop making analogies.
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.
If you're not "into networking", why would you know what a netmask is?
Because anybody who has any aptitude at all for CS has usually been called on to configure Grandma's router, that's why.
If they've never done that then be very suspicious of their claimed interest in computing. You might be dealing with a bullshitting hipster who decided yesterday that computing might be a "good career move". Until he decides it's too much like real work.
No sig today...
Comment removed based on user account deletion
CS != IT. This makes as much sense as complaining that your car mechanic knows nothing about engines.
The mechanic may not know how to build an engine, but he damn better understand the ideas behind how they work and be able to do basic maintenence.
If you are hiring a bricklayer to do the work of an architect, or vice versa, you probably have the wrong person for the job.
If you are hiring a script kiddie to doe the work of a software engineer, or vice versa, you probably have the wrong person for the job.
Just keep in mind that in many areas, using an unlicensed engineer on certain projects is illegal. When is software engineering going to finally step up to the plate?
Hey, C students need jobs too!
Never underestimate the power of stupid people in large groups.
There a programmers and computer scientists /engineers
The scientist/engineer role is like an architect. The ones writing code (programmers) are like the brick layers.
I have no problem with this notion. And I will also say this, doing what I do, I would not want non degreed people helping me.
Managers don't get it. After all, they are all like bricklayers. But they spend too much time figuring out how to lay the bricks and cause the wall to be built way to dammed slow.
None of the things you mention are remotely hard, most of them got covered in the LOWER HALF of my undergraduate CS education. The thing is, doing them WELL requires the equivalent of multiple PhD's.
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.
The fact that most CS grads (under most current programs) can't program their way out of a wet paper bag is a symptom of a larger issue. Too many students spend four years (and $100,000 or more) learning all kinds of "theory" and learning how to learn, and graduate with a useless piece of paper and no marketable skills. Time was when employers recognized that the theory and learning skills meant the graduate was easily trainable and would not need a whole lot of background to become useful to them. But, nowadays, since most employers would rather cut their arm off with a butter knife than provide training for their employees ("But but but if we train them they might take those new skills to another employer!" Then make them want to stay by not treating them like walking cost centers that you despise having to pay), a graduate who can't "hit the ground running" or has no real-world experience past their internships (witness the plethora of "entry-level" jobs that require 3 years' experience) is unhireable. Companies whine about not being able to find people to hire (usually so they can get H1-Bs to do the job for 60% of the pay) but don't realize that employee development pays off in spades, and if everyone says "let someone else train them" then nobody gets any training.
A bachelor's degree used to mean something when you were trying to get that first job. Nowadays, a bachelor's is basically the new high school diploma, since the lack of a degree is used as the first criteria when culling the pile of resumes submitted for an open gig. Someone without the obscene debt that comes along with a degree will find it easier to quit when they get treated like crap by their employer, because they don't have a student loan payment that's half their take-home pay.
(Yes, paying H1-Bs less than market value is illegal. But, what do you think happens to H1-B visa holders that complain? They get fired and sent back to their home country. So, they don't complain, and employers save money on salaries.)
Never underestimate the power of stupid people in large groups.
The error here is assuming that they're is information and choice for aspiring "computer programmers" like me
In the United States finding a programming major at the college of your choice is hard. When you are seventeen and your parents do not know better because HR also does not know any better, you see the closest degree in the course catalog and apply to the college. And since CS is nearly everywhere you don't look enough to even find that a programming degree is scarce enough tip rival Applied Math degrees.
Now, this is largely solved at technical schools but you don't normally hear about that from your college advisors in high school. I mean, the want you to go to a big name school like Carnegie Mellon but it does not sound like a Devry would be just as big an accomplishment
I've more or less moved out of programming now but I did it for 30 odd years in the finance industry across various projects. I've used something like 8-10 operating systems and 20+ languages. My code is pretty robust, during dev maybe 1-2 bugs a year were raised against my code and post go live I'm aware of 1 bug that turned out to be me and that was a fairly trivial one. 90% of what I did was donkey work, read a message from IBM MQ, parse it, dump it out to a db, make a few decisions, call a stored proc etc. Mostly C and Unix. It was all commented to hell and back and very clearly structured and I also enjoy documenting, which I do in spades. However, I wouldn't have a clue on writing a compiler, doing any graphical work, etc although I'd know where to look should the need arise. Key point though is, I'm entirely self taught and have zero college. I went from school straight into my first job based on a 30 minute interview and the fact I programmed some 6502 on an Atari 800. The message being, a lot of programming doesn't need super skilled people, anyone with a bit of common sense, a logical mind, a chunk of curiosity and hopefully a good quality threshold can do it.
I want a list of atrocities done in your name - Recoil
Really? Maybe s/he was too busy following the latest developments on LLVM to care about how exactly routing takes place. At my uni we spent perhaps 20 min talking about this before moving on to other subjects. I can easily see someone not remembering it.
What you want is someone with a solid theoretical foundation that can google IP mask and understand it in 5 min.
The thing is, doing them WELL requires the equivalent of multiple PhD's"
Or being interested in them. The GP was arguing that netmasks are not something CS may know. I was getting after that CS should know a lot of everything, including routing. How could someone who understands how routing works not understand netmasks?
Whoosh. I fixed your analogy because it was horrible. Maybe I should have used strikethrough, but there is no documentation on how to use strikethrough with slashdot and they don't use any markup tags from the commonly used.
/., not a mailing list. Just click the parent button to see the original.
This is
Grandma's router comes with that aspect preconfigured. We keep telling people that CS isn't the same as IT, but somehow not knowing every bit about IT counts against CS graduates? Calculating the network range given by an address and a netmask is a highly specialized topic that nobody beside network administrators ever needs. It's not difficult, but neither is mending a torn jeans, and most people don't know how to do that, even though they wear them every day.
I would not expect a standard CS curriculum to have a class on the TCP/IP stack. A networking class, maybe, but more theoretical than on IP implementation details.
If you need somebody that knows the ins and outs of IP, then I suggest your organization look for such things during the hiring process, instead of going through the incredibly expensive process of hiring somebody only to let them go months later.
It sounds like you are a bunch of morons there that have managed to (consistently!) confuse CS and IT.
There is a gulf difference between what I consider Computer Science and Computer Programming. They are easily mistaken as one in the same. The easiest way to explain the differences between a computer scientist and a computer programmer is a computer scientist develops algorithms optimized for binary logic; they are in a sense the mad scientists in the lab. Where as a computer programmer knows a set of computer languages and creates solutions; which they are in a sense the practical applicators of what computer scientists create. Now there is a lot of overlap between the two in varying degrees based on the skill set one has. Most computer scientists have programming skills and most programmers know how to optimize code, but it's what the primarily focus on that splits the difference. 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. It makes no sense that 120+ credit hours from a collegiate university where a large chunk of those credits have nothing to do with the skills sets needed for the degree are needed. When in actuality, 1 to 2 years of full time study in just computer programming is more than enough. This is the same for other trades like electricians, plumbers, machinists, and the other vital skill sets needed for society's infrastructure. We do not expect the vital skill sets for these (electricians, plumbers, etc. etc.) professionals to have 4 to 6 years degrees. IT makes no difference to me if an electrician has read and studied G. Chaucer's Canterbury Tales or if a plumber understand the photosynthesis of pine trees. Yet for some unknown reason companies think you must have the lick and seal of a university degree to be a "good" computer programmer.
Let's look at accountants vs bookkeepers. A bookkeeper may do just fine in some situations, but in others you really need an accountant, who will have a college degree and may have those 12 hours of interpretive dance/Arapahoe/history electives. And bricklayers as programmers may work ok at Megacorp where a team of 400 is thrown at a project, but in my mid-size office with a dev team of four, I really hope the other guys understand something about how things work. Without a statistics class, for example, I'd never have guessed how to tell the "grayness" of a grayscale image.
To start with, I teach CS and am a big fan of the idea that everyone should try to learn everything.
Unfortunately, computing is just too big. If every CS program requires knowledge of compilers, kernels, network stacks, CPUs design, and 3D game engines, then no fresh graduates will know robotics, machine learning, programming language design, web development, high performance computing, etc.
Each one of those topics requires a third or fourth year course to usefully cover the basics. Most programs have space for about 6 such courses, and take up two of those slots with required theory: analysis of algorithms and the mathematical foundations of CS. That leaves students with a list of 10-15 electives to cover specific topics, and the ability to pick four.
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.
Don't quote other peoples text if it isn't a quote. You are dishonest. And no, his analogy is good. Networking and Netmasks have nothing to do with programming. Even if you are writing networked programs you aren't dealing with netmasks. Seriously just apologize.
"Like nursing or welding, it's something in which a person can develop at least a basic proficiency within weeks or months."
I do not want to be treated in a hospital where the nurses have just a basic proficiency which they achieved within weeks or months.
There is a gulf difference between what I consider Computer Science and Computer Programming.
Actually, a good CS degree is built upon a knowledge of computer programming. And the latter should be a prerequisite for the former.
It's like asking an architect to prepare a design for a building who cannot read blueprints. I don't expect the CS to have the same experience or productivity as the bricklayer. But I do expect them to understand the process and advantages or limitations of the materials selected.
Have gnu, will travel.
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.
I got there a bit later, but I never saw a single apple ii at the university. There were labs of macs, must've been 512ks which were in the process of going to se/30s.
There was a lab of PCs, no idea what they were on but I'd imagine at least 80286s, by the time I was using them, they were pentiums mostly.
And then there were a few labs of sparcstations, plus the university had several IBM mainframes that were still running, and the CS assembly course that I took actually used those, but I'd already had the EE course that was essentially assembly which we did on 68hc16s at the time.
Computers, oh and there was this odd amiga kicking around, probably the first one released. If I had to guess I'd say that the university MAY have been considering amigas instead of upgrading the macs to se/30s. Also now that I think of it, I lied about the apple ii, I think that one of the ME profs had one that he used for something or other... and I seem to recall one of the EE profs mentioning something about doing voice recognition with a c64.
My HS OTOH had only a single Apple II and some Pet CBMs which were about to be upgraded(private school). I had an Apple II at home in HS, eventually got a mac ii in university and built several x86 machines.
Computer Science can be entirely theoretical. When I was working at my university as a system administrator we were replacing the 10base2 cabling with 10baseT. A CS professor took me out to lunch. He published many papers on networks in peer reviewed journals. I was explaining the advantages of 10baseT over 10base2 and was shocked when he asked me how ethernet coordinated different hosts transmissions. I explained how ethernet used collision detection and waited an increasing and partially random length of time before retransmission to avoid subsequent collisions (remember, this was when half-duplex routed rather than switched networks were the norm). Learning this he started explaining a mathematical model of how throughput would be impacted as congestion increased. I found it interesting that he knew all about networks at a theoretical level but didn't know how the network he used every day worked. Another CS professor claimed to have multiple chemical sensitivities and maintained that anything electronic gives off fumes that make him ill. I think he was a full-blown hypochondriac but he still taught computer science even though he hadn't been near a terminal or computer in years. Personally I like a mix of theoretical and practical.
This makes as much sense as complaining that your car mechanic knows nothing about plumbing.
Bullshit. There's absolutely no excuse for someone with a CS degree not being able to figure out, on the spot, how to calculate the range of IPs for a given network, none whatsoever.
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.
These days we ask file clerks, secretaries and receptionists to have a degree. The actual job qualification is typically knowing the alphabet and being able to have a nice personal manner. It's unclear how a 4 year degree provides additional value for the actual role. It's just another sorting parameter to allow you to round file some of the flood of resumes.
Yes, if you want to move on from being a file clerk, having additional educational attainment might be nice.
Guess it depends in the UK my trades qualification gave me more practical programming experience than my honours degree , My CS degree exposed me to a host more theory ssome of which has been usefull to me some not but that depends on the coding taks you under take.
Neither of them were intended to produce sysadmins or network engineers , I had to undertake futher professional qualifications and study for that.
I know what a netmask is, and I'm still far away from reaching that million. :-)
Retired sysadmin, in transition to developer.
They are closer than ever. Sure you can be the type of sysadmin that goes in and just reboots the server when things don't work, but there are plenty of sysadmin jobs where you're basically a programmer. I recently left such a job where I was definitely more of a programmer, I just programmed in Puppet instead of something like Java.
If you by "figure out" means "google it" then sure, we definitely need more software engineers that tackle each problem they get with "let's ask google and cut and paste the first solution that compiles."
| 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. Two of them didn't even know what the netmask DID!
Were they still incompetent after googling "What is IP netmask", and most importantly, be able to read and understand the results?
And believe it or now the computer industry has cylic slowdowns, like after dot.bust and just before the Web.
If you by "figure out" means "google it" then sure, we definitely need more software engineers that tackle each problem they get with "let's ask google and cut and paste the first solution that compiles."
What I meant was that even if he had to be reminded of what w.x.y.z/m means, that from there he could figure it out on his own. After all, if you never work with networking, you could possibly forget which bits the /m applies to...
Meh. When I was an undergrad, you really needed to understand netmasks if you wanted to set up a network for multiplayer games. Now, it's much easier (although Windows makes it stupidly hard to create an ad-hoc WiFi network. No idea how people think it's ready for the desktop), and you can do a lot without caring. I can't remember the last time I needed to know about them.
I am TheRaven on Soylent News
The source is the WSJ, so you need to set your expectations appropriately.
Some of these comments still show the biggest hang up of Computer Scientists is their own ego. Be humble smart guys, humble smart.
Problem 1. computer programming has nothing to do with networking.
Well, Computer Programming has little to do with networking - that is until you start writing network oriented applications, but networking has everything to do with Computer Programming.
Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
I haven't had to touch a netmask in over 10 years.
I also haven't needed to do any bit operations in that time as well. And the last time I did any serious bit twiddling was more than 15 years ago.
Computer Science consists of Boole's Algebra, Russel's Propositional calculus, Church's lambda calculus, Gödel's incompleteness theorem, and Turing's halting theorem. There has been limited progress after WW II. Not that much was gained by actually building these Turing machines and programming them. If you want to learn CS, get your PhD in mathematics.
Today, computer science education is a lot more practical
One can easily learn to hire a H1B Head. "Do you like apples?"
From what I vaguely remember netmasks are stuff to make sub-networks
a netmask of 255.255.255.0 will create a sub-network with ips ranging from X.Y.Z.0 to X.Y.Z.255 (it is a binary AND of the main network ip address and the netmask). This is what I remember from head, I did not look it up on wikipedia.
But then again I graduated only 3 years ago. I will probably completely forget this in 5 years.
Comment removed based on user account deletion
With a CS degree, you should know damn near everything. My cousin had a CS degree and based on required classes, he had to know how to write compilers, kernels, network stacks, design CPUs, 3D game engines. He did not have a lot of practical work in any of those, but he had to learn the theory, data structures, and understand how and why the were designed the way they were, then implement simple versions of what he learned.
He came from a Uni that is a world leader in Bio Engineering, and CS was considered a harder subject because CS is very hard. If it's not hard, you're not doing CS.
Your cousin probably has one, maybe two classes in each of those subjects. Meaning he only scratched the surface of what is really involved.
Your cousin probably also thinks that once you learn one programming language, everything else in syntax.
Your cousin also got a big wake-up call when he actually entered the job market and found out how superficial his CS education really was.
How do I know this? Because I've worked with many graduates from top CS schools. Some of them even had their Masters in CS. And I'm the one who has to go in and fix their shit.
They told you it was a step up and you believed them?
I sysadmined until I proved my chops as a programmer. At that point I was too valuable to keep around as an IT janitor.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
If you are a coder and don't know what bitwise AND, OR, NOT and XOR are you are a clown.
Anybody who understands bitwise logic, understands netmasks at a level beyond most IT janitors.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
I'm a Mechanical Engineer and could tell you nothing about how to fix your car. I could tell you how your car worked, theoretically. I couldn't tell you what was wrong with it.
I work with PhD'd engineers that can barely tie their own shoe, but could tell you more about fluid boundary layer conditions than any other human I know.
If you wanted people that knew how to calculate IP ranges maybe you should have hired someone that took some sort of vocational IT training not someone with an advanced degree.
A decent car mechanic might not know the building code by heart but he's probably unblocked a drain or two in his time simply because he's the sort of person that enjoys using tools to do stuff.
You'd be wrong. Car Mechanics have become specialized enough that some of them only work on certain brands of cars. I wouldn't hire a plumber that did residential installs to plumb a hospital. The codes and requirements are completely different.
I'm a mechanical engineer. I could tell you ideas behind how your car works but I wouldn't go near trying to repair it.
What does a CS major specializing in compiler theory need to know about net masks?
Bricklayer is a bad analogy. If they wanted to give an example of a skilled trade, a stonemason would make more sense. A bricklayer is the guy you hire to build a patio, BBQ, fireplace, or facade of a house which does require skill, but it lacks the depth required. A stonemason can have skills in a broad range from building a small monument or mausoleum to an entire cathedral depending on skill. We need people who can turn architectural design plans into reality and do so with accuracy and technical mastery at least within the scope of the tasks they are assigned and are capable of completing. We need them to be able to see when there is problem and be capable of adapting. If the wall as designed will not stand, you wouldn't build it, you take the needed steps to ensure it will stand now and also stand the test of time. A stonemason better suggests the need to execute with integrity in every detail. Masonry also much like programing can be learned through study and apprenticeship despite the depth of skill required to be a master of the craft.
I bet most of the CS people that know what a netmask is has no idea how to apply it as soon as you start talking IPv6 with them.
Sounds like all the job interviews I've been on lately.
Then I stand over the code and whip up assembly like the protocol say. No seriously though, I wonder if you need education to write for the Wall Street Journal.
Since when is CS and coder the same thing?
Thank you, exactly this.
I don't know what the OP actually did, but presumably this was not an interview question (since OP said they hired them), and part of actual assigned work. I would expect any even mildly-decent developer to be able to learn about IPs, netmasks and figure out how to do calculations with them in a couple of hours, even with no prior knowledge (I say this knowing much about it myself). One of the most important skills of a developer is to be able to learn. This is not just learning new languages, libraries, techniques and patterns, but also the new (to you) business domains, user needs, and "why" behind requirements/features/stories.
On the other hand, expecting any random dev to know this off the top of their head would be asinine. If they were fired for this, then the OP did them a favour because it's probably an awful place to work. And if all three were hired with the explicit expectation of being an expert in networking but don't know what a netmask is, well holy crap, the OP needed to learn how to better screen candidates at least two hires ago.
Speak before you think
I said I know what it is, and that it's not difficult. Of course anyone with a CS degree should know Boolean operators, but the thing that they don't necessarily know is that a netmask is a particular kind of mask and what it's purpose is. If you don't know what a netmask is used for, then you can at best guess what a given netmask means with regard to IP address ranges.
Competent CS is a superset of coder. Being CS and not knowing how to code is like being a lawyer and not knowing how to lie.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
By calling it Computer Science we tend to think that it's all about programming the computer while it's actually not. Programming is of course part of it but it certainly isn't what it's all about. I'm a big fan of the alternative names like Computing Science or Datalogy. You should visit an automata conference and ask the people there if they consider themselves programmers. Sure some of them will but you'll soon realize that the brightest people in CS are not necessarily into the computer part of it, and hardly ever programs at all.
I've known a few CS people that don't code/never coded. They are far from the brightest. I'd go so far as to say the dimmest.
They are the best bullshitters though, and that counts for a lot.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
And how many of them publish academic papers in theoretical computing science journals? I never said that being a lousy programmer means you're bright. What I said was that if you look at the people that do the really advanced theoretical computing science you will find that most of them are not the typical programmer type.
Oh gosh - big bugbear of mine - equanimity be damned, cue the rant ...
"Computer Science is no more about computers than astronomy is about telescope" - Edsger Dijkstra
First off, let's all acknowledge that not all degrees, or degree programmes are created equal, and what some may call a Computer Science degree, others not.
I'm a graduate, and a university lecturer (at the same place) at one of our top universities.
Unlike many universities, we have just a couple of courses with the word 'Computer' in them - one of them is Computer Science. We had just the CS one until very recently, and in a Douglas Adams-esk fashion, most of us throught the second one was a bad idea in the first place).
We define Computer Science as the science of the computation: for example, the scientific investigation of what is, or is not, computable - nothing to do with programming. Our CS course is basically domain-specific applied mathematics. Very deep mathematics.
We do have computers of course, and we - in more recent years, and as the students expect it now - do have them program them a bit - but mostly as a means to 'animate' their reasoning. We have a saying; and it's one that we're pretty proud of actually: 'Computers for email, whiteboards for computer science'.