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.
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!"
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.
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.
> 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.
The vast majority of CS grads will not go into research, they will be developers, usually upper tier.
When all you have is a hammer, every problem starts to look like a thumb.
Let the physics major debug it, thereby proving themselves.
When all you have is a hammer, every problem starts to look like a thumb.
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.
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
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.
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.
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.
Not that I have seen. Most true CS majors go into things that need algorithm design and data modeling giving a restricted environment. Embedded, kernel, drivers, hardware, microprocessors, encryption, machine learning, etc.
But those are real research leveled CS degrees. There seems to be a lot of colleges that just provide job training in programming language of the month or example driven learning and call it CS. These are no different than vacational schools and I wish they would just say that.
I DO see a lot of CompE in programming thou and this appears to work OK. They get projects done. It's rare that someone needs to think deep about a algorithm running on IaaS. None of their bosses will be around nor will they figure out the issue when stuff hits the fan a few months later. They will just replace that product anew like they replaced the prior one.
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.
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.
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.
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.
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.
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.
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?
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.
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.
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
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.
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
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.
Are you sure it's that great for literature? I wonder if the correlation between good writers and literature graduates is higher than the correlation between good programmers and CS graduates. I would actually suspect it is lower, considering how postmodernism/PC/capitalism (the first two deny the existence of quality, the third insists that quality only exists in what earns money) messed up humanities.
Avantgarde Hebrew science fiction
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
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.
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.
Learn to argument instead of going ad hominem.
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
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...
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.
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
I dropped out of college to get paid.
That's funny... I dropped out of college to get laid. Got a decent job (along with some tail) after chasing a girl to another part of the country. Eventually went back to school so that I could get a degree, telling myself and others that I only needed to get the piece of paper to get the salary (because I could do the work already). When the dust had settled and I had a number of years of experience under my belt, I realized that I had learned a great deal at college, not all of which would have been available to me with on the job learning. Oh, I also scored a great salary right out of school (because I had the piece of paper). On the other hand, I have two friends who went to the same vocational high school as I did and who work in the same field. They have also been very successful, without college degrees. It is a funny world.
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'm completely serious. VBA way outperforms numpy. It is compiled to native vs the .net VB which is not. And it has everything I need for simple blas and even nonlinear programming all baked right in. Also it can call out to DLLs with a very low cost ffi.
refactor the law, its bloated, confusing and unmaintainable.
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.
This is really good advice. I don't think you can follow it as a rule, but trying to follow it in general will provide better in-house solutions.
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.
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.
It's been a while. Does it still leak memory like a sieve?
Not useless, but if it had to stay up? Wasn't the right tool for the job.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
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.
I only ever used it for things I would have preferred to use MATLAB for, so memory leaks or uptime weren't things I looked close enough at. I can image somewhere out there exists a safety of life critical piece of software in VBA that has its VM cycled by a chronic job to avoid memory exhaustion. Because that is the world we live in.
refactor the law, its bloated, confusing and unmaintainable.
"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.
Like I say, It's been a while. But our clients were trading large double digits (about 30% of N America) of the power in north America, Europe and Australia...on VBA...at least we got rid of the Access backend...
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
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.
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.
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.
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'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.
What's false about it? nten didn't say that VBA is compiled to .Net; he said, "It [VBA] is compiled to native."
Nope.
"Businesses Really Need to Hire CS Majors?" No. Not at all. There are many positions that do not require a CS degree. Oy.
Furthermore, those degrees usually do not teach you that, what needs to be done in whatever position. They DO tell the employer that you are a) able to learn new things in this ever-changing field and b) finish what you have started.
Uh, no, they don't tell an employer either one of those things. They certainly don't guarantee them.
First off, I find the whole "finish what you have started" validation to be ridiculous and very outdated. I work with plenty of skilled professionals who lack a degree that finish what they start every day. Just because a sprinter has never completed a marathon doesn't automatically mean they're some lazy half-assed athlete, and yet that is exactly what is implied when we attempt to pre judge those who have skills, but lack a degree.
And as far as a degree telling an employer about your ability to learn new things, a 20-year old IT degree is almost worthless today from a technical perspective, and it tells me nothing of someone's ability to learn NEW things in an ever-changing field. A degree only tells me you were capable at some point, not that you are still capable. I will only learn that through direct observation and experience.
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.
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.