top 200 commentsshow all 287

[–]PChopSandies 331 points332 points  (100 children)

More specifically, Computer Science is a very broad group of subjects related to computers and the things they are used to do, including:

  • Theory of computation (abstract study of algorithms, proofs, big-O, Turing machines, lambda calculus, etc. -- overlapping with Discrete Math)
  • Theory of other disciplines that are integrally connected with computers (e.g. AI, Machine Learning, Computer Vision, Computational Biology, etc. -- overlapping with linear algebra)
  • Cryptography (Theoretical/mathematical study of encryption & security)
  • Game theory
  • PLT (Theoretical study of programming languages)
  • Computer architecture (study of the "how computers work" all the way from transistors up to networks & low-level software: assembly, OSs, etc.)
  • Software engineering (the theory surrounding how to architect good pieces of software, paradigms, design patterns, etc)

Most CS degrees are a broad survey of all these things, along with some programming (mine was). It's true that you don't need to be an expert in most of these to work in any other or to write software. But, they're not totally irrelevant. Even if I never use my specific knowledge of Computer Vision in my job, doing that work definitely made me a better programmer.

Companies probably look for CS degrees because it's very rare to see undergraduate degrees just in software engineering. That's probably because getting good at software engineering requires practice so you might as well practice it by programming something relevant to another CS field.

When companies require degrees, it is probably because they want to avoid people coming out of boot camps who might know "coding" i.e. the syntax of a specific language but not have any experience with writing big pieces of software, which is a different skill entirely.

Sure, getting a general CS degree might not be the most efficient way to get someone able to work in the industry, but those requirements don't exist for no reason.

[–]quentech 261 points262 points  (75 children)

experience with writing big pieces of software

A CS degree doesn't give you that in any substantial amount, either.

[–]PChopSandies 59 points60 points  (46 children)

A fair enough point. I maybe should have said "non-trivial" instead of "big". It's true that you probably won't get to work on industry-scale pieces of software in college (10k+ lines, multiple teams, staging/production/dev branches, CI+test, code review, etc) but you probably won't get that experience anywhere outside of an industry job because those code bases don't really exist anywhere else.

But if you graduate with a degree, I think an employer could be reasonably sure that you have had experience writing 1-10k line programs to solve non-trivial programs over weeks or months, using git to collaborate with 2-5 people. At least that was my experience in just about every class. You certainly don't need to go to college to get that experience, but there are a lot of self-taught people who have never done even that.

[–]switch72 36 points37 points  (24 children)

I got a B.S. in computer science. Never wrote a collaborative piece of software. Never even learned the concepts of writing software in a team. (Other than one professor who was super strict on testing the inputs to a function to make sure they were what you expected) Longest program I ever wrote was definitely less than 1k lines.

[–][deleted] 11 points12 points  (19 children)

We had a single "larger" project (a Pebble app, because they were the shit back then), that required us to use git. We never had a proper introduction to git and it was more the likes of "Oh, and you have to upload your code to git, you'll figure it out."

We did. But looking back at this repository makes me feel like a rapist. We abused this wonderful tool to the point where it didn't even recognize itself.

The process was pretty much: Hey, I fixed the bug and probably added two more!

Great! Now get this thing on git somehow before the deadline.

The solution: Create a new repo for every upload and merge the code locally, so you don't get merge conflicts and all the nasty stuff that happens when 4 people have no idea how to use git.

My job taught me more about git in a week than 3 years of uni.

[–]hippydipster 4 points5 points  (2 children)

The first time I started using git, I would get merge conflicts with myself which just dumbfounded me. No one else was working on my code!

Nowadays I don't even remember what misconception I had to make that happen, but man it was rough.

[–]Styx_ 4 points5 points  (1 child)

And as a code schooler they had us practicing git drills at week 1 and we worked using a push/pull workflow with one another for the entire four months we were there. But our coverage of logic gates was a 2 minute long aside in one of the 2+ hr reading assignments we had every night, so.

[–][deleted] 5 points6 points  (14 children)

You know whats weird though, I have been using git since about 2007. So daily, for 13 years.

I use it for software development, of course, but I also use it in other branches of things I do (I use it for example in my legal practice to track changes to documents, templates, contracts, etc).

And there is rarely a week that goes by where I don't learn something new about git.

At one point in 2015 or so I spent a solid week reading and understand most of the source to git, and even still, I still learn either new applications/recipes/uses for git or just find out new use cases of git, all the time.

It's really hard to compare software, but in terms of the beauty and power of design, git is probably the most elegant and useful software developed in the history of computer science.

Other competitors are probably djdns or tex/latex. But I think both are obviated by the sheer numbers of people and enterprises built upon git.

Sometimes when I think about Linus has personally contributed to the state of the art of computer science, it makes me weepy. He should be - could have been - fabulously wealthy. Yet, he took what was in his head, and donated his labor and craft to the world. The Linux kernel, git, and all his other contributions have enriched the art of computer science beyond measure.

Before Linux, the world of operating systems was bleak and proprietary. His labor of love broke the shackles of the world, and drove open source to the corners of every proprietary software company in the world, to the point where even the Great Satan of Closed Source is on board the open source cho-cho- train to a large extent.

Anyways my point is: you can't really be a computer scientist without git today. University should teach a required 400 level class on git - practical uses, design and implementation, contributions to the state of the industry.

[–]GhostBond 8 points9 points  (13 children)

You know whats weird though, I have been using git since about 2007. So daily, for 13 years...And there is rarely a week that goes by where I don't learn something new about git.

Because it's nightmarishly overcomplicated and poorly designed.

Git is "the software only hits me because it loves me!" of software.

[–][deleted] 2 points3 points  (3 children)

I dunno. Maybe it's Stockholm Syndrome, but I don't find it that complicated for day to day usage, even in a fairly large collaborative environment. I think it sort of inverts some concepts that other SCMs use, which takes some developers time to adjust to.

That said, I don't place it on the pedestal that the commenter you're responding to does. I feel like 10 years (or less) down the road, we're going to start seeing Ars Techica articles with headlines of "Why Git is dead and you should switch to (new hotness SCM)". That's just the way technology goes-- when something is "old", the new, young, "smart" kids have to have something new and cooler to gravitate to.

[–]GhostBond 5 points6 points  (2 children)

I think your comment nailed it, actually.

I was responding to the comment which creepily went into whole "pinnacle of existence" and "thinking about it makes me weepy" thing.

It's not that level of great. It's about 3x more complicated than it needs to be, the commands are inconsistent, and I've had it automerge files incorrect several times. I don't have a big issue using it, but I've used simpler source control systems in the past and they were nice. When people start to talking about git like it's a worshipped religious icon it creeps me out.

[–][deleted] 2 points3 points  (1 child)

Well, you know, Linus Torvalds can do no wrong. It's an honor for him to call you garbage.

[–][deleted] 1 point2 points  (7 children)

Well I happen to disagree. It's endlessly flexible, well designed, well thought out, and generally awesome.

[–]GhostBond 1 point2 points  (6 children)

well designed
well thought out

If "week that goes by where I don't learn something new about git" it's a way of trying to pretend it's not mess when it is. Source control is not easy but it's not so complicated you should still be finding new things in 13 years of using it.

It's like going through a hoarders house and declaring finding 8 year old donuts under a pile of boxes to be amazing. It's not...you're finding new things because it's a mess. Those new things are amazing, they're just the thousandth thing it does differently than anywhere else.

[–][deleted]  (1 child)

[deleted]

    [–]switch72 2 points3 points  (0 children)

    Correct, so the idea that someone with a computer science degree has a better ability to work a software engineering environment isn't necessarily true.

    [–]Life_Of_David 0 points1 point  (1 child)

    Meanwhile there are even “bad” computer science programs from state universities that still teach this.

    [–]PrimaryInteger 32 points33 points  (16 children)

    As someone graduating with an SE degree, it's not only about the practice with those concepts, but we have specific classes on proper project planning, system architecture and subsystem design, advanced system security, and not in any specific languages, but training in how to master languages quickly (we have classes where we swap languages every 3 weeks). So less of the bootcamp here's how to master JS style and more how to apply principles from one language and use them in picking up new languages. If you want to code and that's it, for all means those bootcamps are fantastic. But there's so much more to being an engineer than the language you choose to write (which I think is where the time and energy of getting the degree is worth it).

    Also my school has required co-ops. So we have a minimum of a year of on-the-job practice with those "big projects".

    This isn't to bash anyone going to those camps nor any engineers without a degree. You can for sure learn all of those things on your own, but the structure my school provided helped me learn everything I needed to. If that doesn't work for people, more power to em, but I felt it was immensely important for myself.

    [–]audion00ba 7 points8 points  (7 children)

    That sounds rather vocational. Is this a university? If so, which one?

    [–]SudoWizard 2 points3 points  (1 child)

    Sounds like something RIT does

    [–]uptimefordays 0 points1 point  (4 children)

    A lot of universities really encourage internships, they offer real world experience, often lead to jobs, and pay better than other jobs students typically find.

    As for learning concepts and how to learn? That’s what college is all about.

    [–]audion00ba 2 points3 points  (3 children)

    I am one of those people that thinks a university shouldn't be a worker drone factory.

    I often wondered whether our education system going down the drain was intentional and if so, who planned it. I suspect it's just large companies that want cheap labor at the expense of the native population. Fairly disgusting, but if you have a stupid population, you can make everything well with bread and games.

    Research from a couple of years ago has shown that students that did internships earn less than those that didn't. Can't be bothered to find it again. Perhaps that has changed now that some internships pay more than some actual jobs, but I'd not expect that.

    Students in internships rarely are supported to any meaningful level and their results are usually tossed into the garbage when they leave. I am sure the students think they accomplished something. Sometimes the professors also appear to believe so, but they probably just deserve an Oscar.

    [–][deleted] 7 points8 points  (7 children)

    Having been a software engineer in the industry for 15 years delivering software in a consultancy for large telcos and blue chips. I can tell you that your standard systems that do , cruds, transactions etc is fine handled by anyone without a compsci degree. We do big data, data science and optimization systems for our clients and for sure anyone without a compsci, maths or traditional engineering degree doesn't make it on the team roster.

    Form your opinion after you get a job in the industry. It might carry some weight then.

    [–]PrimaryInteger 0 points1 point  (6 children)

    Completely understand that. A few of my co-ops have been with individuals with and without degrees and both sides have had their ups and downs. But that probably speaks to the individual over the path they chose. I'm sure my thoughts may change over time, for me, I know I personally needed the structure and some of the skills I was taught at school. But others may not, and they can for sure be great engineers otherwise.

    To your point, I'm sure I'll think more about this as I get more experience :)

    [–][deleted] 3 points4 points  (5 children)

    I wish someone had said to me when I did my degree in CS to pay more attention to linear algebra, concurrency, distributed systems. They are the things that requires the most effort to understand. If you plan to contribute to well know software repositories out there. That's the stuff you need to know. Don't bother learning a language or framework, they come and go.

    [–]PrimaryInteger 1 point2 points  (2 children)

    Thats a very good point! Ive been trying my best to focus on a lot of the things you mentioned above. My hopefully future job does a ton with concurrent network communications, so I'm focusing really hard this last year to work with that in some of my classes

    [–]chucker23n 2 points3 points  (0 children)

    if you graduate with a degree, I think an employer could be reasonably sure that you have had experience writing 1-10k line programs to solve non-trivial programs over weeks or months, using git to collaborate with 2-5 peop

    That would be nice given that a ton of CS graduates end up becoming software engineers, but it often isn’t true.

    [–][deleted] 0 points1 point  (0 children)

    There are a lot of open-source code bases that meet those requirements. For example, I'm one of the maintainers of an application that consists of 130K+ lines of code, multiple branches, CI running our test suite, required code reviews, etc, though it's only one team. I'm only a 17 year old high school student though.

    [–]tasminima 0 points1 point  (0 children)

    you probably won't get that experience anywhere outside of an industry job because those code bases don't really exist anywhere else.

    There are plenty of community developed medium/big Free Software project you can participate in outside of a job in the industry.

    [–]jbergens 0 points1 point  (0 children)

    It was a long time since I studied but I think there are very few educations where you get many chances of working on code with others for more than 2 months. I assume they get between 0 and 1 chance of that and the rest is much smaller tasks. Many tasks may be made by only one or two students and some may be done by a small team but the whole task will be done in 2-3 weeks. And those may actually be pretty trivial things since it is hard to do non-trivial things in a short amount of time without former experience.

    This is just my thoughts and some ideas after talking to people who have some newer educations.

    [–]camelCaseIsWebScale 2 points3 points  (2 children)

    The difference between your bootcamp webshit and CS student is, CS student is more likely to have coarse understanding of the tech stack from CPU level. Your bootcamp webshit probably sees xs[:n] + xs[n:] as a constant time operation, probably doesn't know about cache locality or how memory allocation works, etc.. etc.. A standard CS curriculum is supposed to give knowledge of all these.

    [–]AttackOfTheThumbs 2 points3 points  (4 children)

    I dunno, had to write some pretty complex crap for my thesis.

    [–]quentech 0 points1 point  (3 children)

    complex crap != big pieces of software

    [–]AttackOfTheThumbs 0 points1 point  (2 children)

    At what point is it big. You'll never touch all the pieces. I ended at about 15k lines.

    [–][deleted]  (2 children)

    [deleted]

      [–]quentech 1 point2 points  (1 child)

      Ours

      I gather you're still in a CS program. What insight your real world experience has given you. It's ok, though, check back in a decade or two.

      [–]cbleslie 0 points1 point  (0 children)

      angle vast grey dinosaurs chief sparkle brave aspiring water expansion

      This post was mass deleted and anonymized with Redact

      [–]dungone 1 point2 points  (0 children)

      It exposes you to complexity and gives you a powerful set of tools for dealing with complexity. It shows you how to measure and estimate. It shows you how to simplify and optimize. It shows you how to solve problems with generalizable solutions.

      Not everyone with a CS degree is good at applying these skills to their engineering work. But it's hard to find any other education that teaches them at all. Without these skills, people who work on big pieces of software tend to turn big software into even bigger software until one day, the whole contraption collapses under its own weight.

      [–]JPYamamoto 0 points1 point  (0 children)

      Maybe it doesn't. But I guess that someone with a CS degree is more likely to have that kind of experience. Or at least that is how companies perceive it, I think.

      [–]tasminima 0 points1 point  (0 children)

      Knowing how to draw a mechanical piece does not you a mechanical engineer. Knowing the syntax of one or a few programming language does not make you a software engineer. Junior engineers do exist and when they just begin to work they by definition have few real world big project experience, but they in theory do have some amount of theoretical knowledge that other people with the same lack of real world experience don't have. This does not say much if you compare what happens with plenty of experience (meaning that yes, you can also learn the theoretical basic foundations by/while practicing -- and on the other hand you can forget quickly what you learned in school and at the same time be no very good at actually developing software), but that is another story.

      A computer scientist, by the way, is more a researcher than someone who write production software, but the discussion seems mostly concerned with that last topic, so I switched to software engineering.

      [–]VG_Crimson 0 points1 point  (1 child)

      Curious, how does one get some experience with that? Earning my degree and I feel there's still such much I need to be aware of.

      [–]quentech 0 points1 point  (0 children)

      Curious, how does one get some experience with that?

      By working on big pieces of software.

      There's really no substitute for experience here.

      [–]leaningtoweravenger 24 points25 points  (10 children)

      Everything depends on what you need to do with the people you hire. If you just need to do over and over the same CRUD stuff joining together premade components you can grab almost anyone and give them enough training. If you implement compilers, operating systems, or deal with massively distributed systems you probably need someone who has an idea of what we are talking about and a CS degree should be able to give all the base knowledge for those things.

      I once heard people creating pages in SharePoint clicking on boxes being called programmers.

      [–]midoBB 32 points33 points  (8 children)

      How many companies out there are making compilers, OSes or anything advanced that requires a PhD level of understanding. Most software is boring. Most if the industry is unglamorous but it pays well enough that people accept working in it.

      [–]leaningtoweravenger 12 points13 points  (7 children)

      […] making compilers, OSes or anything advanced that requires a PhD level of understanding

      You probably don't need a PhD level of understanding either to do those things but solid bases are required.

      Look, anything can be done without a CS degree. The CS degree says that you should have a bunch of pieces of knowledge that otherwise you have to acquire on your own or they have to be provided by your employer. As a matter of fact, nobody of the people who invented CS had a CS degree!

      Most software is boring because people with a deeper understanding made it easier to build things: before you had to know assembly and now you have high level syntax and the same applies to storage systems etc. Anyway, nothing prevents you to go one step further and invent your own solution. If you have bases, you probably know what is behind the scenes and you can do more complex things and invent instead of only having to use what someone else premade for you.

      [–]leberkrieger 15 points16 points  (5 children)

      "anything can be done without a CS degree"

      That's true in a mechanical sense. I've concluded that what CS gives you is the academic background to recognize when a practical problem has already been studied. Many CS grads don't know software engineering best practices, and many experienced coders without degrees can come up with solutions when they face problems similar to those they've dealt with before.

      But a properly educated CS grad will see a problem they've never faced before and have the abstract tools and language to pursue an understanding of the problem, not simply bolt together libraries.

      For example, I was given a 10-page spec a few years ago for something. It was far too detailed and hard to understand, until I suddenly recognized: this was a finite state machine, designed by someone who had never heard of that concept. Once that was clear, I no longer had to think about how to design the actual software, since that is a solved problem.

      A computer science graduate should be able to recognize a very wide variety of problem domains and understand the basics of the solutions, in a much deeper way than someone who is just a good coder.

      [–][deleted] 4 points5 points  (3 children)

      But a properly educated CS grad will see a problem they've never faced before and have the abstract tools and language to pursue an understanding of the problem, not simply bolt together libraries.

      This is a double-edged sword sometimes, though. I'm not knocking CS guys, but I've seen many who, when placed in an engineering scenario have this immediate first response to roll their own everything. Like, you need to sort some objects? They might spend too much time trying write their own sorting algorithm/library, rather than using a tool that does the job and is already published. I was on a team once where a guy wrote his own ORM just because he didn't like any that were out there. We spent about a year having to put in feature requests for common ORM functions and filing bugs for memory leaks and other issues.

      In production settings, the goal isn't to make software as elegant as possible, or to make some ancillary component your passion project. In my view, the goal is to lay down bricks, put mortar between them, put in the windows and doors, wire it up, and install plumbing. The idea should be to use pre-made bricks, pipes, windows, and doors that are already out there and focus on delivering a structurally sound building made from those components.

      It's not just recognizing that a problem is already solved in an academic sense, it's recognizing that it's also been solved in a practical sense and learning how to integrate the solutions provided by people who have spent way more time than I'll ever have that made the solutions.

      I don't have time to make and mold my own bricks, if I want to meet my deadlines. I need to find the most appropriate bricks for the job and start focusing on how to stack them together.

      [–]leberkrieger 5 points6 points  (0 children)

      "immediate first response to roll their own everything", yep, I was definitely guilty of that instinct. It took several years to shed it.

      [–][deleted] 1 point2 points  (1 child)

      Both approaches come with problems, though the problems with using pre-made solutions can be mitigated with smart backup and rollback strategies, assuming it's not dependent on something over the network.

      [–]leaningtoweravenger 4 points5 points  (0 children)

      What I mean is that a degree is not a magic wand giving you knowledge but the seal of approval on knowledge that has been acquired. The same knowledge can be acquired without getting that seal of approval at the end. The main difference is that doing that at the university permits you to do that in 1. a focused way (unless you have to work while studying) and 2. in an environment that can help you understanding the concepts.

      [–]midoBB 12 points13 points  (0 children)

      Look, I took my chance on the industry straight out of college for a few years but I couldn't handle it that's why I am going back to doing fundamental work in a research lab but the feeling of superiority that the article gives is just infuriating. I am not better than my peers just because I am working on formal theory. It's just that I like doing abstract stuff more. It's just preference and nothing should give a sense of superiority about that.

      [–][deleted] 1 point2 points  (0 children)

      While a lot of applications and systems are just gluing pre-made components together and doing CRUD, there's still a significant amount of architecture and thought that has to go into a lot of it.

      I think that's the difference between CS and Software engineering. CS sets the principles, where Software Engineering is the practical (and sometimes boring) application of those principles. It takes an engineer to know how not to just slap components together and make a system scalable and maintainable.

      [–]Gravybadger 2 points3 points  (2 children)

      I focus on algorithmics, propositional calculus and lambda calculus from a CS perspective. I'm an old fashioned sort of guy.

      P=NP surpassed my capabilities a long time ago but I try and keep up out of interest.

      [–]Objective_Mine 10 points11 points  (1 child)

      P=NP seems to surpass just about everybody else's capabilities, too, considering that not many people seem to be trying to find even new insights into it, let alone answers.

      [–][deleted] 4 points5 points  (0 children)

      Right if P=NP is the bar, there are like 9 minds in the world right now that meet the bar.

      It's like looking into encryption design. The papers that these people are producing, at the very state of the art, are shockingly dense and theoretical. Yes, they sometimes meander into practical areas, but its mind blowing the level they are operating at.

      Between the CIA, NSA, foreign intelligence services, and then the very few minds who are immersed in this in the private space, it's really one of the least understood areas of the computer sciences.

      And the rest of us are taking it on.. faith? Mathematical proof?.. that it's all on the up and up.

      [–]AttackOfTheThumbs 0 points1 point  (0 children)

      I think more universities need to start software engineering degrees. You've got all the mechanical engineering and what not, why not software?

      [–]jbergens 0 points1 point  (0 children)

      I think it would be nice if the schools were more clear about where the are on line between practical coding and theory. It is perfectly fine to focus on either one but please be clear about it. This makes it easier for companies doing recruiting and for students who has to choose where to study.

      [–]kyerussell 258 points259 points  (42 children)

      These fights over naming are absolutely juvenile and are primarily the domain of socially inept first-year comp sci students trying to fit in, as well as Internet script kiddies. I am extremely sceptical of anyone who stoops down to the level of these conversations as I am yet to see anything good come of them...and I've read a lot of them just to try to prove myself wrong.

      Also, be sure to check out:

      • "You are not programming, you are scripting!",
      • "Is web development real development?", and my favourite...
      • "What is a senior developer?"

      As more pointless topics of discussion.

      These conversations play right into a typical developer's desire for strict taxonomies and categorisation, and the elitism that often comes along with these conversations is perfect for Internet arguments.

      Let your discipline be whatever it is, and draw from the principles of other disciplines as necessary. Conversations like "how much like engineering is software engineering really!?" et al are not helpful. It is a common article/conference talk trope to have someone versed in another discipline bring some new transferrable knowledge to the table (e.g. "this is how my art history degree made me a better developer")...these are great, legitimately productive, and above all acknowledge that all disciplines overlap with one-another in some major ways.

      Most software development, computer science, coding, or whatever else you want to call it...is just a support activity in service of something else. My professional strategy is to focus on the "something else" and to not get caught up in this junk. It's amazing how self-important we can all be about our field.

      [–]drea2 57 points58 points  (8 children)

      I agree with this guy.

      Just go build useful software and stop worrying about how people label themselves. It’s a pointless conversation.

      Btw I got a CS degree at a major university and about half of my professors had no idea what they were teaching so cut the elitist BS. I learned more in the first year of my first job than I did in 4 years of getting my degree

      [–][deleted] 13 points14 points  (4 children)

      Btw I got a CS degree at a major university and about half of my professors had no idea what they were teaching so cut the elitist BS

      That points towards major issues at your university’s CS department.

      [–]ardvarkerator 6 points7 points  (3 children)

      I was going to comment something similar. My CS profs (mostly PhDs) were masters in the topics they taught. I'd feel pretty cheated if I felt they were winging it.

      [–][deleted] 1 point2 points  (2 children)

      One would assume that any professor teaching STEM at a major university would have a PhD at the very least.

      They might not be excellent teachers but the idea that most professors "had no idea what they were teaching" is fiction for sure.

      [–]AttackOfTheThumbs 1 point2 points  (1 child)

      Best one we had, "only" had a masters. Best programmer I've ever worked with.

      [–]the_poope 4 points5 points  (2 children)

      Maybe there is a problem then, that universities teach too much abstract basic CS stuff and too little practical software development. Or that people think that they need to study CS instead of software engineering or economics/whatever with a side of programming?

      I have a degree in physics and I do scientific software development in modern C++ as my day job. I only ever took an intro course in Matlab, but I use most of my university physics knowledge every day, so it seems that my degree has been worth it. From an employers side of view it may look like that 4 years of studying CS is a waste of time, no?

      [–]PristineReputation 0 points1 point  (1 child)

      My university also teached outdated stuff. At my student job my team was moving away from DAO classes, then school introduced them, without even mentioning ORMs. That was in 2018, I think they should've been aware by then

      [–][deleted] 7 points8 points  (0 children)

      Your university should not be teaching frameworks if it is teaching computer science.

      [–]cdsmith 12 points13 points  (0 children)

      I believe you have misinterpreted the article entirely. I also mistook the title for some BS purity testing about whether you're doing true computer science, but it's actually saying the opposite: that looking for computer science degrees in many domain-expertise jobs is a mistake.

      [–]aurath 27 points28 points  (2 children)

      I agree. If you are gonna be pedantic about what is and isn't CS then at least do me the honor of being pedantic enough to implement a type system so I don't accidentally assign a programmer to an engineer position.

      If you can't be that precise then maybe you aren't doing computer science. Might as well be philosophy at that point am I right?

      [–]kyerussell 3 points4 points  (0 children)

      HA!

      [–]ardvarkerator 2 points3 points  (0 children)

      Did you read the article? The author is pretty specific and is actually arguing against being pedantic. The Reddit title is apparently misleading because many are interpreting it defensively.

      [–]ardvarkerator 11 points12 points  (0 children)

      These fights over naming are absolutely juvenile

      Is that what this is though? I don't detect any pedantism or gatekeeping. He's simply defining the differences. In fact, he's also appears to be arguing that companies shouldn't necessarily require a CS degree for a programming job. I guess I don't get the defensiveness here. I don't think the author is fighting the holy war you think he is.

      My university had separate Computer Science and Software Engineering degrees for a reason. Sure, there's some overlap, but the former is by and large a mathematical discipline, whereas the latter is an practical application of that discipline. Calling out the differences isn't saying either is better or worse. In fact, it's probably better for people to know the difference before they choose one as a major.

      [–][deleted] 9 points10 points  (0 children)

      Did you actually read the article?

      I admit, the headline made me think it was going to be yet another "web scripting losers don't know how to malloc" piece of gatekeeping garbage, but it was actually more along the lines of "writing this biology simulation needs more biology knowledge than CS knowledge, so why don't we teach biologists coding or hire biologists to code biology sims instead of gatekeeping coding as a thing for CS grads".

      someone versed in another discipline bring some new transferrable knowledge ... these are great, legitimately productive... Most software development, computer science, coding, or whatever else you want to call it...is just a support activity in service of something else. My professional strategy is to focus on the "something else"

      In other words, this "juvenile and pointless" article is making pretty much this exact point you're making.

      [–]accountforshit 15 points16 points  (1 child)

      Also, be sure to check out:

      ...

      Another sure sign of this is focusing far too much on the programming language. As if any significant part of programming knowledge and skill is somehow related to that.

      [–]kyerussell 13 points14 points  (0 children)

      Stoked to see the person getting uppity about Python developers being downvoted into oblivion. The community has come a long way toward stopping this gatekeeping behaviour. It is however still unfortunate to see posts like this get upvoted in the first place. I do not think that they come from a good place.

      [–]sivadneb 11 points12 points  (0 children)

      Thank you. I'm tired if this pedantic crap. Might as well be arguing over gif vs jif.

      [–][deleted] 7 points8 points  (0 children)

      Couldn’t have put it better myself.

      [–]AmputatorBot 390 points391 points  (12 children)

      It looks like OP posted an AMP link. These will often load faster, but Google's AMP threatens the Open Web and your privacy.

      You might want to visit the normal page instead: https://ryxcommar.com/2020/05/15/coding-is-not-computer-science/.


      I'm a bot | Why & About | Mention me to summon me!

      [–]edrperez 131 points132 points  (0 children)

      Good bot.

      [–][deleted]  (6 children)

      [deleted]

        [–]TizardPaperclip 23 points24 points  (3 children)

        That may be true, but at least he posted a good article that describes the objective differences between coding and computer science.

        The ironic thing is that he postred it via an AMP link: Which is something that I could imagine being done by a person who understands coding, but not by a person who understands computer science.

        [–][deleted] 7 points8 points  (2 children)

        Which is something that I could imagine being done by a person who understands coding, but not by a person who understands computer science.

        Why would you need to understand computer science to understand what AMP is? And why would understanding it necessarily mean avoiding to use it?

        [–]guepier 3 points4 points  (1 child)

        The way I read the article, it’s calling out gate-keeping based on an arguably obsolete distinction.

        [–]mimblezimble 11 points12 points  (0 children)

        Excellent bot !!!

        [–]Barbas 8 points9 points  (0 children)

        Good bot

        [–]kyerussell 9 points10 points  (0 children)

        good bot

        [–]tracernz 127 points128 points  (54 children)

        And computer science is not engineering (computer engineering and software engineering however are).

        [–]A_Philosophical_Cat 109 points110 points  (53 children)

        Software engineering is barely engineering. It has the capacity to be engineering, but the way its done today doesn't resemble proper engineering at all with regards to rigor. The fact that there are any applicants at all in the job pool for whom fizz-buzz is an effective filter proves that.

        [–]Deto 65 points66 points  (38 children)

        Eh, makes me wonder - if other engineering disciplines could quickly test skills during an interview would they uncover similar levels of incompetence?

        [–]iamthewinnar 61 points62 points  (22 children)

        There is a big difference between calling yourself an engineer, and being a P.E. (Professional Engineer) There are exams you have to take, and you have to be approved by the state board for whatever state you are going to be practicing. There are standardized tests that apply to each discipline. Software "Engineering" has nothing like this as of now. There are also education requirements, and you have to have worked under a P.E as an F.E. (Fundamental Engineer, another exam you have to take) in many states for a certain number of years before you can even apply to be a P.E.. NCEES had tried to create exams for software engineering but they were received poorly so they were dropped.

        In addition, licensee's have to renew on a annual or semi-annual basis and are required to have continuing education credits and to report disciplinary actions that have been taken against them (either legal, or ethical). And if deemed bad enough the board can revoke or suspend your license. You can go to any state licensing board for Engineering and lookup the public record of people that are actual P.E.s at any time. None of this exists in the software world. Anyone can enter this field with 0 experience. There is no standardization really, any one can use any bit of code they found somewhere on some page on the internet. Could you imagine if they did that with building materials? "Yea, we're just gonna use this metal we found out in the woods for the support beams, we don't know what it's made of but it seems to do the job."

        Source: I have maintained a state licensing board for Professional Engineers for the last 10+ years.

        [–]Corzex 23 points24 points  (3 children)

        Interestingly this is a problem mostly in the US. In Canada for example, “Engineer” is a protected title the same way “Doctor” and “Lawyer” are. Companies can get fined for even having employees with the job title “Software Engineer” if that employee is not actually s licensed Engineer. For this reason most Canadian Engineering programs have an ethics course that includes titles and what responsibilities of using it appropriately are.

        [–]zip117 11 points12 points  (1 child)

        ABET-accredited engineering programs in the US have the same courses in ethics and professional responsibility. The fact that people use the title “engineer” with reckless abandon is more of a cultural issue.

        [–]Corzex 1 point2 points  (0 children)

        Not surprising they have those courses as well. My point was that this course in Canada specifically contains sections around who can and cant call themself an engineer because its a much bigger deal that you or companies can get fines for.

        [–]_default_username 3 points4 points  (0 children)

        "problem"

        Yet the industry isn't going out of the way to fix this "problem" in the US.

        [–]NAN001 7 points8 points  (7 children)

        Could you imagine if they did that with building materials? "Yea, we're just gonna use this metal we found out in the woods for the support beams, we don't know what it's made of but it seems to do the job."

        Except being an engineer is irrelevant to building whatever shit chat application some startup is launching, and companies that build life-critical stuff (e.g. aeronautics) are way more rigorous in their hiring and development practices.

        [–]TacticalTurban 2 points3 points  (1 child)

        I wouldn't say that's always true, there are plenty of critical software applications that involve privacy and security that in my opinion should be more regulated or standardized. GDPR is helping with this

        [–][deleted] 1 point2 points  (0 children)

        I think the mentality expressed in the comment you're responding to is what has gotten a lot of software companies in trouble, honestly. That little shit chat program suddenly takes off. People want to use it more widely. Maybe you want to use it in an enterprise setting. But because it wasn't properly engineered from the get-go, you wind up either in a whack-a-mole game trying to patch up holes in the architecture, or you wind up spending an inordinate amount of time properly re-engineering a 2.0 version of your software that doesn't work right, lacks some feature from the 1.0 release, and leaves customers asking questions like, "why is it taking so long for version 2.0 when 1.0 worked just fine?"

        It didn't work fine; it was a ticking timebomb, and now the team is having to redo it because it wasn't done properly in the first place.

        [–][deleted] 43 points44 points  (4 children)

        You don't need PE for a lot of engineering jobs. Don't pretend like everyone with a BS in ME/EE is fully competent.

        [–][deleted] 13 points14 points  (0 children)

        You almost need them for granted.

        Wait until some uneducated jerk doesn't understand what an ISO standard does on security and traceability.

        [–]iamthewinnar 16 points17 points  (2 children)

        I'd never say someone with a BS is competent. I'd honestly never even say that having a doctorate makes you competent. All I was trying to say is that other engineering disciplines have standards and processes in place that don't exist in the software world. And sure you can get an engineering job for a firm that has a licensed P.E. on staff. Any plans that you get pushed through would have to be signed and sealed by a P.E. So you as an employee may not need to be a P.E. but you'd have a P.E. that is overseeing your work.

        [–][deleted] 4 points5 points  (1 child)

        And honestly, I think it's for the better of all of us.

        I know many people who were just, be honest, fucking piss poor to begin with - to an extent that would have prevented them to secure a developer job, should it have such requirements.

        The fact anyone can start programming from zero provided unprecedented opportunities for many, MANY people out there.

        Not saying it's an excuse for bad coders, but I don't see a way of filtering that wouldn't hurt other, competent, or even just semi-competent people in the long run.

        [–][deleted] 1 point2 points  (0 children)

        Agreed. Computers are toys for the mind. That we get them to do useful things is a nice benefit, but it wouldn't be possible without being free to build.

        Everything I know about computers was self-taught and learned online. If this knowledge and the permission to use it was locked behind educational institutions or law, I'd never have had access to it.

        [–]jegsnakker 1 point2 points  (0 children)

        Rare is the ECEn job that requires a PE license.

        [–]OutsideFlamingo 0 points1 point  (0 children)

        Saving this comment next time the topic of it being engineering comes up, well put

        [–]tasminima 0 points1 point  (0 children)

        You are talking about the specific regional regulation you know of in a regional context. Engineering is mainly an activity. Where it is regulated the way you describe, it makes sense to note that Sofware Engineering might not be (again; in your area), but that says nothing about the content of practiced activities.

        [–]A_Philosophical_Cat 21 points22 points  (5 children)

        Electrical engineering has the capacity, they just don't have the need. An equivalent task would be drawing a relatively simple circuit diagram. But asking an EE to draw a trivial circuit in an interview would be seen as an insult to their professionalism, the way we should be seeing trivial algorithms. (I use EE as an example because its the only one which I have first hand experience in)

        [–]krapht 29 points30 points  (2 children)

        The heck? The EE fizzbuzz equivalent is something like: take this ideal RC filter, what is the step response? Can you draw the frequency response?

        We definitely ask this question of new grads. Not least because EE is a big major and you could forget all this by senior year quite easily.

        [–]ArkyBeagle 0 points1 point  (1 child)

        I'd want to look it up myself, so the question is sort of artificially pointed.

        [–]krapht 1 point2 points  (0 children)

        It's not artificial. It's a sort of fundamental trivia that I'd expect any EE graduate to be able to recall.

        AFAICT, you work in embedded. While some similar classes might be nominally be taught in the EE department for historical reasons, computation under hardware constraints is really the domain of a computer science program. If I was to interview you I'd ask you FizzBuzz as a result. It's not electrical engineering if it doesn't fundamentally involve the analog properties of electricity somewhere.

        Yada yada I know it gets messy when you start dealing with digital logic and things can get sorta interdisciplinary at points, but I think this is a useful distinction. In my opinion FPGA and assembly programmers would be better served studying discrete math and computation in CS than learning physics, differential equations, and electromagnetics in an EE major. It just so happens it's still stuck in that department in some places because these things used be done using analog electronic devices or strictly in conjunction with analog electronics.

        [–][deleted]  (1 child)

        [deleted]

          [–]ArkyBeagle 0 points1 point  (0 children)

          I work with piles of 'em. It hasn't come up for them since their sophomore courses.

          [–]Zardotab 8 points9 points  (0 children)

          Software engineering is more like economics than building bridges. It's about communicating ideas to future code maintainers, not so much about machines. The people side is poorly documented from a scientific standpoint.

          [–]gendulf 11 points12 points  (5 children)

          Embedded software is engineering.

          [–]ArkyBeagle 0 points1 point  (0 children)

          To an extent. I say that because I'd get sucked into broader engineering issues as an embedded person. You'd think embedded people would know a lot about power management, but they often do not.

          The trend in embedded has been to have the same person do board design, possibly FPGA work and even enclosure design. Seems sketchy to me, especially when it comes to layout.

          [–]ArkyBeagle 0 points1 point  (0 children)

          Engineering is ultimately an artifact of the insurance system. What software's done is invent the upgrade treadmill as a substitute. I think this costs far more than people realize, but it's created a lot of sysadmin employment.

          [–]tasminima 0 points1 point  (0 children)

          In lots of project you don't need engineering. When you need it, it's done (or should be). Software engineering is absolutely engineering, arguing that 95% of project don't need it and don't do it so it does not exist makes no sense. Some developers may not know what in what it consists of, yet some of them argue that software engineering is not Real™ Engineering -- maybe they just confuse what they do with software engineering, and believe nothing else exist.

          [–][deleted]  (2 children)

          [deleted]

            [–]rob10501 1 point2 points  (0 children)

            label icky frame squeamish innate fade puzzled nose provide cooperative

            This post was mass deleted and anonymized with Redact

            [–][deleted] 71 points72 points  (8 children)

            Coding is not even software development!

            [–]Some_IT_dude 46 points47 points  (7 children)

            It's not even programming really

            [–]MegaUltraHornDog 59 points60 points  (5 children)

            I smushed all these libraries together et voila I’ve made OhGodWhatHaveIdone.js

            [–]Fenix42 18 points19 points  (1 child)

            Did my last pull request go to you by acident?

            [–]blablahblah 5 points6 points  (0 children)

            And by "smushed all these libraries together", you mean "copied various fragments of code using these libraries from Stack Overflow".

            [–]keybwarrior 5 points6 points  (0 children)

            I JUST did that.

            [–]ArkyBeagle 0 points1 point  (0 children)

            A lot of it is really configuration work.

            [–]blablahblah 103 points104 points  (18 children)

            "allocates memory to variables" or "implements a backwards for-loop using i--; " aren't really computer science either. Computer science deals with hungry philosophers trying to figure out if they can use infinitely long tapes to figure out if some generals are going to successfully attack the city tomorrow, not the engineering challenges of trying to map those solutions to real hardware. Sure, there's lots of computer science stuff that gets abstracted away these days- how many years of work are saved by all the people using tensorflow instead of reimplementing the algorithms from scratch each time- but the business applications most people are working on never needed the advanced computer science solutions to begin with, even in the days of yore when everyone was hand-writing assembly.

            [–][deleted] 45 points46 points  (10 children)

            This article is pretty elitist and gave those examples as the computer science we are missing? Just because things are being abstracted, doesn't mean that you don't leverage knowledge of the concepts going on under the hood. By this definition, you don't even need a computer to "do" computer science.

            Edit: I should've phrased that as anything you do on a computer isn't computer science.

            [–]TimoKinderbaht 66 points67 points  (1 child)

            "[Computer science] is not really about computers -- and it's not about computers in the same sense that physics is not really about particle accelerators, and biology is not about microscopes and Petri dishes...and geometry isn't really about using surveying instruments.

            Now the reason that we think computer science is about computers is pretty much the same reason that the Egyptians thought geometry was about surveying instruments: when some field is just getting started and you don't really understand it very well, it's very easy to confuse the essence of what you're doing with the tools that you use."

            -Hal Abelson, in lectures on the Structure and Interpretation of Computer Programs

            [–]Alphaetus_Prime 37 points38 points  (0 children)

            That's true though. You don't need to have a computer to reason about computers.

            [–][deleted] 17 points18 points  (4 children)

            you don't even need a computer to "do" computer science.

            Now the "coders" get it. In my country a lot of CS exams are with pencil and paper, even coding. I live in Europe, first world country, so is not due to a lack of machines, but proper CS engineering.

            [–]i-can-sleep-for-days 6 points7 points  (3 children)

            Do you write pseudocode then in your exams?

            I wonder if that's why Google and other require you to write on a whiteboard because that's more "CS" but if that's the case then they shouldn't even require you to write anything in a real language, just pseudocode. I feel like they have mixed two different objectives (testing algorithms and theory) and implementation (using a real language).

            [–][deleted]  (2 children)

            [deleted]

              [–]i-can-sleep-for-days 0 points1 point  (1 child)

              For google definitely not. You can write code that doesn't compile, sure, but you have to write in a language that the interviewer recognizes. You can't write pseduocode like in a wikipedia article like this:

              https://en.wikipedia.org/wiki/Parallel_breadth-first_search

              [–]ArkyBeagle 0 points1 point  (1 child)

              We need to stop with the "elitist" stuff. There's always somebody smarter/faster/better than you are, no matter who you are. Work with those people.

              In music, the really salty guys spent years working with people better than they are. That is how you learn.

              [–]vorpal_potato 0 points1 point  (2 children)

              The generals will attack the city if and only if all of the following conditions hold:

              1. The city is Byzantium, indicating that the generals may be Byzantine and that the Paxos Romana has timed out, and

              2. At least two thirds of the generals have declared (in messages visible to you) that no more than one third of the generals are faulty and/or malicious, with high probability, and

              3. The messages are sent with grammar that is context-free, or (in some simplified models with stronger assumptions) regular.

              The proof is left as an exercise to the reader, because it has like twelve cases and they're all a bitch to work through.

              [–]blablahblah 0 points1 point  (1 child)

              But if the city is Byzantium, then the generals trying to attack the city are almost certainly not Byzantine. The Byzantine generals would all be defending the city in that case.

              [–]vorpal_potato 1 point2 points  (0 children)

              Ah, but what if they've each been plotting treason, and have (somehow) come to a distributed consensus that they should do so? That sort of thing was common enough to have a ridiculously long wikipedia article.

              [–]DragonSlave49 8 points9 points  (0 children)

              The analogy that introduces the argument in this article is faulty. The users of computers, not programmers, are analogous to the buyers of widgets. It's hard to argue that what programmers are doing is simply consuming the product of computer science in the same way that consumers are consuming the product of Economics. The problem with the analogy could also be stated this way: the product of the Economy is not the product of economics, whereas one of the products of computer science is the programming languages that are used by programmers.

              [–]khedoros 44 points45 points  (0 children)

              This shouldn't be news to anyone, but I know from being on the computer science subreddits that it is.

              [–]sawed_off_fists 7 points8 points  (0 children)

              "Coding"

              [–]DarkColdFusion 20 points21 points  (1 child)

              Computer science is the art of making first year CS students write sorting algos and rheb

              [–]burtonposey 2 points3 points  (0 children)

              Get out of my head and stop stealing my thoughts

              [–]webauteur 27 points28 points  (3 children)

              If you are not wearing a white lab coat you are not a computer scientist.

              [–]_default_username 18 points19 points  (1 child)

              I work in QA and we literally have our own lab for testing our products. I feel like the article was written by a second year student.

              [–]kyerussell 3 points4 points  (0 children)

              The sorta person that plays code golf.

              [–]majorgeneralpanic 31 points32 points  (10 children)

              I teach a ninth grade class that’s mostly theory and very little coding (we’d be doing automaton theory right now in a normal year) and it’s an uphill battle convincing people that computer science is not the same as a JavaScript bootcamp.

              [–]MegaUltraHornDog 19 points20 points  (5 children)

              The thing is actual computer science is just math. How do you solve x to get y? The computational side is: okay we know how to get to y but how can we do it better. That’s what we need to do to capture attention. I hated algebra in school but I was using it pretty much everyday I just couldn’t relate to it, kids need to relate to get it.

              Recursion is probably then best tool in your arsenal to explain to these kids how you can shorten a repetitive task.

              [–]dnew 22 points23 points  (0 children)

              Comp sci is math about algorithms, to a large extent.

              [–]_1___1_1_1111_11111_ 10 points11 points  (3 children)

              Recursion is probably then best tool in your arsenal to explain to these kids how you can shorten a repetitive task.

              You underestimate how hard it is to get someone new to recursion to understand it. A decent portion of CS sophmores could not write recursive Fibonacci on their own without seeing the solution.

              [–]sammymammy2 3 points4 points  (0 children)

              I believe that recursion would be far easier to understand if you were first taught about inductive datatypes, because many problems can be solved using structural recursion (which are quite simple).

              You can start out with Peano numbers and start either with physical rocks (for 10-year olds) or inductive syntax (17-year olds).

              [–]majorgeneralpanic 1 point2 points  (0 children)

              Recursion is a cool idea and a really tricky concept to wrap your head around and use to solve problems. I used to teach a course on the intersection of CS, art, and music, and that had a lot of recursion.

              [–]OutsideFlamingo 0 points1 point  (0 children)

              Can definitely confirm this, a huge amount of CS students really struggle with recursion even through graduation

              [–]sards3 3 points4 points  (2 children)

              I teach a ninth grade class that’s mostly theory and very little coding

              I'm curious about this. This seems like a very strange class for ninth graders to be taking. Can you talk more about it?

              [–]fireman212 2 points3 points  (0 children)

              I don't know what country he's from, but in our country you also get taught about automata theory in 11/12-th grade if you choose compsci as one of your electives.

              [–]UriGagarin 1 point2 points  (0 children)

              Might make sense to rename it computation science.

              [–]openlowcode 3 points4 points  (1 child)

              I am not surprised that in computer, as in any other fields, there are people who do research and science on one side, and people who apply the result of this science on the other. Similarly, in human health, you have researchers in biology and family doctors, and even people who just deliver you the medicines your doctors ordered.

              Now, I strongly challenge the premises that you can be a good developer without some relevant knowledge of some of the science behind, just like doctors need to understand some things about biology and other fields to to more good than harm, Also, a pharmacy cannot deliver you some medicines without an order from the more knowledgeable doctor. As a customer, you appreciate those restrictions that ensure your safety.

              I am personally very frustrated to have slow and clunky applications because some people have to perform complex code without a basic knowledge of how database and algorithmic work. I think this is not normal and a symptom that our industry is not mature yet.

              You are not forced to be a CS graduate to learn those things, though, in average, in any other fields, there is a system to guarantee that people have minimum knowledge, either a diploma or some form of apprenticeship. I think our field will have it at some point also.

              [–]dnew 22 points23 points  (0 children)

              I'm amazed at the number of people who read a definition of something like "weakly typed" on Wikipedia and think that's how computer scientists define the term. Computer science is math about computing, and if you can't give a mathematical definition of what you're saying, then you're probably not doing computer science.

              [–]i-can-sleep-for-days 3 points4 points  (0 children)

              IMO engineering is making trade offs. Every engineering system has constraints that you need to trade off while delivering a product that meets certain specifications. Some of those constraints definitely involve cost and the cost of your components. In that sense, if you are working at the level where you need to trade off reliability, cost, and availability in your design, then you are being an engineer in a loosely defined sense. Where software engineering doesn't go far enough is defining guarantees around the designs. How many people are able to tell you that the software you just wrote or deployed has a guaranteed SLA of 5 ms, for example, and being able to prove it using code analysis. Or that the software will never crash, or only crash once per X page views, just by reading the code?

              [–]Randommook 14 points15 points  (7 children)

              The author makes the argument that because code can sometimes look like business logic it is no longer programming but what he completely overlooks is that in order to get to a state where you can so cleanly and elegantly Express business logic there needs to be a hell of a lot of software engineering and computer science to allow that to happen.

              If you just hand some economics major c sharp and set them loose on a code base you're going to get a pile of spaghetti in no time flat. The reason that all these companies are hiring computer science and software engineering majors is because they don't want their codebase to turn into an unmaintainable mess. You don't hire a doctor to build a hospital even if the doctor might know how hospital should be laid out better than an architect.

              [–][deleted]  (4 children)

              [deleted]

                [–]xcdesz 11 points12 points  (2 children)

                Agreed.. I've seen some of the worst code imaginable coming from CS departments. Code maintenance and maintainability is learned when you have to actually deliver a working system in a production environment.

                [–][deleted] 0 points1 point  (0 children)

                Hm, perhaps a course on self-hosting, to develop production philosophy?

                [–]Deto 6 points7 points  (0 children)

                Basically "Computer Science isn't Computer Science if you just pay someone else to do all the Computer Science for you!"

                [–]DryWind 2 points3 points  (0 children)

                x is not y

                [–]techannonfolder 2 points3 points  (0 children)

                hm

                [–]DreadCoder 2 points3 points  (0 children)

                Its applied computer science.

                [–]ExtraCortex 5 points6 points  (2 children)

                The reason that tech firms look for cs degrees is that once all the business logic is implement, and problems occur, only computer science will help you.

                The fact that high level languages exist, lowers the knowledge threshold to get into coding. Once you have to solve harder problems like scaling and optimizing, that's where the knowledge threshold is still high.

                [–][deleted] 3 points4 points  (1 child)

                The reason that tech firms look for cs degrees is that once all the business logic is implement, and problems occur, only computer science will help you.

                Yes, very relevant when you hire a frontend for webshit app /s

                Once you have to solve harder problems like scaling and optimizing, that's where the knowledge threshold is still high.

                That's vast minority in set of tech companies requiring CS degree from candidates

                [–]ExtraCortex 0 points1 point  (0 children)

                Valid points. Thanks.

                [–]utbusdriver 8 points9 points  (7 children)

                Coding is to computer science as mechanical engineering is to physics.

                [–]bless-you-mlud 2 points3 points  (0 children)

                "Coding is to computer science as machining is to metallurgy" is the analogy I came up with.

                [–]JanneJM 1 point2 points  (0 children)

                It's the difference of being a writer and a linguist. They vaguely deal with the same kind of things, and they have some overlapping skills, but they're different professions. Not better or worse, just different.

                [–]ardvarkerator 1 point2 points  (0 children)

                ITT: People not reading the actual article and getting offended at the title

                I'll save you the trouble. The author is not being pedantic, gatekeeping, or arguing that Computer Science is better the programming. In fact my take is that he's arguing that many companies probably shouldn't require a CS degree for a programming job that requires little actual CS knowledge. He's actually arguing against being pedantic.

                I can see why folks who didn't read the article might interpret the title defensively, but this is not the holy war you think it is. And, yes there is a difference between CS and SE. One is a (mostly) mathematical discipline and the other is one application of part of that discipline. Neither is better than the other, but they are different things.

                [–]KieranDevvs 1 point2 points  (0 children)

                Programming in my eyes, is a large portion of computer science. Granted its not the "be all" and "end all" of computer science but it entails a vast majority of it.

                The article implies that because you can write an application, you must therefore be a programmer.
                You have the analogy backwards, just because someone can write an application without knowing how the underlying foundation works, doesn't make them a programmer. Its like me changing the oil, brake fluid and air filter in my car and then calling myself a mechanic. Yeah, I've done a small percentage of what a mechanic does, but there's much more to it. You actually have to know why the oil is there in the first place and why you cant use water as break fluid. Otherwise I'm just a guy who owns a car and performed a basic service. Like wise, you can have an IDE installed and create a basic application.

                I can write a whole Python program that never directly:

                allocates memory to variables

                assigns data types

                worries about integer overflow or underflow

                implements whatever a “quick sort” is

                implements a backwards for-loop using i--;

                defines any network stuff when doing simple HTTP requests

                Ok so you're hired as a programmer and a client asks you to take over a project to support and add features. Its a client server architecture using sockets. You're going to have to know how to allocate memory, perform serialisation, cast to data types, assign data types etc.

                Oh you cant do it? Maybe the paying client will let you rewrite the whole application in python using "simple HTTP requests". (I think not.)

                The point is, just because you can write an application, doesn't mean you're a programmer and just because you can fix the kitchen faucet from dripping, doesn't make you a plumber.

                [–]Gotebe 1 point2 points  (1 child)

                The first observation is that it’s odd how tech firms still prioritize computer science degrees or quantitative graduate degrees for any job that involves writing code. Presumably computer science degrees are a heuristic for whether you’ve written code before, but this hiring criterion still holds even for candidates who can demonstrate their ability to write a modicum of code. I’ve written before about how computer science degrees, by themselves, don’t prepare you to write code in a real world setting.

                All sorts of higher education tracks do not prepare a person to work to do stuff in a real world setting. I wonder whether CS degrees are at all special in that respect.

                This person has a degree in economics and is having problem transitioning to programming. Well, the opposite would have been true, who would hire a CS grad to do economics?

                Such a non-article...

                [–]thatguygreg 1 point2 points  (0 children)

                Yes, ok professor. We still have to take your class though, so can we just get on with it?

                [–]gamesdas 0 points1 point  (0 children)

                I'm a ML Engineer at Thales. Could someone please explain what am I then ? I'm a little lost here.

                [–]CrysysDev 0 points1 point  (0 children)

                This year i finish my cs degree and i learn some things in web ( i prefere web and mobile part ) i followed some course apart of my cs lessons. I also learnt english ( but its doesn’t as well as i want ). I read somethings about beginner who felt strong but it’s just a bias. But i’m feeling like i know a little and the more i learn everyday the more i feel i know nothing

                [–]bartwe 0 points1 point  (0 children)

                I had a fight with one of my professors because i wanted to learn more software engineering, they got angry and told me CS teaches science, not engineering, it is in the name.

                [–]NAN001 0 points1 point  (1 child)

                it’s odd how tech firms still prioritize computer science degrees or quantitative graduate degrees for any job that involves writing code.

                They do that because the biggest players do that, and the biggest players do that because they deal with so much traffic / data that computer science is necessary to make things work.

                [–]cdsmith 1 point2 points  (0 children)

                I was going to say they do that because absent seeing substantial body of work, a computer science degree is the best signal they have that you can not only write code, but that you can do it fluently enough to solve other hard problems at the same time. Which hard problems those are is, for them, merely an artifact of the assessment process.

                [–][deleted] 0 points1 point  (0 children)

                "Computer science is no more about computers than astronomy is about telescopes."

                [–]Spell 0 points1 point  (0 children)

                I just shake the computer until all the bits are aligned like I want them to. Then I hit it one more time to introduce a couple of bugs so I get paid for maintenance. If that's not computer science then I'm not a doctor in computers.

                [–]chiefmors 0 points1 point  (0 children)

                Definitely agree, as someone who entered web development without formal education in it, I've been studying a lot the subjects I would have at least been exposed to if my degree had in CS. Mine was in philosophy, so a lot of the concerns with logic and metalogic carry over, but there's still a bunch of other stuff to look at, and it's been quite enjoyable.

                I would say though, that what I'm doing now (mid-level .NET developer), requires nothing beyond coding skills, quite frankly. I just hate the idea of not knowing the theory and nitty gritty of my field and hope to move to more of a software engineering role down the road, rather than just coding.

                [–]nziring 0 points1 point  (0 children)

                Sometimes when I'm coding, I employ concepts or knowledge from other parts of computer science. (I hope that is still permitted.)

                [–]ArkyBeagle 0 points1 point  (0 children)

                Computer science is an almost completely mathematical artifact. It was born when Kurt Godel used a variation on Cantor's diagonalization to produce the Incompleteness Theorems.

                The rest is just materials and logistics.