Do Businesses Really Need to Hire CS Majors? (cio.com)
A new article in CIO magazine argues that when it comes to computer science, "few of us really need much of any of it." Slashdot reader itwbennett offers this summary:
At the heart of the matter is the fact that most businesses don't really need programmers to be deep thinkers. For them, it's "just as worthwhile to hire someone from a physics lab who just used Python to massage some data streams from an instrument. They can learn the shallow details just as readily as the CS genius," according to the article.
CIO's anonymous author promises an incomplete list of "why we may be better off ignoring CS majors." Some of the highlights:
CIO's anonymous author promises an incomplete list of "why we may be better off ignoring CS majors." Some of the highlights:
- Theory distracts and confuses. "Many computer scientists are mathematicians at heart and the theorem-obsessed mindset permeates the discipline."
- Academic languages are rarely used. "...the academy breeds snobbery and a love for arcane solutions."
- Many CS professors are mathematicians, not programmers. "One of the dirty secrets about most computer science departments is that most of the professors can't program computers. Their real job is giving lectures and wrangling grants...."
- Many required subjects are rarely used. "...it's too bad few of us use many data structures any more."
- Institutions breed arrogance. "...the very nature of academic degrees are designed to give graduates the ability to argue one's superiority with authority. "
- Many modern skills are ignored. "If you want to understand Node.js, React, game design or cloud computation, you'll find very little of it in the average curriculum... It's very common for computer science departments to produce deep thinkers who understand some of the fundamental challenges without any shallow knowledge of the details that dominate the average employee's day."
"It's not that CS degrees are bad," the article concludes. "It's just that they're not going to speak to the problems that most of us need to solve."
This sounds like it was written by a non-CS major who has tied all their business processes to wonky VBA macro laden Excel workbooks.
I am graduating as a CIS major this year (computer information systems) and well this degree doesnt really have more programming courses, it does give a broader view of everything. only reason why i did this degree is im not the best at math and itd be the quickest.
in terms of the CS majors i know its really hit or miss on programming talent. i have one friend who is aceing most of his classes, can break down algorithims, but cant code his way out of a box of rocks (unless he can only use c).
The whole point of open source is that the software is already written. Just need to put it together like Lego blocks. CS Major won't help. Outsource the development and it will be done in no time.
Is this written by some guy that can't get a programming job because he doesn't have a degree?
"Wah, they're all elitist nerds. Now I have to write for this stupid website to pay rent. They're the stupid ones, not me! Why don't I get paid $200k a year? Wahh!"
Sounds like someone wanting back the coding monkeys, who probably have no clue of the greater picture and a some point wonder why the bloat hasseled gozilla app they mangled together consumes all resources of the newest available hardware.
Go back to your bean counter and shut up!
Arrogant ass says other people are arrogant ass! News at 12!
No need for economics, law, mechanical engineering, biology, chemistry, physics, math, ... majors either.
In 30 years, I have never worked at a place that required the skills of any major, and yet, they are required by HR.
I guess they believe it serves as evidence you can think.
Computer science is a research discipline. Programming is a trade.
By Anonymous
So basically this magazine allowed an anonymous troll to write a flame bait piece for them. What an outstanding feat of journalism!
Sure, there are probably a lot of instances where someone with a degree is overkill for the job, but this disdain for education is appalling. I wish the anonymous coward (and in this case it is not some cute ./ term but the very definition of the words) would tell us where he works so I can avoid hiring their services forever.
If you want shit software that barely functions, by all means, make a physics major write it. If you want good functioning software, make a CS major write the software but let the physics major specify the algorithms.
> Institutions breed arrogance.
Nothing compared to that of the self-taught programmer. (Not a CS myself, but as an old dog I see both kind hired)
The especially the new graduates, are very aware of the fact that they have limited real-world experience. And are easier to get to, regarding the trade-off of "correct" code vs. company spending. While the self-taught usually have little understanding of the fact that we'll have to revisit the code in 6 months.
"I don't want to pay for people who understand what they're doing."
Another success without college article, usually writen by someone who did not go to college. Sure, there are auto didacts able to learn good software engineering principles on their own, but few possess the necessary self discipline. To learn to think you need to hang out with thinkers. To learn a subject well it helps enormously to have good teachers. To learn discipline it helps to have structure. Nothing beats college for that, it's an opportunity you should seize if you possibly can.
Never mind the parities, networking and abundant supply of premium specimens of the opposite sex.
When all you have is a hammer, every problem starts to look like a thumb.
From my standpoint, this is an earmark of of the end of IT as a professional specialty.
At this point technicians are treated as hourly workers- if they exist at all. The word "engineer" is being banished from the IT profession. Support is by phone script. The network is built on appliances. Configurations done by subcontractors. Job qualifications require education over experience. Certifications are required- but are generally useless without a degree.
Programmers are shuffled in and out on contract....code is undocumented. Competence is un-rewarded.
And management doesn't understand the technology with a mentality that says: "Do the minimum possible to get a short term result".
The net result is lots of titles like "Network Manager"... "Network Architect"... "Vice President of Information Systems".... ETC.
And yet none of these people have functional knowledge of real practical networking or server administration. They function as gateways to subcontractors, some of which follow the executive from job to job, and the officer level of the company is so ignorant of the issues involved that it continues.
Then there's the "Cloud".
It's the biggest ripoff any company can be subjected to. A multi-layer IT staff that only administrates the actions of sub-contractors. And yet while this management structure can be three layers deep- it does nothing, presents no skill set, and is useless without the added expense of subcontractors which provide "IT Expertise" as a service. And the company... isn't even in control of it's own data. It's security and availability is now preserved by a third party company whose interest is singularly profit.
So when "CIO Magazine" writes an article saying that CS majors are not needed all I can do is chuckle.
Another consultant who stuck it out.
"We are the Priests, of the Temples of Syrinx..."
It's almost comical just how false most of these stereotypes and arguments are.
1) Knowing lots of theory allows you to approach a problem from multiple possible analytical angles. Lacking that kind of critical thinking will make you an excellent drone employee who can execute orders given by smarter people.
2) I take issue with "rarely used." I know CS people love their esoteric languages, but they are hardly the norm for example code.
3) I don't think I've met a single CS professor who couldn't write code.
4) Data structures? You use them all the fucking time. ALL THE TIME. You just don't know it because someone made it idiot-proof, so now even your dumb ass can use them.
5) There may be some truth to credentials making people more confident, but the same could be said of anyone with any recognized accreditation. Furthermore, I feel like this applies more to businesspeople than scientists.
6) There's a reason you don't find highly-specific industry trending software tools being taught in "the average cirriculum." It's the same reason you learn to dribble a basketball before you learn to dunk: fundamentals.
The highlights read like garbage written for adult children.
"It's not that CS degrees are bad, it's just that they're not going to speak to the problems that most of us need to solve."
What is that problem you need to solve? How to appear to be doing your job when you are actually laying waste to your company's future?
When all you have is a hammer, every problem starts to look like a thumb.
This is an open secret that's been known for decades. The best minds that I've work with are almost invariably from other majors. The sharpest programmer that I know came out of the music department. In most positions, technical skills represent about 1/5 of what you need to do a job. Those other 4/5 matter a whole lot. It's easier to teach a humanities person some technical skills than it is to teach a technical person humanities.
Probably not as much about what you learn in a CS major than who studies it. Typically the people that loves programming from childhood. The fundamentals taught in CS transcends the specific tech and lays a proper foundation. Real world skills are learnt almost exclusively on the job in most of the complex highly skilled jobs, not only IT related. CS majors are the only people that ever performed properly at our sw dev company. Electronics Engineering majors are obviously intelligent but they've never created anything lasting in our factory and are not considered anymore for vacancies.
Accountants are also obsessed with maths. Get real, who needs skill in the Post Truth age?
If you're studying computer science with a view to having a career in programming then you're doing it wrong.
If you read computer science and then immediately conflate that to programming then you're doing it wrong.
If you're studying computer science because you want to have a career either in academia, research, or applied mathematics in the technology industry then you're doing it right.
So many people misinterpret what computer science actually is to the point where people are studying the subject expecting to become top-tier programmers. It's quite sad really. If you want to be a top-tier programmer then study programming, don't waste your time learning about why computers work when all you really want to accomplish is to learn how they work.
The depth acquired in a cs postgraduate degree gave us google and every other leading software house. If u teach someone to program just enough to bash out a solution to a basic problem (no pun intended) , that's fine, u might get a cludgy solution that meets a short term business need. But you will never get another Google. It's that elitism that op complains about that changes the world. Lastly, I agree. The op is an amateur who was rejected at an interview for a $1000+ dollar a day job because, he doesn't have a cs degree.
Like the math PhD i work with, who thinks he is good, because he coded a bit C++ for his thesis. Still unable to use a debugger (hey, we can print to console) or even his IDE after 3 years of working as a software developer. Writing code that I then need to fix all the time for huge performance bottlenecks, security holes, unmaintainability and outright compiler errors. Using libraries for as many years not knowing why he is doing something (cargo culting his way through) and "explaining" why we can't do things right (in the sense of software engineering), because we are so small, we don't need it, we are so special, this doesn't work for us... yeah sure.
This is the exact reason why PHP and most of the things coded in it are such a mess. Too many people running into the tides without taking the time to learn swimming in the pool. I certainly would not argue that my CS degree would make me a good physicist, mechanical engineer, medical doctor or landscape architect. So why would a degree in physics or any other field make one a good programmer?
Sure go ahead and build your software company with autodidacts. Have fun maintaining anything more complex than 1 kloc.
Clickbait aimed at the hard of thinking
When a headline asks a question, the sensible answer is always a resounding No.
I've been progging for 33 years, since my teens. Classic 80ies computer kid. I do that for a living since 18 years ago. I've finally enrolled in a BSc CS track that I'l pobably manage to complete, after having done my German GED High School diploma 3 years back. I'm in the second semester, only taking a few courses at a time, and pushing a wave of exams in front of me. I do part-time, because I'm working as a professional webdev too.
Here's my observation and it's 100% spot on with my expectations and one of the reasons I'm doing CS in my late 40ies:
The basics - Math, theoretic CS ("Theoretische Informatik" ... dunno what that's in english exactly), graph theory, expanded theory of sets and so on are exactly what someone doing anything computer related at a professional programmers and software architects level should know and be able to wrap his/her head around. Being able to algebrahicly express and calculate the complexity of a relational graph in a database is a level or two above simply discussing which goes in what entity. It's tough - boolean algebra is a particularly neat alien monster to tackle if your not into algebra that much - but it's doable and it ups your understanding of what you're doing in your everyday work and it does away with the fog that covers many deeper areas that IT people encounter every day and should know more about. This is the reason you should do CS if you'e doing IT professionally. At least a bit of it on the side, in Kahn Academy or something.
Point in case: I'm in a CS project group right now reimplementing RSA to learn all the n00ks and crannies about it. Very nice. Slow as hell and crappy n00b code by my 19 year old comrades, but we all (me included) learned new stuff. For instance: Asmetric is hard and demands performance, thus is only used to do a preceeding exchange of a symetric key before the show starts. That's why https handshakes take up 1.5 of the 3.5 second rule for loading and displaying websites. Now who without some CS knowlege is aware of this?
However, there is the other side that the GP mentions, and this is a very simple cold hard fact that CS faculties need to get into their collective head: The avantgarde of software development is not in academia anymore. The regular skills you're teaching your students are most likely sub-par and will be nigh obsolete once your students leave for the real world. Yes, there is the occasional Scala that comes out of a university and then gets some hype in the industry, but that only works if the Prof who invented it is in the industry himself aswell.
Point in case here: We're doing this project in IntellyJ Idea already (bad idea imho). The introduction into the IDE was sub-par and the Prof talked bullshit and wrong details about Git. I could've given his introduction on the spot and he would've learned some new things. ... That's because they probably only moved from SVN a few years back.
Kotlin is barely on their radar and it's already being used in the industry, in non-trivial projects.
Bottom line: As far as practical skills go, CS is too far behind the curve. I'm sure they are becoming aware of this and many a college is trying to catch up with close ties to the industry, but right now I learn more and better at local meetups than in class. Graph theory and math however I doubt I find some better place to learn that than at my faculty.
We suffer more in our imagination than in reality. - Seneca
Agree, we hire only CS majors now after stints with every conceivable engineering major.
We've gone from articles about how CS grads can't code to who needs CS grads. LoL
then you don't want a degree. you want crash courses or tech school.
a university degree IS SUPPOSED TO provide you with the 'well rounded' curriculum. and that includes the analytical thinking, logic and reasoning, and other stuff the summary dismisses as useless.
with your cs degree you should be better equipped to learn next month's flavor... but the university isn't going to teach it. they don't have to. a degree should have a longer lifespan than rails, ffs.
Many modern skills are ignored. "If you want to understand Node.js, React, game design or cloud computation, you'll find very little of it in the average curriculum... It's very common for computer science departments to produce deep thinkers who understand some of the fundamental challenges without any shallow knowledge of the details that dominate the average employee's day."
Luckily, and thanks God. Node.js? React? srsly?
Depending on what you want to achieve, I think the article has some points.
In my experience physicists are very-very smart people who are used to tackle hard problems, where also a partial solution is a celebrated result. This can be good, or bad. If you mainly solve one-time problems with software (i.e. your IT system is a concrete tool with a relatively limited feature set, restrained deployment and lifespan), then these traits are beneficial. It takes a shorter time from problem statement to results, and honestly a 99.5% solution at quarter of the price is quite a good deal.
However, if you plan to produce something that is developed, maintained, upgraded at several thousands of customers for at least 5, but rather 10+ years (i.e. your software/system is a product, and not a tool) suddenly the rigorous discipline (that was considered nitpicking by the management) pays off. Just chain 10 of the 99.5% solutions together, and let them run each hour of the day. The result is ~30% reliability at a single deployment! Suddenly the statement that someone is more interested in the correctness of the software rather then the results does not seem so bad right?
According to my limited experience, the solution is banal: mixed teams from different disciplines and backgrounds, CS majors included!
ive been hiring and in charge of development for the last 4 years and even with seasoned professionals i constantly see
* no logging
* over optimising unncessarily
your developer wont be good until theyve worked with you for a year
The problem with slashdot is that most of its users were bullied and stuffed into lockers as kids!
And they ignore that the cheap coders used so often today are already hugely expensive because of their low level of competence. Making this even worse will drive costs for software up, not down.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
There is a rise of Marxism and something that resembles Nazism in the United States happening right now. Part of the problem is the sheer size of the government. When the government promises you healthcare, instead of doctors, you know something is amiss. When a leader sees waste in the budget and simply adds more waste in an attempt to fix it, the result is a bunch of wolves deciding to eat the sheep for dinner, except the sheep are the competent who built a foundation for the society, and those people are replaced with those who wish to prey on society for their own benefit.
Computer science is about recognizing and dealing with complexity. Failure to do that right leads to applications that don't scale. "We'll throw more hardware at it" is the surest sign you need people who know CS.
This literally was the most idiotic article I've read in sometime. No wonder the author wrote it anonymously. Apparently CS majors are mathematicians, yea, well, I guess he hasn't seen the part where an undergraduate is no longer required to take the mathematics that was once required. I went into a company that had written close to 50,000 lines of code to solve a simple over-time calculation. It was extremely moronic. Their "best developers" from India with CS degrees had written it. All 22 of them. They complained to me their billing was always wrong and would never balance. That part of the code base was a disaster that I wouldn't wish upon anyone. Four simple piece-wise mathematical functions I derived and implemented in about 30 lines of code fixed all of it and replaced 50,000 lines of debauchery in about a day. To boot, I created a proof. There is no telling how much they spent on this stupid issue, but having one person trained correctly could have saved everyone a lot of time and money. I immediately returned to visualization systems, and asked not to be involved in those types of projects again. Amazing how management was dumb founded. I quit a year later. They ended up on f*cked company, then I started my own company. My belief, there isn't enough math taught in a CS degree now, let alone any other degree. When you're faced with a real problem, the mathematical tools escape most today. Pattern identification can only be taught through rigorous mathematics. My recommendation, don't listen to CIO's. Fire the CIO and get a competent COO. People have become lazy, entitled, and now believe the tools that built civilization are unnecessary. This is a real problem that unfortunately mathematics can't fix.
Getting rid of the few people who can still think sounds like a recipe for disaster, but feel free to try it.
... but my reply to this would be "I recommend that all my competitors follow that advice".
(it was someone from NANOG)
Seriously, please. Don't hire the smart guys, the ones that are really into it, that love all the bits and pieces, hire the useless drones that have heard that if you are a programmer, you get to sit on your ass and get paid. PLEASE.
between a programmer and a computer scientist is the same as that between an electrician and a physicist. For some jobs you the former for others the later.
You just have to know what is neededand that is a problem when you are just a business graduate.
Non-CS majors are likely not to recognize intractable (NP-complete) problems when faced with them. I have seen many non-CS majors who call themselves programmers ignore (or just plain not be knowledgable of) simple approaches / heuristics to solve these problems. Also, non-CS majors tend to be unaware of time saving solutions to problems and will often go for the "straight forward" or "brute force" approach which ends up being more costly algorithmically (the difference between solving something in O(n) vs O(1) can be horribly expensive).
I don't know why questions or assertions like this come up every so often within the community, but I find it deeply concerning that many people hold the opinion that CS isn't needed or that an institutional education makes you arrogant. By definition, someone who is intelligent is flexible and willing to change... if they are not, then it's a problem with the person, not the institution.
CS is needed. Make no mistake. If you don't have someone who is a problem solver and knows what they are doing on your staff, you're wasting time and, possibly, lots of money. There is a reason why Google looks for the best of the best from CS programs all over the world.
Gregory Casamento
## Chief Maintainer for GNUstep
" most businesses don't really need programmers to be deep thinkers"
This whole writing is a large pile of stinking bullshite. You don't need people with knowledge? There are plenty of those. You only need shallow coders for a short un-important job who'll move along after the job? Even more of those. Good luck building a company for the long term using such people.
Plenty of "programmers" and "coders" are out there with some level of lanuage knowledge, but what people like the writer above don't always realize is that they usually need people who solve problems, and the ones not being deep thinkers are seldom capable of that. The iidiotic examples about NP completeness shows how the writer is a bigger idiot that those people (s)he praises.
And the bashing of maths, arrogance, etc? It seems the writer is a disgruntled lunatic, toxic and unproductive. Someone I'd really never want to work with, ever.
I am putting myself to the fullest possible use, which is all I can think that any conscious entity can ever hope to do.
TFA is essentially a restatement of timeless question we always loved to harass our teachers with "When will I ever use this?"
The "quintessential" computer science class, which is more like a stage for the current lecturer to perform on, to woo and wow the students, and when they leave the class they have only picked up tiny scraps from a mish-mash of random topics.
No wonder American students are so behind that the big companies have to hire foreign talent on H1B visas to stay afloat.
Institutions breed arrogance. "...the very nature of academic degrees are designed to give graduates the ability to argue one's superiority with authority. "
Maybe that was the "very nature" of degrees from Trump University, but normally the nature and purpose of academic degrees (a.k.a. higher education) is to give graduates the ability to argue one's educated opinion with knowledge and/or experience.
And besides, modern society proved long ago you don't even need a high school diploma to give someone the ability to "argue one's superiority with authority." Take a look at any online forum ever created for evidence of that.
most degrees poorly prepare kids to jump straight into a job because they're not intended to do so, they're intended to give you the background/framework to learn quickly the specific skills you need for a given job and they "prove" that you to some degree are able to learn and work towards a goal
that being said, what would serve this nation's economic interests better is if we had more community college programs that are in fact specific skill oriented and made accessible to people of all ages that want to get jobs in IT
what would be especially beneficial is if they offered some kind of starter course in IT that shows students many of the potential tracks a career can take and evaluates them for preferences and suitability so that the people that just are never going to be programmers can figure that out soon before they've wasted 2 years finding out they hate it
The problem is that businesses need to get actually good CS graduates that use the subjects that are taught but rarely used. That they don't is why we have all the problems with software that we have now. The snobbery is just with Ph.D.'s, but that's not specific to CS. Theory does not distract, it informs proper engineering. Lack of theory and principle underlying most software is why there are so many bugs and security holes everywhere. You don't need to be taught how to use node.js in school in order to understand how to use it at a job if you understand how languages work in principle. Whoever wrote the article doesn't understand what the problem is that they need solved.
"I don't understand what you're doing so it must be wrong. Also I'm super great because I said so and you're not, so give me all of your money or at least work for very little."
Go to hell.
Why hire anybody? Shouldn't all IT work be done by unpaid "interns"?
Why should businesses be fouled up with the stench of CS majors? If they had wanted REAL jobs they should have done a business degree.
(PS not sure where my dripping sarcasm ends hurtful reality begins here.)
And yet not a single mention of the uselessness of MBAs. Funny how businesses. particularly tech based ones, fail to realize that they don't sell power point slides, they sell software based services, and yet the development staff is the least respected in the organization.
I think the article is far too one-sided, but he does have some points of sorts. A lot, and I really mean a huge lot, depends on where you are looking. For instance, in Vienna, Austria, the place I studied CS, there is a proud (?) tradition that the typical CS professor knows jack all about actual software development or programming. Because that is for peons, you understand - they are there for Better Things (tm).
As a consequence, CS curricula there are, while not totally terrible, not particularly excellent, either. You can learn a lot there, typically not from the professors (who tend to be Big Picture guys, and hate questions on what they actually do all day, or what their core competence is, aside from being tenured and getting paid quite a lot), but rather from some over-worked assistant or tutor who actually knows what they are talking about.
But there are plenty of other unis and countries where CS professors are of course fully aware that CS != programming, and where they do not discount programming abilities as a useful tool for a CS graduate to master. From my limited experience with U.S. universities, this sort of divide seems to run right through the academic landscape there: some unis are "hands on plus all the theory you want", while others are like the article portrays. And which is which is sometimes hard to say.
Degrees teach theory, not applications. This is great for theoretical sciences like literature and philosophy, but not as good for IT.
Apprenticeships are underrated, since most of what you need to know you will learn on the job anyway.
Too few CS majors know how to code from basics and "hack," or be adaptable, for lack of a better term. This is producing stodgy, insecure code that no one is aware of.
High turnover ensures organizational memory is lost.
It would be better to take intelligent people and send them to coding boot camp than to rely on academia. The same could probably be said of most of other academic disciplines as well...
Alternative Right.
I'd start with Equifax
throwing away the importance of modern math and CS theories is suicidal. Never had to do with problems due to rounding errors, for example ? Try fixing them without somebody with skills in CS and math! The author of TFA is probably somebody involved with the development of web interfaces, and we just appreciated the results of many years of progress in web development.
Having had to deal with the legacy of "someone from a physics lab who knew a bit of Python" or equivalent several times over my career, all I can say is that those who heed this advice will reap the "rewards" of it.
Writing computer programs is easy, any fool can do it.
Writing maintainable and efficient programs is difficult. This is where education and a creative spark are required.
They were stressed much in my CS curriculum. I could code circles around the coders that came from nonCS trained environs. I had no problem reviewing APIs for any of the topics mentioned in the article. Sounds like the author was a nonCS major and was outside looking in.
"He’s not really interested in delivering code that does the work as much as proving his code is correct. Okay."
So the code is proven correct. Is that good? I'd rather have code that "does the work". I do the work all the time. I do the best the work.
Computer Science is not the solution path for all computer related careers, not for all of those focused on programming real time tools, and especially not all of those related to business applications. Other degree paths are better for those points - namely Software Engineering (not necessarily Masters level or even Bachelors) and Information Systems (PhD/Masters/Bachelors). On the level of raw output talent itself is an optional input, since its value is in reducing time required for production; an alternative and potentially cheaper path for some programs is simply to divide the development into cogs programmable by anyone given a strict framework. That is the major demand as computer controls gain wider usage in other industries. Of course the high end innovation and research requires a research degree, but most uses are not that.
Lately I've noticed that courses have gotten better in college. However If your writing the article with the mindset of many useless electives that have nothing to do with the degree your pursuing then yes I could see his point.
Where do frameworks like Node.js, React etc. come from? Who can help to make JOINs screamingly fast? Who built the standard data structures that are fast and correct?
The article reads like "Who needs cow rearing and dairy processing degrees if you can buy milk in cartons." It is apparently written by someone who doesn't have the intellectual abilities to see the beauty and deep thinking that our modern world is built upon. Guys like the author would still be throwing rocks after squirrels to catch dinner if it wasn't for these "arrogant snobs" who carry stupid specimens like him along in their wake.
Management does not want to know the business process (or in other words they want to just sit around and do nothing).
So the Business only wants Business Analysts who can do a little IT.
Not for programming, buy it will be a good thing to have someone who already knows the company to take over when changing managers.
I run a group in a large organization that focuses on all matters of information security. When hiring, I don't ask about degrees, but I do ask and test ability to code. Based on my experiences not every CS grad proficient in reading and writing code.
I'm old enough that when I got into programming, CS degrees weren't really that common. Most companies were hiring programmers by giving aptitude tests and training people in house. I eventually did end up going for a university degree, after I had been programing for about 10 years, but dropped out after my third year because there was little relevant to the work I was actually doing and the skills I actually needed. For a lot of projects I worked on, being a virtuoso programmer was a lot less important than subject matter expertise. At one time most accounting software was written by people who were accountants that were trained in programming as a sideline.
I've found CS degrees are analogous to music degrees. Having a advanced degree in music doesn't make you Jimi Hendrix, but on the other hand if you want to be a symphony orchestra conductor or write arrangements, you're probably not going to get too far without one. But I've certainly met plenty of musicians with advanced music degrees who could barely play their instruments. And I've met plenty of terrific musicians who have had no formal training at all.
Likewise, there are talented programmers with CS degrees, but a CS degree is not a guarantee of talent. And there are plenty of talented programmers with no degree at all.
Personally, my programming career would have gone just fine if I'd never gotten anywhere near a university, but then, I spent most of it in corporate IT. I wouldn't have a clue where to start writing a search engine, but then, it's highly unlikely I'd ever have been asked to write one.
Whether you need CS majors or not depends on the work you need to have done. If you're going to develop compilers and OS's, then yeah, probably a good idea. If you're doing routine business applications, then probably not so much.
Cio recommends filling technician role with technicians....
Do Businesses really need to hire managerial/business "school" graduates? After all, can you name a single f-ing company that was started and built into something useful by business school graduates?
It's better to teach folks how to fish. A general understanding of a tool is more useful. The syntax of one language and the key bindings of one IDE has limited value.
There's a certain website that catalogs disaster in the IT industry. First two examples in the article:
Theory distracts and confuses: Lack of theory causes people to implement O(n^3) procedures when there's already a stock solution that does something default. In one case, someone managed to do an O(n^2) insert for a hash table.
Academic languages are rarely used: I haven't seen these "academic" languages either in the wild, nor in the classroom. However, users should still be able to port their knowledge over. Also, that site does document some esoteric languages (although giving them alternate names such as "MUMPS"), some of which are really wrapped around PHP.
When I jump to the last point to analyze it to sandwich the list, the article's starting to look like anti-intellectualism. I also see no solid recommendations on what the author wants - the intro starts with him saying that so many programming languages are a bad thing, but finishes with saying that "angular" and "react" - two different ways of doing JavaScript - are good. Reeks a bit of hypocrisy there.
It is a mistake to think a a CS major will be a good fit as a programmer in most businesses.
If you're writing something novel as a product and you have a group of people who have some experience building a product (this includes a lot of new CS folks, but depending on the schools involved not the majority) then you can absorb new CS people. Be sure to watch their code and their behavior -- it is very likely they will not see the forest for the trees and will need guidance.
If you'd doing work on existing code in a business, turnover and sensible worker-efficiency is your concern. You are much more interested in paper flow (and virtual paper flow) and interface design than how the machine works under the hood. You need the talent in house to avoid the sort of "write it in VB" reaction that computer-idiots come up with (don't just let the receptionist write your inventory system because he's interested in trying), but you do not need or want clever programming. You want older experienced hands. They often come from liberal arts fields. You do not need theory or math -- you need to be able to see how your code's behavior impacts the workers and how the internal structure of your code is digestible and maintainable by others in your team with different skill-sets than you. Yes, you want to avoid techniques which run fast with 30 users but don't scale to 3000, but you don't want the project run by only people for whom that's the really huge concern when the code is not going to have 300 simultaneous users.
Typically a young CS major is the last person you want on such a team. A CS major who has been doing business programming for long time and who has social skills is a great find -- YOU WANT THAT PERSON -- HIRE HIM/HER IMMEDIATELY. But often new CS people will be more costly in terms of the mistakes they make that you understand. This is true for new grads on most levels.
Experience programming can come to people with any major, so look for that experience, not the initial degree. Social skills and the ability to see through other people's eye are a little more likely in non-CS degrees, so keep that in mind when looking through resumes.
He sounds to me like he recommended hiring physicists for an engineering role, because he's unaware that software engineering and systems engineering exist. He thinks computer science is supposed to be programming.
A degree gets you in the door, Ability get you the pay.
For most kids, CS is a technical degree like accounting. Kids who get one are usually scared about getting a job and choose their degree accordingly because they're not the sharpest tools in the box. This is not true for the top 5% or so of them, but the lower 95% will never amount to anything spectacular. Don't hire them. You're better off with the top 30% of the liberal arts students -- they're smarter, more self confident, more flexible, etc. Get them to read CS books (Data Structures, not Python in a Hurry). The ones that work out will be better programmers than most of the CS applicants.
CS people from Stanford and MIT don't understand this. The vast majority of the kids who go to Iowa State or OSU and get a CS degree are unimaginative, know it, and are scared they can't compete. You don't want them as hires. Hire people who know how to read.
Look in popular culture for characters with a bachelor's in accounting or an associate's in business. These are the same people who get CS degrees at most schools.
Sounds like the author is completely unaware that software engineering and systems engineering are fields, and people get degrees in each. He thinks computer science is the degree for programming. Realizing that computer science teaches a lot that isn't programming, he suggests hiring a physicist who learned a little programming.
Maybe an analogy will help him:
If you want to design and build a physical thing, such as an engine, you get an engineer to design it. The *science* of how an engine works is physics, applying that science is engineering, not physics. Specifically, you want a mechanical engineer.
Similarly, applying knowledge to design computer-based systems is the job of an engineer as well, a different type of engineer. Either a software engineer or a systems engineer. The difference is that while an engine needs to be designed in detail, blueprints made, before it is built, for software the detailed blueprint *is* the software. You don't need the extra step of machinists physically constructing it after the blueprints are made.
Computer science is to programming as physics is to engine design.
Computer engineering, like mechanical engineering, is a degree that teaches you how to design robust, cost-effective things. Programs in the former, machines in the he latter.
I have only taken two computer classes in my 40-year career -- Fortran and Cobol. The first was for the credit in case I ever got a degree, I had already taught myself Fortran because I had already taught myself BASIC for a project in my calculus class (I was a math major) and realized I could teach myself far faster than the school can. I took COBOL because I was a computer operator and they wrote programs in COBOL, and I didn't want to stay a computer operator. Every other programming language I've learned since then has been on my own. Except for C++, I took an online course for that.
It doesn't take a CS major to be a programmer. It does take someone who can understand logic and I believe has spatial awareness, the ability to 'see' how chunks of code and external processes fit together and be able to manipulate them in their head. The best programmers I've ever met were musicians, and I think it's because the best musicians have a high degree of spatial awareness so they can 'fit' different parts of a piece together in their head.
There are different types of programmers. There are those that need a spec to get anything done because they aren't able to figure it out on their own. Some CS work will help with that, but I think at some level you can't teach it. It's like teaching me to play the piano .. I can learn where the notes are but I'll never be a concert pianist because I just don't have the dexterity and coordination. That's why I play the saxophone instead of the piano. Then there are the natural programmers that just get it, CS will help them get a job because it checks off a box in HR, but for the most part, they are very capable of learning themselves.
While I believe all aspects of CS can be learned on one's own, they can also be taught faster. Testing techniques, architectural designs, data designs, and a whole host of things can be learned by googling. But, if one doesn't know something exists, one may not be able to find it. A CS degree, at a minimum, should provide exposure to a wide range of knowledge that can be extended as one needs it and technology changes. Let's face it, while we may have come a long way since I wrote assembler, deep down inside, it's still all ones and zeroes, registers and memory.
Idiots abound, both untrained and trained. If companies were more focused on hiring smart people, paying them well, and then hiring the next level down and letting the smart people mentor them and give them the tedious tasks, we all get a lot more done.
Regardless of what degrees they have. Degrees don't mean squat, one has to actually talk to someone to figure out if they know anything.
This isn't mean to disparage learning things, I'm only saying the HR department needs to look past the degree to the person before making decisions. I've known very smart people with and without degrees, and the same goes for idiots.
I'd rather have smart non-degreed workmate than an idiot with a degree. Ok .. I'd rather have a genius with a degree, so the actual order is:
1. A genius with a degree.
2. A genius without a degree
3. The rest of the idiots for tedious tasks, a degree is irrelevant.
I rarely read replies, it's my opinion and if you thought about your opinion a little more, I'm OK with that.
Sigh. I hear this argument often, but its not true. You don't need a separate person as an architect when your project is small. Do you need an architect for putting together the barn behind your house? No. But its not because an architect isn't needed. Rather its because, building the barn is such a small problem that the builder (programmer) can perform the trivial architecture piece all by themselves (in most cases, in their head, without needing to formally declare it on paper).
It takes a while before college graduates deal with the big problems. Until one understands that big problems come with challenges that require a different approach, its hard to understand why an architect is needed. To go back to the example of the parent post: the architect isn't specifying how exactly one needs to implement the code. It is a false argument to say that they are taking away anyone's flexibility in that area; this viewpoint makes it clear that the poster doesn't know what an architect does. To go back to the building analogy: suppose the customer comes to the builders and say that they want an office building. Who gets to make the decisions on what it should look like, how tall it should be, how many entrances and exits, where does the supporting infrastructure (pumps, networking and telephony equipment, etc) go? Its not the builder or the electrician, or the brick layer or what ever the trade is. They are not laying down the vision of what to build. The architect - whether it is civil engineering or software engineering - is describing what it is that you need to implement - not how. An architect is NOT a lead developer. If you have to blame someone for taking away your flexibility in programming style, blame the lead developer.
There is no such thing as luck. Luck is nothing but an absence of bad luck.
And a CS major will likely not work as a programmer.
But they can hire CS majors in different roles. Architects is one place but there are many positions that are above the programmer.
Never hire more than 10% in any single degree for any role.
Companies need people with different skills to make the best choices, best products, best profits.
That includes CS, engineers, history, English, Math, psychology, law, and a few others like sales and marketing.
Give me a sales/marketing guy who can code! I'll put him with a CS major and step back.
node.js is web scale, if can be used for any problem, mongodb for life!
This needs to be repeated: "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
I don't have a CS degree and know more than many CS people do. I never finished college. There is this mentality that there is something magical about a university campus that you can only learn things there rather than anywhere else. I know all about hash tables, parsing algorithms, math, 3D programming, b-trees and all the rest. Rather than just knowing how to write a bash script, I do know about underlying computer science theory and concepts. I am not using SQL without having an underlying knowledge of how the data structures work, the performance trade-offs, and so on, In fact I know more than enough to write my own SQL server if I needed to. So I do have in depth knowledge, rather than just shallow knowledge. I know assembly programming and CPUs work on a very low level. I could write my own operating system if I needed to. Since I have never been to college, none of this should be possible according to the University Lobby, because there is something magical about the piece of ground the University sits on that they have an exclusive monopoly on such knowledge.
I have never once set foot in the CS department of a university. Universities do not have a monopoly on knowledge, and should not. In fact, the fact is Universities are indoctrination centers and do promote dogma. Going to a University, you are mindlessly imbibing and regurgitating facts on demand, some of it you will never use or need and some of it which is propaganda and manipulation. Garbage in, garbage out. Education is a way of live, its not a place, a university campus, or whatever.
You go to a University and you spend years learning things you will never use and things which you could learn on your own for a fraction of the cost. It takes years of of your life. 4 years is a long time to spend without any real income, thats a big chunk out of you life that you cannot get back. I think people should be able to start living life at the age of 18 and that means you have a well paying job at that point, it means you are married, you are having your first children, raising a family, in your life career, maybe with an apprenticeship so you can start learning and making money at the same time, and that we can use a mix of apprenticeships and self study for people to learn. As people spend several years at their work, they accumulate more raises and income and seniority pay.
Until one is married, has a family, is in their life career and supporting them with their own income, they are not a man or a woman, they are still a child in adolescence. Becoming an adult means you take responsibility for your family and begin to raise a family and other things an adult does that really keeps the world turning. College is in many ways a disease, its responsible for pushing back adulthood well into the late 20s and even 30s. Expensive 6 year masters degrees is why we still have depressive, unfulfilled young people living in their parents basement (yegads) at age 30. It is truly a perversion and corruption of things.
I view Universities as a scam and that the University lobby has a vested interest in pushing the idea that everyone has to go to a University because it is their business model. The only people that might need that kind of environment are doctors but that is a specialized field with highly specialized requirements.
It may be surprising to many that it once was the case that all sorts of professional people never went to college, back in the 1700s and 1800s. Some of our founding fathers (in the USA) never formally attended college and were self studied, being raised in highly literate families, educated by relatives and their parents, with personal family libraries that encourages their children to self study on their own. Many parents who were a lawyer themselves would personally instruct the children on their trade and their children would learn it from their parents.
I can understand why CS people might be apprehensive about this article, After you spent $200,000 for a degree to learn things you could have learned
I dropped out of college to get paid. I was much more likely to produce what was needed to keep the paycheck flowing than I was to do schoolwork that felt disconnected from the real world. While you were in school I was taking low paying tech jobs in places where I could work with talented people. I did the equivalent of a software apprenticeship. I had good mentors and I worked on a variety of problems. One does not need college to produce great software and be very successful.
trades / apprenticeships can work good in tech vs theory loaded people and the trades / apprenticeships people are not 60K-80K in the hole when they are done with school.
Some positions di require a very specialized skill set, but in many cases, no they don't really need to. The highest graded CS grad may be, and definitely sometimes is, worthless in the real world. The same goes for many other jobs and degrees.
dunning-kruger also predicted your post, as it also says that people that believe they are more intelligent tend to overestimate how much more intelligent.
Just because you have a degree doesn't mean shit. CAN you actually do it? That's the real test. All this is just talk. I'll ask the guy who actually fixes shit, degree or not, for advice.
I started out as a computer operator with a company. I wanted to get into programming, but they would allow me the privilege. I went to another company as a computer operator, expressed a desire to be in programming, and they moved me into programming 9 months later. I had self trained myself in IBM Cobol and assembler, but had no experience with actual programming. There wasn't any training given to me upon being sent upstairs, but I just asked a lot of questions about errors in my listings to people who were willing to help. It took about two months to become proficient in coding. A degree in CS is definitely not necessary if a company has a training program in place.
It really shows a lack of knowledge for the field. Saying Computer Science Degrees suck because there are many fields in that area. I did one, granted it was an AA, in Network Design because my local community college offered the Cisco Networking Academy and a couple more classes and I had an AA out of it. There are also 4 year computer science degrees in Security, Network Operations, or many other fields.
It really depends on the type of programming/systems work that needs to be done. Full stack development is different from back end development, which is different from database development, which is different from business logic development, and so on. Each of these require a different set of knowledge and skills.
Overall, you need the ability to think logically and to be able to understand how the entire system works together.
For some tasks, such as analyzing/implementing business logic, an understanding of the business itself, the ability to manage people, expectations, and timelines, and good communication/documentation skills are paramount. If you're working within a system that is designed to hide away much of the technical cruft, allowing an employee to focus on business logic without the need for so much technical knowledge, then I suggest that a non-stem major, such as an English or Business Management major, can achieve the best results. A CS major might feel out of place, and become frustrated at not being able develop some of the more technical skillsets.
For other tasks, such as those that build up the system that ultimately supports the business, you will need specialized database knowledge, set knowledge, scaling knowledge, systems design knowledge, and so on. For those, a CS, Math, or Systems Architect major can achieve the best results.
One trend I see in corporate CS is the fact that some companies are becoming frustrated with proliferating technical skillset requirements, and are trying to disengage themselves from the tangled technical web many systems become, even going so far as to develop their proprietary own in-house programming languages that require very few industry-standard technical skills to use.
is what separates anyone who can do something with a GUI and the really smart person what can do it faster and with much less cost.
The "mathematicians" are the people who suggest that buying 100000 consumer CPU "computers" and some "networking" is not going to be the best, easy "super" computer for a set math problem.
Math is never going to "distract and confuse". Smart people hired on merit will save a company by knowing what to buy, what to use, what to rent. What will work on a CPU GPU, what problem needs a very expensive hardware product.
Re "average curriculum" never hire from any nations "average curriculum". Hire only the best who could study and want to study. Who could pass their tests, exams and who can take in new education.
Look over the past of your workers.
Can they study? Did they study to get into university? Pass their tests? Exams? Work to a really good standard?
Find someone who can bring something great to your brand and grow your business.
A person who can understand and talk about theory can take in more education.
Can learn and work well with "academic languages". They will do the same with any new "languages". Just as quickly and to a great standard.
Mathematicians will understand what average people need years to learn about. That give your brand an advantage. Hire more mathematicians.
Re "required subjects" Workers able to show they can do "required subjects" can then do new "subjects". Thats great when needing to learn new things.
Institutions breed the ability to study and learn. Then give that ability to any growing company. Win, win, win.
Some new emerging "modern skills" can be fully understood by anyone who can study and learn quickly. Kind of what skilled people showed they can do for years to a very good standard.
Domestic spying is now "Benign Information Gathering"
At the same time
- the article will appeal to the CIO readers who wonder why that job is so hard and complicated.... surely not really and so will be read
and
- the article is completely wrong as this person is writing for CIO mag and why cant a cookery writer do the same or better for less - indeed why is there a CIO mag at all
i mean "be careful of that academic language" don't hire people "who are trained to argue their ideas to authority". We don't want that in professional settings.
Just another second banana
People who don't have a degree, and want a job, will of course argue that you don't need a degree to get the job. I observe that the summary accused degree-holders of arrogance and snobbery, and further stated that what they know is out-dated and irrelevant. It all sounds like the natural reaction of someone who was turned-down due to a lack of a degree, and who finds it easier to fling shit than to go get one.
I don't have a degree, but have helped more "degree" robot people through university than I have hairs left to pull.
I don't bitch about "getting" a job though. Begger attitude. I made my own business, and only hire people with passion. Which very much *doesn't* correlate with having a degree.
Most people seem to see degrees as something to make them money, because they haven't found what they are passionate about, and cling to money as a sad means to seeminly give them worth.
VBA has better built in math libraries than python, c++, or java, and its about 11x faster than numpy for small dense matrices. I'd rather have MATLAB or eigen but I don't always get to pick my tools and then VBA is there to help.
refactor the law, its bloated, confusing and unmaintainable.
If businesses want to build themselves around unqualified hacks, go for it! As a classically-trained programming heavyweight with lots of practical experience in industry who runs their own consulting business, this is great for me. The bigger & more desperate the mess clients are in, the higher the rates they will bare to bring me in to fix it! Race conditions? Scalability? Crashes? Profit!
Because that is the part where practical medicine usually falls flat on its face.
They just redeclare "cured" as "Lifelong addiction to a drug that merely masks the symptoms. Badly." and "Cut away the ill body part, like it's the freakin dark ages.".
When you see real cures, it is usually some university hospital or straight-up experimental research.
Antibiotics are a rare exception in that world. We can't actually cure much yet, and havr barely left the dark ages in that aspect.
So call me when we get cheap non-profit individualizes gene therapies and other propet cures for the average person.
I'm not a CS major;I'm self-taught. People look up to me, and they should--- I'm pretty impressive.
I look up to two people in my company. They are CS majors. They are gods. They are the only people I ever go to for advice.
Pretty much next week's headline after all the STEM promotion bullshit fails and lefties seek an explanation other than "people do what they want"
From the job markets I've seen, the different fields are now "Big Data" with R, Hadoop and ML for data scientists. For anything involving parallel processing, HPC and mathematics, the minimum qualification is a recent PhD in physics. A regular CS degree will get you relegated to IT or embedded (microcontrollers).
I don't know this idiot's skill set, but definitely isn't Comp. Sci. You might as well have a non-doctor telling people that medical professionals aren't necessary.
There are licensed electricians, who electrocute themselves, there are drivers with drive license, who kill themselves in accidents, there are people with CS master degree, who have no idea what to do with it. ;)
The good thing it is less harmful than with drivers or electricians
When I got my degree, they were not giving out Computer Engineering degrees. Not really.
When you look at all I do, you wonder where it all came from, part Mechie, part EE, part Software Engineer. All Engineer. All CS degree. The rest? SELF TAUGHT. I started out as an EE, washed out because of the way they taught the math, went into a much more math intensive space and I get EE's and ME's asking me where I got my degree- not being ugly but in wonderment, trying to see where that magic CAME FROM. It's all in how you manage to move your mind, much like a body builder builds up their muscles.
You can only SORT OF teach a mindset. It's either there or not in it's infancy and engineers are born as much as educated. You can teach someone how to move their mind WITH it to mediocre to great effect. It's pathetic and stupid to make claims such as his (or yours ...which is unsurprising as this *IS* /.) because it's so damned wrong it's embarrassing to see supposedly and allegedly intelligent people making this crap up as they go like this.
There are a very wide variety of things that get bundled as "software development". Some are extremely simple and repetitive and required little background. Some require a lot of very specific training for a specific job, but are otherwise simple. Others are complex is a variety of ways - complex architecture, complex algorithms, complex interfaces.
Add to that the some CS graduates are exceptionally good, others manage to get out of school with very little knowledge - similar to other fields. Some self taught "physicists" are also very good, others are terrible. The good ones though usually command rather high salaries.
It really boils down to managers needing to know enough about a project to hire a person with the right skills FOR THAT PROJECT, and of course with an eye toward any future projects.
Kind of like how not everyone needs to hire someone who designs programming languages or builds compilers, right?
Studying programming languages and compilers is important. Such a foundation to build upon is how we CS grads can easily learn and switch to whatever "new" language is the flavor of the moment, while writing decent code that has some understanding of the limitations of the underlying architecture it all runs on.
Not having such a foundation can lead to those degenerate situation where "fans" of a language try to use it everywhere for anything and require 3 GHz quad core CPUs and 16 GB of RAM to accomplish relatively simple things.
In short those CS classes and projects teach a young developer there are many ways to do things, a wide variety of tools are available, some tools are better for some tasks, and they learn a little about what happens at the architecture level where all the levels of abstraction have to meet and execute on the available hardware.
Now can a young developer learn these things outside a formal degree program, sure, but very few have the personal initiative to do so and most need the coercing of the university. And the direction of the university as well since many of the seemingly "unnecessary" classes actually turn out to be useful.
If you think a CS degree is limited to complex problems and inapplicable to modest projects, you are mistaken. CS and other degree programs are a foundation, and with a stronger foundation the personal study one does and the experience one gains will be more effective. Again, its just starting on day one with a bigger toolbox and more tools.
And for the record, I've gone both the self taught and formal university route. The former is not a replacement for the later, the two are not mutually exclusive, and the CS grads that have an inherent interest in software development (as opposed to those who were told its a good career path) likely have practiced the former as well.
Oh wait ....
I've worked for two multi billion dollar companies that had severe problems due to performance issues with large systems that didn't follow good C.S. principles. Having a degree allowed me to fix those problems with relatively non-invasive changes.
Excel doesn't scale well.
An Excel spreadsheet rewritten in Java doesn't scale well.
Big (O) time matters.
The number of heads matters more than platter speed under heavy random load.
Likewise, the code I wrote became cleaner and easier to maintain every release. The code written by non C.S. coders tended to get worse every release and would have even passed a code review if I'd been able to get the business to do it. This meant after a few releases one set of software was increasingly unstable, generated a lot fo after hours on call and unscheduled downtime. The other set of code was stable, responsive to new customer requests, etc.
The only problem I had was when non C.S. people asked for requests which I knew were impossible. It was difficult to explain why it was impossible to them. They didn't really require C.S. They just required basic logical thinking like you get in your second year math courses.
I have no axe to grind on this issue- I've been retired for years. These days, I just do occasional massage on crippled programmers. But I was a fortune 500 manager over 15 developers for about the last 8 years of my career.
BTW, retiring was the best decision I ever made. If you love your work more than anything- by all means do it. But if you love other aspects of life then quit as soon as you have enough money to do so.
She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
The Catholic Church continues to be in deep trouble with minors and moles are generally also not good in an organization, especially at embassies, so that leaves only the majors.
To quote Wolfgang Pauli
The article reads like it was written by an executive looking to justify getting rid of the company's current programming staff of degreed in-country programmers so they can hire a bunch of cheaper, offshore, less trained programmers.
The author has not idea how programming works - they mention that "nobody uses data structures anymore, they just throw it into a hash table or database", but nearly every program I know needs morespecific data structures because they are not operating on a mass of identical data, but on things with varying ages, priorities, regions, etc, etc, etc, so the data needs to be structured to allow processing in specific ways.
All of the comments about 'theory distracts' and 'academic languages' are also signs that the author has no useful experience in developing software for real systems.
This is the real problem. CS as a fully accredited degree is not networking, or programming, or database administration, etc.
Those are either Trade skills or applied Engineering. That's why a degree which sets you up to design chips and motherboards is an Engineering major.
We keep seeing applicants who claim to have a CS degree in Networking. That's not really a thing... it's some community college or online degree mill using the term CS to attract suckers and justify the price increase as compared to something like a CCNA Bootcamp.
Some of it is spot on. My CS department is divided by CS and Software Engineers. Points to remember:
0) Parent post.
1) Computer Science was 1st and is prestigious so market demand has pressured the degree to morph into Software Engineering rather than fade into obscurity while Software Engineering becomes the popular desired degree. As a result, older CS *tend* to be math, younger are SE. Today's modern CS program is nearly SE; where a few required courses are are out of the CS/Math area unless your one of the rare schools which has SE and CS and differentiates them more. Naturally, there are people trying to preserve CS and obviously SE needs some CS oriented courses along with Math, a Science Lab etc.
2) CS is important and the math theory nerds are incredibly valuable and this work has and will be largely done by academics. Professors do not simply share knowledge with students. How can be people be so ignorant as to think that they are like high school teachers? Non-research profs are supposed to TEACH (while research types just share) which is an additional area of applied psychology. The confusion between these 2 subgroups continues in the culture and system. Not that a great deal of education expertise is needed since students are supposed to be capable; however, given how college has been trending away from the intellectual elite to the masses more emphasis on education expertise... another topic.
3) This attack on academics needs to be stopped by anybody who respects teachers! It is YOUR job (the reader of this) to defend them against the anti-intellectual assaults trending in the culture. Educators have training besides the topic they teach; it is NOT easy or well known how to train everybody's brains on every topic. You can't just plug in an uplink like The Matrix; even then you'll need some trained person to strap the brats into the uplink machine properly.
4) The article reads like the commonplace foolish opinions that continue to plague the industry. This is why many posters will point out that the cause of many problems today is because of this ignorance of the details of the profession... akin to "I've been to the dentist a lot; therefore, I know something about dentistry. It's over rated..."
Democracy Now! - uncensored, anti-establishment news
It costs more than it's worth and the only thing that comes out of it is Marxists. Anything worthwhile that comes out of it is usually an accident. When the education bubble bursts you'll be able to hire former CS professors for pennies on the dollar.
I've been to college, have extensive degrees in a wide variety of subjects,have taught college classes, and have been in the IT field 40 years.
College is for dumbasses. It is political, it is for the masses - and thus gets dumbed down every year and every decade to allow them, and is generally for that sort of stupid person that wants approval from others and certification, because they are too incompetent to not need something fake to sell others. It is likewise for those that want to control others and tell them you can't do that without our approval!
You can learn and gain skills much faster on your own, and lately much much faster. The number of people saying otherwise on this thread categorizes them to me for exactly the type of person they are, and it follows the general decline of slashdot over the years.
See subject: Per a field-grade officer (my bro) training for it (SQL)! Told him 'basics' of watch excess JOINS, go for small return temp table sets 1st & keep 'sieving' from there, indexing pertinent fields, etc. - et al (+ security-side).
* IF I weren't retired since 2008 I'd make 250k/yr.++ (was my title w/ software engineer)
I also know it via a job offer @ Apple (via a relative who controls iOS/MacOS X builds) via my experience in BOTH BUSINESS + CS (degrees in MIS + a 24++ yr. career in SQL/Delphi/C++/VB/Access etc.)
APK
P.S.=> I would IF a business of mine didn't eat my time w/ coding https://tech.slashdot.org/comm... I'd be BACK OUT THERE doing it (& can @ ANY time I like really - was a career & degree track WORTH pursuing)... apk
The theory taught in CS courses has plenty of application and there are plenty of CS people who can overcome the limits of their education, however a high density of CS degrees in a software development team has often in my experience correlated with problems.
Then you have not learned how to differentiate between the CS grads who chose that degree program because they had an inherent interest in programming and those that chose that program because a parent, guidance councilor, etc told them it was a good career path.
Here's a simple way to tell the two apart. Has the recent grad written *anything* unrelated to class assignments? I don't care what their personal project was, sometimes I have to coax it out of them because they think it too simple or too stupid a project. But they are mistaken, all I am really looking for is that they had some sort of personal curiosity or "need" to sit down and write some code that was not an assignment from a professor, a boss, etc. Something purely for themselves.
Your "overcome the limits of their education" comment is misguided, you don't understand a good CS program. Learning to program is left as an exercise to the student, they are expected to learn, outside of class (maybe there is a TA session to help), the necessary programming language to complete assignments. Some do the absolute minimum, these are the "ticket punchers" who take the class to get the degree to get the job, they aren't really there to learn. Others will be more thorough in learning some programming language, will start to think about problems beyond the class assignment, may try to code up a solution to one of those on their own initiative to satisfy their curiosity as to whether they know enough to pull it off, etc. These "stretch goals" are actually expected and encouraged by the good professors. What you think is some extra work they have to perform to make up some shortcoming is actually work expected by the professors, the "exercises" left to the student on their own time.
Now if you want to rephrase your argument that the less capable students are allowed to somehow skate through the program and graduate that is a valid complaint. But to think that good CS programs do not produce good programmers, that is misinformed.
After all, they have lots of courses of material on managing hiring planning...
Software engineering is the art of using computers and scientific principles to design computer programs by putting together prefabbed Lego bricks. In the twenty-first century, that is still just a dream, and who would create the Lego blocks in the first place.
Until that time, computer programming is applied mathematical research, which explains why it so often takes longer than planned. Einstein's theories were not exactly delivered on schedule either.
My only complaint of CS majors is that you guys please stick to theory and math. Please donâ(TM)t lecture engineers on how things work in the physical world.
Actually the theory is quite useful and helps in the real world. An example from molecular visualization prior to ubiquitous 3d hardware, i.e. software based rendering days. A "non-theory person" quite familiar with the language and standard library used the built in sort function to get a z-sort of atoms in preparation for rendering. The "theory person" with the theoretical understanding knew that the appropriate sorting algorithm would depend on the current data, which from one rendering to the next would be mostly sorted. Knew that the commonly stated run-times for various sort algorithms assumed random data and were therefore erroneous. A quick check of references showed that for mostly sorted data the standard library algorithm was actually a quite poor choice. The "theory person" implemented a more obscure sorting algorithm with excellent performance given the nature of the data and the atom z sort code dropped off the profiler hot spot list. After many such improvements of the code, at an industry trade show, various visitors to the booth were surprised that commodity PC hardware could offer such visualization performance.
The better programmers understand the practical elements of the hardware and the programming languages *and* they understand the theory. I know engineers who built things sitting on the moon today, they understood the practical and the theory quite well.
Sounds like the author is completely unaware that software engineering and systems engineering are fields, and people get degrees in each. He thinks computer science is the degree for programming
CS is the degree for programming in most places. Most universities don't have "useless wankery" degrees at the undergrad level in CS.
TFS doesn't make clear what the complaint is. Most grads in the field know Java and JS, which is what most programming in business is sadly done in, so his complaint is confusing. It's not like you get a grad who only knows Scheme or Lisp these days.
Is he really upset that it's hard to hire a CS major to maintain his VBA macros in Excel? I thought everyone knows you hire business and finance majors for that.
Socialism: a lie told by totalitarians and believed by fools.
If you want to play in a symphony orchestra, they will expect you to have formal training in classical music, even though Mozart gave concerts at the age of four. If you want to play in a punk-rock band, there is no such requirement.
A piece of music can be liked by the listeners without conformance to theory. The 'anything goes' approach of Dada poetry and punk rock just doesn't work in programming.
OK, I used to Apple once. They asked me to design a niew piece of software, but my theoretical knowledge was insufficient for dealing with unstructed information. Later someone created similar software and called it a search engine. (you would need a billiion MacIntoshes to build one).
Hiring the ignorant is always a better solution
The article indirectly brings up issues worth discussing; but it was likely the article author lacked any depth of understanding. Especially the idiotic industry complaints of MBA types who are trained to EXTERNALIZE ALL COSTS -- employees do not get training, it's their problem and it's the schools problem etc. A competent employee will train themselves in specific details like tools/languages but they want that for FREE, to the extreme of not even planning for learning on the employee's own personal time (which should be a crime) they want people who already have 5 years experience level skills in technology X (which is 2 years old.)
We NEED competent engineers to do everything... get don't get enough of them.
We WANT scientists but we do not need them unless we want to progress forward.
Science invents new kinds of engineering and makes existing engineering better. It has an indirect impact and it's a multiplier in that just 1 scientists and change the whole world. They rarely get noticed and the masses wouldn't even know about science if it wasn't for all the hype -- and I say hype because the masses can't see the massively important impact science has; they only see the hype and to their perspective it's hardly different than all the other hype. So I can see why an ignorant slow person can't tell the difference... and try to do my part to hype something that shouldn't NEED the help.
A Software ENGINEER with a proper education will get some CS training and Math needs to be a big part of it... not more than English/language skills... don't take me wrong, I'm in the USA, Math skills are behind; if Math skills were at the proper level then an equivalent amount of Math and English would be required for the SE degree.
We should still have CS majors, but they probably should go back to their Math Dept roots as a small niche. This would keep the real scientists away from the engineers; it would help both do better. We don't dilute physics by making it cater to mechanical engineers. It is separate and does science that spawns new and better engineering specialization.
We have CS majors from crap schools who are barely competent at software engineering. It would help to at least separate the two areas.
Democracy Now! - uncensored, anti-establishment news
No everyone wants trade school kids even if those skills are going to be what you start with for the first few years.
You make your own SQL database, your own operating system... But can can mine your own Gallium & Arsenic to produce PNP-transistors & build the CPU? At some point learning from others is worth the time savings. Issac Newton once said he developed Calculus because "I stand on the shoulders of giants."
Second time in two days I've had occasion to post my favorite Master Foo story:
http://www.catb.org/esr/writin...
(the story doesn't say anything about PhDs, but it does talk about elegant)
I've met/worked for a number of CIOs. Some of them are competent, many are not. The worst ones are the ones who don't really understand anything about computers, programming, or even IT in general.
We study science (including computer science) so that we understand how the world works. We study engineering (including software engineering) so that we know how to apply science to solving problems in an effective and efficient manner. Not everyone needs to be a scientist or an engineer; many people are excellent mechanics (or programmers) without a higher level of study. But hiring the right person for the job depends on knowing what is needed to get the job done, and a hiring manager who doesn't understand this doesn't really understand *their* job.
A computer scientist *may* also be a good software engineer, or a good programmer (or not - it depends on their interests and their training). A person trained in another discipline altogether may have picked up enough knowledge of computers that they are a good programmer, but it is unlikely that they are a good software engineer or computer scientist unless they have had years of experience performing those tasks.
CIOs are often business people who fell into managing IT departments (the worst [in my experience] are the finance folks who "own" IT because finance depends on computers to get their jobs done). The smart ones know the limits of their knowledge, and use domain expertise within their departments. The others cuss and fume and have generally antagonistic relationships to the people who work under them because they really don't understand what they are managing.
a programmer how to do engineering.
I got my degree in Mechanical Engineering. My whole class had PCs with DOS, Basic, Fortran and 8088 cpus. And access to Vax/VMS sometimes.
In heat transfer, we coded a Chebyshev differential equation to figure out the optimal thickness and spacing for cooling fins. It would take 30+ minutes to run at a minimum. Or 8 hours if you were way off. You learned a bit about better algorithms and speed when things took so long.
It's not the kind of thing I'd expect a programmer to be working on. And the engineer isn't going to be able to solve it w/o programming because of the thousands of number calculations that are needed.
Agreed to a point. Enlarging, if you just want a privacy fence you don't hire an architect, an engineer, a general contractor, and a work crew. You just hire one guy who probably doesn't have a degree in anything and he hires a couple helpers and they put up a fence. You certainly don't hire people degreed in materials science and physics.
Likewise, you don't need to hire a EE to put a dimmer switch in your dining room. You don't hire an ME to figure out why your Ford stumbles on acceleration.
The guys who install home theater speakers aren't acoustic engineers.
Part of the problem is that we often confuse Computer Science and Software Engineering. We actually need a lot of the latter, but a lot fewer of the former. Just like we need a lot of people who can install satellite dishes than radio scientists.
If you need an engineer, get an engineer, not a scientist.
So I'd need a structural engineer to design the bridge spanning the internet between the independent networks of my field and home offices?
--- Keep the choice with the user..
I'd guess the issue is defining when programming knowledge/skills trump subject matter expertise for a particular job, and/or which side is easier for someone to come up to speed on.
Realizing that computer science teaches a lot that isn't programming, he suggests hiring a physicist who learned a little programming
He could be dealing a lot with 2-3 year "computer science" majors from community collages and India. If education is mostly worth fuck all, people start assuming all of it is worth fuck all.
Well this is typical criticism of someone that doesn't get what academia is about. It is not about learning a skill but about learning how to use your brain to understand something. The ciriculum is a random tool to do develop that skill. These days especially in the US kids are being sold university degrees which are nothing more than courses that might turn out usefull. When I was a student 28 years ago we where put through rigors in order to get our brains in a higher gear.
Is why so many companies have data breaches. They hire people who don't know what they're doing, but can jury rig a bunch of crap together so it looks like its working from the outside.
Shortly after I graduated college I found myself hacking SQL databases. A colleague, and I use that term very loosely, was given the task of finding the duplicated in the ID table. Simplifying things further, he was told what constituted a duplicate; Same phone number, same address, etc. (It wasn't a very well designed database schema, not exactly "normalized".)
Anyway, he comes back and says that it "Can't Be Done."
Oh crap. What did you do now?
Turns out he joined the table onto itself, a Cartesian Join, creating a temporary table with N^2 rows and each row twice the size of the original table. Then, in this giant table, his code attempted to find the duplicates. He actually took down the database process on the mainframe, filling up all swap space & /tmp. They almost had to reboot the mainframe. It was some years ago. A million rows times a million rows is a trillion.
Christ man, that's O(N^2). Just use an O(NlogN) or O(N) approach.
He had no training in Computer Science. He had no idea what I was talking about.
I had to write his code for him. It was 5 lines of code. Just a Group & Having clause, exploiting existing indexes to get it down to O(N).
He still had no idea why my approach worked and his took the system down.
And that, my friends, is why you hire a CS major.
Of course, that fellow didn't hold a candle to another guy who decided to implement a heavily threaded system without mutexes, because he tried it without mutexes and it worked just fine in his test program.
Hire amateurs, and you get amateur results. Hope you didn't bet the company on that...
Czech support is best tech support.
At the heart of the matter is the fact that most businesses don't really need programmers to be deep thinkers. For them, it's "just as worthwhile to hire someone from a physics lab who just used Python to massage some data streams from an instrument.
The hilarious part here is that the author is implying that a computer scientist is a deeper thinker than a physicist.
Personally I much prefer to hire and work with English, Philosophy, and Physics majors on programming projects. CS majors are rarely an asset to a team, often a liability.
English majors understand the importance of _naming_. Getting your variable and function names right is (usually) far far more important than choosing the "right" esoteric data structure. Clarity is essential for maintainability.
Philosophy majors (sometimes) have clean minds. Nothing matters more if you want the output of the program to be consistently _right_. Note that, precisely because they have clean minds, most Phil majors are completely useless for frontend work.
Physics majors are just generally smart, and usually can't find meaningful/remunerative work in their chosen field. The nation's failure & the public's loss is my company's gain.
There probably are some CS majors who are actually competent programmers. I haven't met them, but I'm sure they're out there. They probably work for the _next_ Google. But so long as most startup companies insist on paying permanent-renter wages, all we're going to be able to get is smart people who can't find work in their actual fields of expertise. Yay financial capitalism!?!
I've worked with these scientists that need a little programming. It makes no one happy, the programming is lousy and the scientist is dismayed at not doing more science. I've got one guy who says "I wrote all the code, I just need you guys to clean it up and integrate it into your stuff", or "why are you designing that piece, I already wrote it!"
Let me tell you, some of the worst programmers out there are physicists. It sometimes seems like they even forget their math as they complain that their exponential time algorithm takes too long to run.
There should be a variant on Betteridge's law where the question is so vague it barely achieves the level of retarded and thus, despite what your third grade teacher said, it's perfectly proper to reply with another question.
So perhaps it depends on the nature of - you know, like the shit and stuff - that the business kinda like sorta does?
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
The goal of a higher education is not to teach you to do something, but to teach you to learn how to do it — and other things like it.
Had the instructors taught the immediately-practical things, as happens in vocation schools, apparently, we'd have to go back for a retraining for each new language or programming paradigm. Using the "academic" languages encourages (and coerces!) learning of multiple things...
In Soviet Washington the swamp drains you.
If CS Majors where involved with Nodejs, they musta all not paid much attention. Nodejs and all these new frameworks keep recreating problems that have already been solved. The ignorance of these modern programmers is reaching Idiocracy levels.
Oh ya, when I was in CS, we did not have classes devoted to programming, except for an intro Pascal class and later an assembler class. After that point you didn't get more than maybe a first week of learning the new language and maybe some TA sections to help out more. The class would be teaching fundamentals of algorithms for example, but the homework would involve programming so you'd better pick it up quick. The professors were also not programming experts so you had to rely on proctors or TAs or friends.
In the U.S., at least, there are two kinds of universities: the research university and the teaching university. At the research university, bachelor's degrees are a by-product of the institution. What they are really interested in is research funding and awarding Ph.D.'s. Typically the research university throws cheap instruction (TA's and adjuncts) at undergrads, and they sink or swim. At the teaching university, bachelor's degree students are the reason we exist. Our undergrads do research with faculty, and we know their names.
I spent a career teaching CS in teaching universities. We had close working relationships with the companies that hire our graduates. One of the comments we heard frequently goes something like this: "We like your graduates over those of [big-name-nearby-CS-research-university] because their graduates don't want to do what we need done. Your graduates don't realize how good they are, and they are willing to tackle any problem we throw at them."
It took a while but I finally figured out what Systems Engineers are good for. First, they can architect a business solution from available technology and specific the work required to glue the pieces together. Second, they can translate the business needs and constraints into a program specification and translate what the CS people are whining about into management speak.
So, not every business needs a CS major, but every business needs Systems Engineers if technology is part of their enterprise.
Short the stock on any public company that is dumb enough to follow the author's advice
CS is weird, at different universities it comes from different schools.
3 categories, CS program comes from: Math, Engineering or Business. They produce very different graduates.
From business school, worst graduates, learned a fair amount of practicals, but very weak on math and theory. Beware the Java only monkeys.
From engineering school, close to the silicon, at least they've most likely learned an assembler or two. Likely best coders.
From math, loads of theory. Avoid CS majors that don't code, especially those that think they're 'above coding'. Talk about database normal forms past the 3rd. Those are net negative workers, but their are good ones.
In my experience the best single interview question remains: How many languages have you coded in? The right answer is...long pause...how are we counting? Even for a recent college graduates (the good, recent college grads have about 8-10+ years of coding under their belts). Follow up is: Which do you like best and why?
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
I'll see your physicists and raise you applied math PhDs.
OMFG! What steaming piles they can produce.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
Someone is trying to pull out the old 'learn Humanities, everything else is easy' bs.
Of course this is only believed by Humanities grads, who generally blinker themselves to the technical capabilities of others while flitting from disaster to disaster because interview skills are all that matters, truth to them is a very flexible thing, and it takes around 12 to 24 months for reality (and the mess they have created) to catch up with them, by which time they move on.
No.
Humanities teaches little that is not learnt through normal social and workplace interaction, and often in a more correct and accurate way and over a similar timescale. Technical capabilities are not so easily learnt. Humanities students have generally demonstrated a lack of commitment and interest in technical fields, so will rarely Excel in them.
"Theory distracts and confuses" if you're a bit thick. Otherwise, theory is invaluable and allows you to learn from the masters, and stand upon their shoulders (hopefully). Understanding which data structures, algorithms, languages, and methodologies are available to you - and under which conditions you should choose this or that particular solution, will make you a better software engineer.
a successfull IT infrastructure has to be planned, constructed, maintained & upgraded.
vendors change, threats change, and the business changes.
marketing & businesses have no idea how to run an IT organization.
business have processes, metrics, products and if they can communicate their plan, budgets, location & timelines to IT the plans runs better.
IT needs all the quality help it can.
An experienced IT professional can usually spot the bad paths to take early, the earlier you spot a problem the better.
Business guys that read IT trade rags and believe all the vendor hype need to be reeducated.
And so do guys that think all the money is done once a system is installed.
The battle on the desktop is almost always PEBKAC.
Educate, make videos, make them think a little.
Identify your problem children and bootcamp them.
Don't ever let a bubblegum & baling wire cheap solution get stuff in to production.
good luck out there...
I am burnt out from this fight and currently disabled for all practical work....
Please do something about the usurpation of the Yakima City Council: https://www.aclu-wa.org/cases/...
You don't need a degree, you only need the skills. Having a degree just happens to be a lot more meaningful than saying "I did a thing with python once."
If you are building a web site, sure.
If you are trying to understand why your function arguments keep changing yet you don't understand re-entrancy nor the threading model, well, then maybe some OS theory would help? And why do you keep looking at me that way when I ask if it's a hardware interrupt or a software interrupt?
People who believe articles like this are the ones who complain about not being able to find a job, because they don't realize what skills they are supposed to have in the first place, nor how to provide value to their employer, because they have concluded that 4 years spent at the beginning of a career to get a condensed head start is somehow not useful nor relevant to delivering value.
LOL. You are the guys I don't hire in my interview. Just sayin'.
If someone writing a program doesn't think they use data structures, perhaps they should have gotten a CS degree from a decent university. Well, arguably, maybe if all they write are simple Hello World programs they are not "using" data structures explicitly (ignoring, of course, that they very stack that is used in the calling of printf() is a data structure).
I'd be interested in seeing a meaningful system where many programs in it don't use arrays, vectors, lists, queues, stacks, sets, etc.
Do most programmers still code up their own data structures outside of low level "systems" programming or real time systems, no. But they certainly "use" them and need to know the performance implications of which, for example, container class they pick.
Why is there an "insightful" mod and why isn't it "-1"? If I wanted insight, I wouldn't be reading
Programmers produce code. When they stuff up, it don't go. Obvious.
Software Architects produce documents. Lots of them. Pretty ones. But there is no objective test as to whether they make sense or not.
So people that cannot write code that work can become software architects. And people that fail at that can become Enterprise Change Managers.
There is definitely a place for senior engineers that know how to write code to then develop designs, and maybe they will end up not writing much code. But the non-technical architect is the source of many software disasters.
"Talk about database normal forms past the 3rd."
We got bit once where something needed to be in 4th but wasn't.
Anything in 3rd but not 4th is in fact another valid data model for a different reality.
That's the one part that stuck out to me as well. I would think that for anyone who "gets" normalization, who understands why it's done, seeing redundant data because it's not in 4NF would be at least "icky".
Even if one doesn't remember exactly what each of the normal forms are, the gist of 2-5 is "duplicating the same data over and over again is a bad idea". Some of my co-workers likely don't even know/remember the phrase "normal form", but if you showed them a table that wasn't 4NF, when they saw the duplication they would know it should be improved.
Fifth normal is the one that seems a bit silly to me, in actual practice. It gives IP a lot of the utility of the model, for very little gain. 5NF may be useful as a CS concept for developing theory.
Is offered at most major universities.
Business Administration, Manufacturing Theory, Accounting, Database Theory, Systems Analysis, Systems Design, etc.
Work orders, General Ledgers, Checks, Labor Efficiency, doesn't require a Mathematician. Someone who understands what make a business run, how to measure it, and how to manage it is what's needed.
When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
News at 11.
Just because YOU are dyslexic doesn't mean everyone is you UNIDENTIFIABLE anonymous STALKER. 600 upmods prove otherwise for me on my posts alone from our /. PEERS vs. your JEALOUS "Lil' Jowie" bullshit as well as collegiate degrees (1 from a pretty prestigious institution no less).
* You're a NOBODY moron - prove otherwise!
(No I've run a small business for 11 yrs. now & it's done well - even allowed me to retire from working for others (no more "wageslave" for me, thank God)).
APK
P.S.=> Oh, that's RIGHT - a DO-NOTHING stalker by UNIDENTIFIABLE anonymous posts like YOU (worthless waste of LIFE you) just plain CAN'T - lol, ALL YOU CAN DO is "HIDE" behind your "ANTIFA MASK" pussy, lol... apk
Look at some of the programs out there that went completely wrong, and chances are, they were lacking in people with a focus on architecture. Mass Effect Andromeda is the perfect example. Good ideas, but how to design the thing? If you just have a bunch of coders without any clue about design, you have a lot of pieces that don't work well together, and the end result is a mess that disappoints everyone. If the design was done early, and with Computer Science people, the whole idea of, "How might this break?" is in the design, and you end up with fewer design flaws.
Remember, you can take a great design and have bugs(which can be fixed), but if you have a crap design, then you can't fix the problems which are fundamental to the design.
Studying programming languages and compilers is important.
I agree, of course. The question is whether it is required for writing all software.
In short those CS classes and projects teach a young developer there are many ways to do things
It really depends on what you get out of it. I know plenty of CS graduates who basically went to java vocational school. And I know plenty of people without CS degrees who can program using pretty much any paradigm, from functional to OOP and anything in between.
If you think a CS degree is limited to complex problems and inapplicable to modest projects, you are mistaken.
Not at all, I just said it wasn't required to write "all software". There are lots of simple things that can, and indeed are, written by people without CS degrees. I would venture a guess that most software these days is written by people without CS degrees.
CS grads that have an inherent interest in software development
That's really what it comes down to at the end of the day, not whether you went to university.
No, you can't get rid of the programmers, but yes, in my experience it is the most educated who make the absolute worst programmers. Violent disregard for maintainability of any sort.
Not because they're stupid, but because that's not what they're hired to do. Academics often make terrible engineers.
Most programming is a trade.
And frankly, that is how it should be. Class time for concepts and theory that outlive the operating system and programming language of the day, the OS and lang being left as an "exercise for the student". The university is not merely about sitting in classrooms and having knowledge handed to you, you and your fellow students puzzling things out and learning from each other is supposed to be part of the university experience too. And given the amazing access to equipment and expertise one has at a university not indulging in personal projects unrelated to class is quite the lost opportunity.
Regarding professors, the programming expertise might be more contextual. For one of those data structures and algorithms classes taught in pascal my professor was no pascal expert, he knew enough to teach the class but that was about where his interest in the language dropped off. Now when I had him for upper division AI classes. he was quite the expert in LISP which he had been using for decades. It didn't take too long to figure out what professors were the local experts in one language or another, so for office hour questions it was really about knowing who to ask. And like CS students, some professors learned what they needed to and just stuck with that, and others had this innate curiosity and learned new operating systems and languages to satisfy their own curiosity not because they needed to for school or work.
CS grads that have an inherent interest in software development
That's really what it comes down to at the end of the day, not whether you went to university.
Yes and no. Combine inherent interest and self motivated study with the formal training and the person will likely be even stronger. The university adds to, it doesn't take away from, such a person. Now if the options are a self taught person with the interest and self motivation and a person with a degree that was a "ticket puncher" who showed up and did the minimal required and nothing else, yes, I'd prefer the self taught. The gaps the self taught usually have are easier to deal with. But don't dismiss the formal university program, the self taught person whose personal study will equal a formal program is exceptionally rare.
Especially the ones who got it from academic institutions instead of random photo collections.
As a former physics grad student, I completely agree. If you want a good programmer, don't hire a physicist—if you need a general manager who understands enough of programming principles to know when your software engineer is BS'ing (and not referring to their degree), hire a physicist.
I would be surprised to meet another physicist who even knows what big O notation means without having to look it up (I was an oddball who liked programming more than tweaking instrument controls).
I think the name of this major is too vague and broad. If it emphasizes programming theory, then call it that.
People who study CS at a university are ignorant of computer networking, virtualization, hardware, OS configuration, and security. However, the term "computer science" could encompass all of those things. The CS program at my alma mater only has a single class in computer networking, even though networking could comprise a major on its own. I think CS departments should have separate majors for programming, network engineering, and system administration. If someone sees value in programming theory, then they could include that, as well.
Universities formed their CS departments back when computing was simple enough to teach as a single major. Times have changed and universities are misleading students, employers, and taxpayers by pretending to teach computer science. Taxpayers need to start demanding that universities teach applied science instead of theory. If they want to continue teaching nonsense, they can do it without our money.
I'm a physicist who knows a bit of programming. When starting a project, I can create functional code to drive some widget I've built, along with a terrible UI, and a data structure that apparently only I can understand.
Then, I hire a professional programmer on a project contract to make the second version of the code. (MVP version- usually also requires an EE and/or ME).
Then, I hire a team of full time programmers, led by a systems engineer or architect to make the "real" version.
If you're hiring a physicist to code, understand that you're getting a person who either couldn't really cut it in physics or made a bone headed career move that required a serious pivot somewhere along the way (physics is not for everyone, and there are some extremely smart and successful ex-physicists out there). I think some people are overly enamored with people who can explain quantum mechanics and black holes. Yes, that stuff is really cool, hard to understand, and it's impressive we can talk about it intelligently. Unfortunately, writing good code has little to do with those subjects. Good physicists work on physics projects, and get paid well to do that.
The answer is no, of course. But not for any of the reasons he lists. The real reason why most businesses don't need to hire CS Majors is because they don't need custom software. I know this guy thinks his business is special. He thinks his processes are unique and innovative. But guess what: they aren't. Most companies don't need a full time CIO. They need to simply conform to an existing standard via an off the shelf solution rather than hiring a c-level executive to re-invent the wheel for them.
I am a software engineer making six figures and I don't have a degree in computer science. Where I work, no one cares where you went to school. In the interview, they ask you what you know and they gauge your ability to solve problems. I am 100% self taught. As you progress in your career, your degree means less and less. Say you graduated in 2004. Would anyone today ask you what you studied then? No, because you wouldn't remember most of it. Most IT certifications expire every few years for this reason. All that matters is what's in your head. You don't need to sit in front of an old government bureaucrat (i.e. a professor) for four years to be a successful engineer and I am proof of that.
Years after you graduate, the theories are forgotten. After years on the job, all you have now is applied, practical knowledge. You put your education at the bottom of your resume and no one cares where you went to school or what you studied. All that matters at that point is how you've proven yourself in the real world. At that point, you begin to wonder if you wasted four years of your life and tens of thousands of dollars.
I finished my four year BA when I was 21. I was interested in Flash and Linux at 16 and by the time I was 19 started to program because my friend in CS got a contract to do a car dealershipâ(TM)s website with an backend inventory system(typical LAMP). Suddenly, I had to learn HTML, CSS, PHP and MySQL. JavaScript was really only used for onclick=âoelocation.url=âxâ(TM)â. There werenâ(TM)t really any AJAX applications yet. We finished it and I became obsessed with programming. I got my Red hat cert because I loved linux. I still loved Psychology, so wanted to finish that.
Then, after finishing my BA, I taught English overseas for two years and then came back and worked on my CS degree. I felt discouraged because I was starting all over again. I eventually finish a masters degree in it, so it isnâ(TM)t as though I gave up.
Truthfully, after being in industry for about 7 years since, I think the writer is insane. Having mistakenly started in Engineering and finishing my first three years there, I know plenty of Physicists and engineers. They do learn Python and write exactly that, programs to massage data and create graphs and the such. But, I wouldnâ(TM)t let them touch a real world application of any value. There is a *huge* difference between one off 4 thousand line monstrosities that only work for a very specific purpose and useful consumer and business applications that scale in any meaningful way or that can be maintained.
This guy makes it sound like CS majors are too focused on the theoretical and essentially know too much. Has this guy ever worked with junior developers? They donâ(TM)t know enough theory oftentimes for real world projects. Hence the need for senior and lead developer positions.
Most useful software products use very complex data structures. This starts with the db, unto the backend (mvc) and then a frontend. If the web, then most likely angular/react/vuejs. You really spend a lot of your time designing data structures and canâ(TM)t really write anything useful without them. If done wrong, you end up spending most of your time programming around those anti patterns.
If heâ(TM)s talking about business, letâ(TM)s go there. Iâ(TM)ve worked at one place that had 2 year grads design the system initially. Now, there are plenty of great graduates from two year vocational schools, and plenty of bad CS majors. But, Iâ(TM)ve seen more of the former. Anyways, the data structures and software architecture were so poor that they spent most of their time trying to keep it working after making any changes. Thatâ(TM)s if it didnâ(TM)t crash because the db ran out memory(bad data structures). It had no hope in heck of scaling. Their business essentially fell apart as they lost customer trust and were unable to fix issues. It was a frigile deck of cards.
Now that I do hiring for the startup Iâ(TM)m in, Iâ(TM)ve done quite a few interviews. Iâ(TM)ve given physics majors the chance to interview. Who knows, they could be great programmers. I was working on CS as a Psychology major! But, most of the time it was, he is smart because he understands black holes syndrome. This doesnâ(TM)t translate to knowing how to create robust software systems just as it doesnâ(TM)t translate to being a good MRI technician. Once tested with the simplest of questions, the illusion fell apart. They then got a chance to write a react application that they claimed to be able to do. All failed in the extreme. From a business perspective hiring them would have been a disaster waiting to happen. Nothing would have gotten done. I would have spent half my time fixing their problems or teaching them and bugs would slip through no matter what. There are probably exceptions, but I havenâ(TM)t met them.
I hope people take this guyâ(TM)s advice almost, as businesses will have to hire CS people to fix the results. Thatâ(TM)s if their businesses havenâ(TM)t fallen apart already. The cost of fixing things will be greater than rewrites and the timeframes will be short, so contracting rates will be awesome!
...so you can avoid them. This employer will never value a CS major whether they choose to employ them or not. So yeah no need to apply for that job.
> The university adds to, it doesn't take away from, such a person
Some do by encouraging studies that are not merely impractical but fraudulent or dangerous. In case you think I'm kidding, check out this "historian of medicine" claiming there is no such thing as biological gender, despite all the actual *biology* that show its existence.
https://www.youtube.com/watch?...
And this professor, Melissas Click, who was finally fired for calling on her fellow protesters to physically eject a peaceful student reporter because he was a conservative white male.
https://www.nytimes.com/2016/0...
I am, in general, happy with professors and universities leading people to political activism. But it needs to be *aimed*, and sometimes it gets nutty out there.
A few people will have different perspectives on this because not all people are the same and not all CS courses are the same. Overall though, the points raised tend to largely be correct and accurate. When I did CS, I could already program. I was able to dismiss a lot of the theory as largely nonsense (more specifically, not universally applicable). In respect to bolstering my programming, CS helped in a lot of areas such as reinforcing knowledge and understanding of crucial algorithms, mathematics, etc. Also giving a background in a lot of areas. Had it been taught differently however, I could have benefited from 75% or more of it rather than 25% or less. Had I not already had decent programming skills, then the course would have been a waste of time for me. I would not have been equipped to be an effective, competent, productive and capable programmer in the industry.
Some things were simply confusing such as databases which started out with relational theory which would often be a very convoluted and indirect way of explaining things that would turn our very simple. Those courses would be frustrating because they were short and the first half would entirely be confusing explanations of new terminology for things that would turn out quite basic. Plain English isn't allowed or used in a number of theoretical disciplines.
If you take a look at the way people talk about functional programming with lots of strange terms for things you'll see it very clearly there. I often here people talking about things such as partials, currying functions, etc and when I finally find a concise example of what they're talking about, it's something really basic an a common skill your just pick up using JS like a function returning a function. Once you know a function can return a function and about scope the world's your oyster. It often seems to me that the only benefit of this is that people have learnt names for things that come naturally once you know the basics of a language. If you give your code to such a person to review they'll give a lot of names for things you've done, when you explain to them, you never did that course and have no idea what any of the things they mentioned are, they look perplexed. It's basically making names for generally any two or three different combinations of code. In the absolute worst case you see things like people doing things in an over complicated way and being very arrogant about it like using an identity function where it's completely unnecessarily and only adds bloat.
I can say some awful things about CS and where it's really wasteful. However I also see a lot of this outside of CS as well. Arrogance, theory before practice (worst being people programming theories, not solutions), not being able to program, etc are not exclusive to those having reached the programming profession through the standard academic route. Many of the issues mentions are also not fundamental to CS, there's no reason you can't hire a lecture from the industry instead of from the academic route. There's no reason you can't change how subjects are taught, the subject matter or translate them into straight English. I did find in CS, out of my peers that graduated, most of them could barely program well at all.
CS is meant to be fairly theoretical. It's not called Computer Programming. It needs changes but for solid practical programming training that needs a new course format. Computer Science is not "learning programming" and many people don't realise this. You need to learn programming and to learn it well though to be an effective software engineer. Principally, the industry needs computer programmers more than anything else. At least some of those also need software engineering backgrounds but not everyone on a team. There are plenty of programming courses out there but not with the weight a degree carries. It's also complex because there's being able to program, being able to program well and then there's a lot of heavily subjective mumbo-jumbo. Many people learn through peers or on the job b
You talk about using accounts? Then why aren't you using yours bullshitter?? Why do you STALK me using UNIDENTIFIABLE anonymous posts???
(Answer those questions above Mr. "SiDeWaLk-ShRiNk of /." w/ your CRY of the BUTTHURT "ne'er-do-well" w/ NOTHING to show for your WASTED life, ya wannabe... lol!)
Funny I can afford my home & vehicle all paid in full (since you bust on my running a business of my own for more than a decade now that allowed me to escape the 'wageslave' so-called life) eh?
Lastly - I never said I was 'important' - YOU DO - important enough to you that you STALK me by UNIDENTIFIABLE anonymous like some obsessed lunatic you are hating your nothing to show for yourself wasted life.
* You're SO full of shit it's not funny...
APK
P.S.=> Funny people like & USE my work (not yours) https://it.slashdot.org/commen... eh? Of course, you'd have to have DONE some work Mr. ANTIFA stalker behind your mask (because you KNOW you're STALKING me like the loon psycho you are projecting it so you HIDE from me)... apk
I learned SO much more getting myCS degree than mere programing. IN fact, my university didn't even teach programming languages - those were something you had to learn on your own as they were expected to change with time....that was 1983 and they weren't wrong.
In addition, my degree has opened so many more doors that otherwise would have been closed. Right or wrong, there are still numerous people in the position of hiring or recommending people and still firmly believe having that piece of paper demonstrates commitment, dedication, stick-to-it-iveness and just generally being able to finish a long term goal. Some are even more base than that and want you to be part of "the club". Deal with that reality.
I'm proud of my degree. But if you don't have one and can demonstrate you still be an effective computer scientist (no one is just a "programer") I have no heartache calling you one. But let's not pretend that my degree is superfluous - we all know how much is required beyond mere programming to be effective. It would be a special person without an education who could really do all a CS degree recipient is capable of
We keep seeing applicants who claim to have a CS degree in Networking.
You are correct that there is no CS degree in networking. However, there is a CS degree with major or concentration in networking (in any public universities). Though, that doesn't sound as commercial as the former, eh?
"Businesses Really Need to Hire CS Majors?" No. Not at all. There are many positions that do not require a CS degree. Oy.
I'm pretty sure you could write a list that was almost exactly the same for
say 'physics' or 'chemistry' or any other broad major, probably for things like EE , mechanical and structural engineering as well. Although 1 point is
'sort of' wrong, CS majors usually come from 1 of 3 places ( mathematics, engineering , or business department). So the actual program can be quite different depending on where the person comes from.
I'd suspect , like anything else, you'd be better off having a better understanding , what you want before you hire. Are you looking for a generalist, a specialist, or a technician.
...to reinforce an inane notion many C-level executives are adopting: "I can save a bunch of money by hiring inexpensive (i.e., unexperienced/unqualified) people for my IT organization." Yeah, good luck with that.
programming right now: angular with rxjs, using FP excessively. only stupid people can ignore mathematics in programming
And of course, you will need a civil engineer to build an information super-highway.
Any job stating it requires a CS degree does not actually NEED a degree, the HR department is just incompetent and incapable of hiring for a position if their recruitment software shows a particular job title having a degree listed for it. They toss out applicants that do not match what the software tells them. They are worse to deal with than outsourced Indian Help Desk "support". The only degree worth a damn is a business management degree, assuming you ever want to get promoted into management.
-==- Buy a Mac and leave me alone!
You may just be proof that programming is a high demand field.
Yes and no. Combine inherent interest and self motivated study with the formal training and the person will likely be even stronger.
Aptitude and desire beats only formal education anyday. Plenty of exceptionally good self-taught programmers, many using the same material taught at universities. I know many, many programmers without formal education that absolutely blow the doors off people with CS degrees.
I don't think anyone would argue that all three is even better (aptitude, desire and formal training).
Now if the options are a self taught person with the interest and self motivation and a person with a degree that was a "ticket puncher" who showed up and did the minimal required and nothing else, yes, I'd prefer the self taught.
That's exactly what I'm talking about.
But don't dismiss the formal university program, the self taught person whose personal study will equal a formal program is exceptionally rare.
No one is dismissing formal university training, it can be incredibly valuable. But without aptitude and desire it's absolutely worthless.
I see 3 problems in my neck of the woods
1) Language churn... how many bloody languages do we REALLY need to solve a problem, especially relatively simple business problems? We can't even decide on what the syntax of something as simple as the midstring () method.
2) Ivory tower solutioning... too many times, I've seen people try and solution for every possible scenario before writing a stitch of code. Waterfall gone nuts.
3) Buzzwords... someone sees the latest magazine, and suddenly solution X becomes THE solution for everything (this follows from 1, and can directly lead into 2)
The guys who install home theater speakers aren't acoustic engineers.
But they'll still bill you like they are...
I worked at a company once where I was the only dev with a CS degree (I actually have 2, BS and MS).
I hired one of them because he clearly had the skills to develop. At that point I rarely, if ever, brought up who had a degree and who didn't.
A few months later company culture started saying people with degrees couldn't program. That was their way of getting an edge over me. They were "untainted" by the schools or whatever. I made a big, public deal about how we shouldn't focus on whether someone has a degree or not, but it didn't matter and I was demoted.
Then our biggest client found out our devs didn't have degrees and made a big stink about it.
People use a lot of superficiality to impose themselves over others. It is a tremendous business liability. The only place worse than degrees is certifications. The people who have them and the people who don't despise each other draw attention to that to throw rocks at each other.
...most businesses don't really need programmers to be deep thinkers. For them, it's "just as worthwhile to hire someone from a physics lab who just used Python to massage some data streams from an instrument.
You're assuming that the folks who used Python while working in a physics lab weren't thinkers?
> Think about where you store price for line item (if your a 3rd normal form purist). Can't be on lineitem, redundant to pricing, so has to link to pricing data with full history.
PricePaid / PriceCharged is part of the invoice. It has nothing whatever to do with what is on sale today, or the price of tea in China today. The price you're currently offering on your web site has nothing to do with how much you charged the church three years ago. Different different prices today, which may depend on whether they bought 3 for $5 or 1 for $2.
Very often, you wouldn't store line items for invoices, as the invoice is a thing unto itself - you might give your brother half off, so you can very well have an invoice table which has information about the invoice - including the grand total.
What would be a violation would be to have both, where they may contradict:
Item1 paid: $5
Item2 paid: $4
Item3 paid: $11
Grand total: $7
I see it in a different sense: there is an ongoing dialogue between writers and academics about the meaning of texts.
As with anything, when this becomes politically infiltrated ("PC") it loses any validity because it is turned into a propaganda organ instead of a vehicle for studying a discipline and how to do it.
Clearly most of the great writers stayed away from academia, but they also tend to have stayed away from most other things that normal people do. The rules for geniuses are... different.
What I was hoping to express, however, is that for the average legitimate college student (120+ IQ) literary theory can provide a way of understanding the complex philosophical dialogue that has been raging across literature over the centuries. It enables them to stitch together different works and see the arguments of each, made through both content and aesthetics, that shows not just the core values that literature discusses, but upholds. Having stories that have meaning (let's use that as a working simplest possible definition for "literature") is in itself valuable, as is the study of these stories.
I do not believe that writing can be taught; mechanics and story elements can be taught, but writing itself is always learned by those who undertake it as a passion. The teaching of writing as a technique, the "workshop method," helps Hollywood produce formulaic blockbusters and keeps literary magazines in business with a steady stream of alarmingly similar stories, but does not produce great literature.
In this sense, I see the teaching of theory as useful for literature mainly because it is fairly immutable; what was good in one age will be good in another, once we abstract out elements specific to that time.
For computer science, "theory" usually involves some high-handed notions that apply to very few real-world instances, and serves to teach "right ways" instead of the wisdom of the hack, which is that you do it however you have to.
Postmodernism gets a bad rap, in my view, because it was taken from its original intent into the realm of propaganda. The original idea, triggered by Nietzsche's "On Truth and Lies in An Extra-Moral Sense," was that truth is only as accurate as the mind of the beholder, and so humans are unequal and therefore have differing degrees of accuracy in perception. The notion of universal "truth," values, or communication was thus in doubt; this actually targeted The Enlightenment&trade-era notions of a universal truth that applied to all humanity, instead of a need for a hierarchy of people based on their degree of accuracy of perception, a measurement which is as much aesthetic (what is good, beautiful, and true to natural form) as it is factual or logical (the realm of "logical fact," misunderstood and ignored by most). In the ensuing years, other writers tried to make sense of this, with most defaulting to the dominant paradigm of universalism or the idea that what most people think is true/good must be true/good. Postmodern writers worth reading include William S. Burroughs and Don DeLillo.
Alternative Right.