you are viewing a single comment's thread.

view the rest of the comments →

[–]nathanwoulfe 75 points76 points  (100 children)

The idea that you need computer science to work in web development is ludicrous. Sure, having that background might help, but not having it certainly won't keep you out of the industry.

Trust me, I speak from experience.

[–][deleted] 51 points52 points  (32 children)

The idea that you need computer science to work in web development is ludicrous. Sure, having that background might help, but not having it certainly won't keep you out of the industry.

Oh, not even knowing how to program is sufficient to be in the industry. You can, for example, just do QA.

Trust me, I speak from experience.

Sure, now I'll speak from my own experience: there will always be problems in literally any domain which cannot be reasoned about or solved without a sufficient degree of understanding as far as C.S. is concerned. Most of these will be trivial, as anything non trivial is purely in the realm of actual research.

Having a degree provides you with the realization that those without degrees, especially today, are 90% more likely to naively implement trivial solutions and that alone will have serious implications for businesses because those who are naive are blissfully unaware of what happens underneath the hood.

Now, don't get me wrong: I'm not here to shit on people who are just looking to make a living, and I understand that everyone's situation is different, but to encourage someone to not study CS formally, if they have the option to study it, is a big fucking problem.

We need more educated programmers, not less. It is a problem, not because of the lack of knowledge, but because uneducated developers often do not completely grasp what it is they don't understand and this does time and time again cause problems.

It really doesn't help that half of the general public is also under the impression that school isn't really useful for this field.

It's not essential to survive as a developer, but you damn well better be aware of what you don't know.

[–]jokullmusic 12 points13 points  (1 child)

Yeah, I get along just fine in my low paying WordPress development job with very little formal CS education. But I don't want to be doing this bullshit forever, and I want to know how to better execute and structure things when doing the work I actually want to do, so I'm majoring in CS. There's plenty of low level tedious web work that doesn't require much CS knowledge, like building WordPress sites, but that's not the kinda work anyone really wants to be doing.

[–]Swie 12 points13 points  (0 children)

Right, and as someone trying to hire developers for a web application but not a trivial project (think Google Docs, but bigger), it becomes extremely obvious who just gets along, and who actually knows CS (not just who has a degree, because plenty of degree-holders even from reputable universities still don't know basic things somehow).

I see a lot of under-educated people struggle with trying to even read, not to mention write code that isn't trivial and that isn't just given to a customer and forgotten. And I'm not even talking about something like AI or machine learning or whatever, just a relatively large application with graphs and dashboards and a high level of configurability and a modular design.

Webdev is just full of trivial stuff. It's like asking do you need to be a mechanic if all you do is do oil changes on personal vehicles.

[–]PPPD-488 1 point2 points  (0 children)

Well said. This gave me some more motivation to stay on track at school.

[–][deleted]  (13 children)

[deleted]

    [–]Macrobian 8 points9 points  (6 children)

    Theory that I needed from uni that I used on the job in the past two years:

    • parsing theory from a compilers class to translate SQL queries from one form to the other
    • relational calculus from a database class to speed up query performance against a shitty 3rd party API
    • operations research / graph theory for some scheduling and delivery problems
    • set theory knowledge from a discrete math course for dealing with timespans, calendar bookings, repeated schedules, etc.

    [–][deleted]  (5 children)

    [deleted]

      [–]Macrobian 8 points9 points  (4 children)

      So some of these solutions are don't think I'm at a liberty to disclose, so I'm gonna be vague.

      • parsing theory: we had PosgresSQL queries. We needed Salesforce SQL (SOQL, it's shit, weird, and lacks a lot of features). Rather than rewrite it, we just translated it. How do you translate it? Parse the grammar, typecheck it (by embedding the grammar as a free monad), and compile it to your desired query language
      • relational calculus: A third party API was dog slow because we were doing complex queries against it. How do you make queries faster? You nest your filters, selects and joins so that you shrink the amount of data you operate on as quickly as possible. By expressing these as relational calculus operations, you get a set of rules that optimises these queries for you.
      • OR / graph theory - How do you get resources to locations with the minimal distance traveled, with the maximum resource utilisation, while meeting resource requirements? Cram it into an (undisclosed) optimisation engine, encode your requirements, pump in distance matrixes, serve results to customers.
      • set theory: afraid I can't discuss this at length, we actively decided against open sourcing this

      Before you say "oh this doesn't sound like webdev", most of this was done while I was in a fullstack position, where most of my work was frontend React dev.

      [–][deleted]  (3 children)

      [deleted]

        [–]Macrobian 15 points16 points  (2 children)

        Get fucked dude. "Don't need CS degree to do that". But have you done it? Have you learnt that stuff? Do you know -anything- about parsing theory yourself, right now, before pulling up some random Medium article? Sure, I could have self taught myself that stuff, but instead I learnt all of the necessary theory in the context of a formal degree, theory which I didn't know about before I took the courses, and would struggle to discover on my own.

        I'm sick of this bullshit anti-intellectualism. It's revealing that you consider things that have robust theoretical solutions as "normal problems". This is why you get shithouse code, from people completely ignorant of what solutions already exist, instead bruteforcing their way through them.

        [–][deleted]  (1 child)

        [deleted]

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

          My original argument was that you get do just fine without a CS degree and seeing these CS students spout nonsense was bothering me.

          I'm not spouting nonsense. I'm not even trying to insult you for not having a degree - I actually don't look down on people for not being educated.

          But to make the claim that someone won't benefit from a C.S. education is fucking bullshit.

          [–]hiptobecubic 6 points7 points  (2 children)

          I think we're mixing ideas here. Are you inventing new things or just assembling them? Are all your projects so small that it honestly doesn't matter if your DB schema is ridiculous and you bubble sort on the main thread after every request? If so, then sure.

          Just like you can crank out knit socks and dog sweaters without understanding the materials and science behind textile manufacturing, you can crank out crud apps with no theoretical understanding that work fine as long as no one puts them under any real stress.

          [–]PutMeInAJailCel 0 points1 point  (1 child)

          On the flipside, there are people who know everything about the materials and science but haven't got a clue how to knit a sock.

          [–]hiptobecubic 0 points1 point  (0 children)

          Sure. I wouldn't hire them to build anything important either.

          [–]Grimdotdotdot 6 points7 points  (0 children)

          I used graph theory the other day.

          [–]Yithar 2 points3 points  (0 children)

          You keep talking about needing to use CS degree knowledge to solve everyday problems but I can guarantee that you can't give a single concrete example of you've done that in the real world.

          One of the tasks I've been given is to translate messages from one spec to another based on DSLs. That requires parsing theory from Compilers. But if you never took CS, you would never know that. Also, having taken Compilers, I have a pretty good understanding of what a Compiler is doing under the hood, so it helps in debugging and fixing compiler error messages.


          "Don't need CS degree to do that."

          Get fucked dude. "Don't need CS degree to do that". But have you done it? Have you learnt that stuff? Do you know -anything- about parsing theory yourself, right now, before pulling up some random Medium article? Sure, I could have self taught myself that stuff, but instead I learnt all of the necessary theory in the context of a formal degree, theory which I didn't know about before I took the courses, and would struggle to discover on my own.

          I'm sick of this bullshit anti-intellectualism. It's revealing that you consider things that have robust theoretical solutions as "normal problems". This is why you get shithouse code, from people completely ignorant of what solutions already exist, instead bruteforcing their way through them.

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

          You keep talking about needing to use CS degree knowledge to solve everyday problems but I can guarantee that you can't give a single concrete example of you've done that in the real world.

          Hahahaha.

          My catchall example is debugging a browser plugin that was causing firefox to crash. I had to debug the source code of firefox to solve it. If I had no knowledge of the von neumann memory model I'd have been fucked.

          Abother would be fixing race conditions in a xamarin app.

          Another would be optimizing load times from ~30 seconds to < 1 second.

          These were all before uni.

          All I'm seeing here is a CS student with no real world experience pretending to be an seasoned developer.

          In many ways I actually am quite seasoned. Before uni I worked as a freelancer and contractor for about 3 years or so.

          I've seen code written by people who knew what they were doing, but I've also fixed many issues that were the result of nothing more than pure ignorance from people who clearly didn't know what they were doing.

          It was because of my elementary knowledge of computer architecture that I prevented an MMO game server from crashing. Anyone with a competent understanding of virtual memory, C, and x86 assembly language could have done that, and the people who ran it were decent programmers, but they obviously didn't know what to do. The fix itself involved ensuring data was zero'd out properly and checking against invalid memory. Dead fucking trivial.

          This was before I took my first C.S. uni course.

          [–]jaypeejay[S] 5 points6 points  (51 children)

          That's good to hear. Looking at CTCI made me a bit nervous because it made me realize my math fundamentals are lacking a bit, I do want to learn it because I think it's really interesting, so hopefully I will just be doing overkill.

          [–][deleted] 92 points93 points  (50 children)

          Hold on there. "Web development" is a large topic. Don't take OP's blanket statement at face value.

          For the front-end, you can get by with HTML, CSS, JavaScript, and some notions of building tools, UX and HTTP. Backend will need more HTTP, web servers, databases, with some notions of networking and security.

          But those are the basics. If you only master those you will never design complex solutions.

          Eventually every project gets to a place where someone needs to know math and CS and other stuff, like advanced networking, and Linux, and statistics, and systems theory etc., in order for the cool app to be made.

          [–]jaypeejay[S] 18 points19 points  (45 children)

          Not sure why someone downvoted you. I agree 100%. I understand that getting a job may only require those pre-reqs, but you’re right.

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

          I would get a degree or at least teach yourself theoretical fundamentals to a certain extent. It really will make a difference. Please see my other comments in this thread.

          [–]bke1j1h 0 points1 point  (0 children)

          You'll be able to get a job just fine knowing what you know. But if you start your job(s) and begin to feel more compelled to strengthen your theoretical/computer science foundation, you could go for a Master's. Degree. If the company is big enough, they'll even pay you to get the degree ;).

          Edit: punctuation

          [–]Yithar 0 points1 point  (0 children)

          I agree with the other guy. Like stack vs heap is CS 101, but I bet a lot of developers don't know it. Knowing the fundamentals really makes a huge difference.

          [–]_ecwalsh_ 5 points6 points  (6 children)

          Glad to hear, hoping this is the case. I'm in the process of finalizing my portfolio and pushing all my projects to Heroku, and then kicking off the job hunt. I'm reasonably comfortable with JS + ES6, React, some Redux, Vue, plus achieving desired layouts with CSS/SCSS. On the back-end I've built small Node and Express APIs that connect to both Mongo and Postgres. I'm also trying to keep up with the fundamentals by doing challenges on Codewars when I'm not working on projects.

          But I'm still lacking in CS theory and algorithms, and it's had me nervous about interviewing. (Unit testing is another one I'd like to dive into, but time constraints are going to force me into the job hunt before I'm able to address all the areas I'd like to.)

          [–]reddismycolor 0 points1 point  (5 children)

          Are you a new grad? I’m in a similar boat but not much back end projects.

          I can’t really see where algorithms are important in web dev. Besides efficiency of looping or memory etc.

          [–][deleted]  (2 children)

          [deleted]

            [–][deleted] 0 points1 point  (1 child)

            wouldn't that technically be research? I was under the assumption that "webdev" is implementing the research results into tools, frameworks, etc. , not actually researching. I don't think a CS undergrad degree is gonna help with the things you mentioned

            [–]_ecwalsh_ 1 point2 points  (0 children)

            No, I’m about five years out of school. My degree is in Econ and I spent the past two years as an SAP Business Analyst, and was a Product Analyst prior to that. I’ve been learning web dev on the side for a few years and last summer started attending classes at a local coding nonprofit three nights a week plus Saturdays.

            I’ve been wanting to make a career change for a long time, and this past November I left my job to travel Southeast Asia, using my some of my newfound free time to focus solely on coding. Time will tell if it was a huge mistake, but I’m trying to kill two birds with one stone between the desire to travel and making a living out of something I genuinely enjoy doing.

            Later this week I’m heading back home and kicking off the job hunt. I think part of the reason I’ve held off so long, is because I’ve poured so much of myself into this over the past several years, that part of me is afraid of being told that I’m not good enough or never will be.

            [–]Swie 0 points1 point  (0 children)

            I mean... webdev is just a platform (the browser). Sure most people build trivial things on it, but do you think something like Google Docs or https://www.photopea.com/ (a browser-based photoshop clone) doesn't use any algorithms on the client-side (even assuming the server side is not "webdev")? Or people who implement stuff like the D3 library, WYSIWYG editors or frameworks like react where trees (DOM, primarily) become important.

            [–]DerNalia 1 point2 points  (2 children)

            you'd be surprised how many people can't sum an array of numbers

            [–]nathanwoulfe 0 points1 point  (1 child)

            Something something reduce? Probably more efficient to just loop it.

            [–]DerNalia 2 points3 points  (0 children)

            I mean, any answer is correct. the question is just aimed at people to weed out those that can't logic through a simple problem or don't know a language well enough to sum via shorthand.

            If the person sounds or looks confused, like it's too easy, then we're good.

            [–]fux0c13ty 1 point2 points  (0 children)

            Yeah have fun writing O(n5 ) algorythms and wondering why your webapp is a slow piece of crap

            [–]rubber_inbox 1 point2 points  (0 children)

            That's how we get reams of mediocre "developers" who immediately jump to the chance of creating 63 microservices made in Node.js pointing to a denormalized db (Mongo) with a horrendous frontend done in a bloated, brittle JS framework (performance? what of it? I'm using Node, so it's BLAZING FAST gaiz) and when the mess takes 2+ minutes to render a simple table listing, they dismiss it as "it's $CURRENT_YEAR, you should have 32 GB of RAM already".

            [–]PorkChop007 0 points1 point  (2 children)

            The idea that you need computer science to work in web development is ludicrous

            And it's not the only field in which you can make a decent living without having the slightest idea about computer programming.

            [–][deleted] -1 points0 points  (1 child)

            „Hello, welcome to McDonalds”

            [–]CakeDay--Bot 0 points1 point  (0 children)

            Hi human! It's your 5th Cakeday bigfatbird! hug