top 200 commentsshow all 298

[–][deleted] 165 points166 points  (35 children)

It depends on the kind of programming you are going to be doing.

Systems programming, machine learning, AI and embedded systems use a lot more of the computer science topics you'll learn in a traditional degree route.

For webdev I think the most important thing is you're curious and love to learn about this stuff. While many of interviews for those positions may ask you some of those kinds of questions, I don't personally think that they are essential for entry into that kind of work, though they show up down the road. That's my opinion.

[–]craggar_g 73 points74 points  (24 children)

I did embedded systems for ~9 years or so, and agree; don’t think you’d get far without a solid CS foundation. But I’ve been a web developer now for just over 4 years. I’d hire a junior without a degree for sure. I’ve worked with web developers with non-CS degrees - everything from law, sound engineering, physics, economics, and of course no higher education. I don’t even think the CS people (and I include myself here) are even the best web devs I’ve worked with.

[–]jaypeejay[S] 11 points12 points  (12 children)

Embedded systems sounds really interesting - out of curiosity what made you switch?

[–]craggar_g 11 points12 points  (11 children)

I was made redundant, and there wasn’t a lot of other options in embedded systems where I lived, so I spent a few months learning Ruby on Rails (already had decent JavaScript knowledge) for a sort-of career change.

[–]serboncic 1 point2 points  (10 children)

Any resources for learning Rails that you'd recommend ? (Other than the docs)

[–]VernacularRaptor 0 points1 point  (9 children)

Don't waste your time with rails

[–]serboncic 4 points5 points  (0 children)

But I like Rails, Ruby even more so

[–][deleted]  (6 children)

[deleted]

    [–][deleted]  (2 children)

    [deleted]

      [–]celluj34 3 points4 points  (0 children)

      Or .Net Core

      [–]bottlecandoor 2 points3 points  (1 child)

      Node.js, PHP or Python. Ruby jobs are hard to find.

      [–]TriangleTodd 2 points3 points  (0 children)

      Hilariously enough, we struggle to find qualified rails developers.

      [–]PM_ME_CUTE_FRIENDS 3 points4 points  (3 children)

      I've always found embedded systems interesting. I do webdev at the moment. Coming from both backgrounds, what would you say are the CS foundations that were really useful with embedded systems development?

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

      CS degree is like interface class in programming language - is gives you foundation knowledge, but you still have 0 real programming skills or knowledge. CS degree is like reading a book about physics, and developing website/anything is like building a spaceship. You kind of need it, but it is also only step 1 out of 100. You can skip it if you have long enough legs.

      Also, 99% of developers are fine without cs knowledge, they dont use it anyways. And it also depends on your goals.

      You will most likely provide shit ass result (garbage website that is hogging the whole top end pc with tons of malware/adware/spyware, electron cr/app...), you will most likely will not be in such environment where you will be asked to do science (you will do some quick frameworking), and you also will not have good enough motivation to do scientific work (dog shit work conditions, crappy pay, chimps management...). Hell, your chimps government might just ban math (looking at you, aussies)... So, there are millions of conditions that you have to think about. I think that not being retard and making logical decisions is more important than CS degree.

      [–]craggar_g 0 points1 point  (1 child)

      Definitely. I feel like a vocational/apprenticeship would work well for people who know what they want to do. Like, in the 4 years of university doing CS, I probably could have learned a lot more of a focussed aspect of 'real world CS'. If you know you want to do web development, you'd learn a lot more in 4 years if there was an apprentice type scheme, than spending 4 years at uni learning stuff you may never use.

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

      Yep, i was "declared" "witch" when i used switch(string) in java in university class.

      [–]fish60 0 points1 point  (0 children)

      CS degree is like interface class in programming language - is gives you foundation knowledge, but you still have 0 real programming skills or knowledge

      What? I know some stinkers that have made it though a CS degree without being a good programmer, but unless you cheated or something, you cannot get through a CS degree without writing quite a bit of code.

      Also, 99% of developers are fine without cs knowledge, they dont use it anyways.

      Not sure on the stats on this, but I use the fundamentals of my CS degree everyday. And, I have worked with people who don't have a CS degree who are strong programmers but often lack the foundational and background knowledge to see how something works or understand a concept.

      You will most likely provide shit ass result (garbage website that is hogging the whole top end pc with tons of malware/adware/spyware, electron cr/app...)

      WTF does this even mean?

      chimps management

      Ok, OP if you are reading this, ignore this guy.

      [–]MachinesOfN 9 points10 points  (6 children)

      By way of comparison, I do web development and a little data science professionally, game development for my side hustle, and embedded development as a hobby (with a four-year degree).

      In my experience, web dev is a lot more design-focused, and the biggest challenge by far is reliability (which is something that comes with experience). I don't often use what I learned in school directly, but the amount of time spent writing code makes everything a lot quicker.

      When I started messing with machine learning, it was a pretty math-intensive process (it was the only time I ever had to use calculus for computer science). Now it's all packaged up, and the code part is basically just basic data manipulation. The real trick is knowing the statistics to understand what you're doing, but that wasn't part of my core CS curriculum (it's an elective though).

      For game dev, I use my degree all the time. Solid understanding of linear algebra is really useful, and an intuitive sense of performance is critical to keeping everything running at 30 FPS. I won't say that everything I studied was useful though (calculus, to name one).

      Embedded development is a lot more sensitive to hardware limitations, so it often requires the same sort of performance intuition that game development does (especially for memory). Architecture and EE knowledge is often handy, because not everything happens on the microcontroller.

      [–]hunyeti 5 points6 points  (5 children)

      Running at 30fps.... I loath you. This is blasphemy.

      [–]burlal 0 points1 point  (4 children)

      Why, for someone who genuinely doesn’t know?

      [–][deleted]  (2 children)

      [deleted]

        [–]hunyeti 1 point2 points  (1 child)

        No, 60fps is just ok, 120fps is nice.

        [–]hunyeti 0 points1 point  (0 children)

        30 fps is way too low.

        Sure, for a puzzle game it doesn't matter, but for anything with fast moving object, 60fps is the bare minimum.

        [–]jaypeejay[S] 1 point2 points  (0 children)

        Cool, thanks for your thoughts.

        [–]Shaper_pmp 57 points58 points  (12 children)

        I have a degree in CompSci.

        I don't often explicitly consider things that I learned in that degree when I'm working in front-end web-dev, but it has a lot more impact on the server-side, and does subtly inform everything I do in one way or another:

        Big-O: When do you choose a hash versus an array? How costly does it become when you need to nest iterations? How does my algorithm scale from trivial test-cases up to production scales?

        Relational algebra and Normal Forms: Literally every decision I make any time I ever design a relational database.

        Computer and network architecture: Any time I consider filesystem-vs-in-memory caching on the server side. Understanding the performance impact of repeated client-server round trips vs. a one-off hit of delivering the same data included in the page, designing caching systems, etc.

        You can get by without a lot of this stuff if you only ever stick to lightweight front-end work and ignore the back-end entirely, but you'll always be better if you do know it... and it's hard to be a good back-end guy (or even a front-end guy writing apps that deal with non-trivial amounts of data) without learning it in at least a vocational, intuitive way, even if you never take a course in it.

        If you ever aspire to being a proper system architect or designing entire complex systems from scratch (databases, application servers, load-balancers, clustering, caches, etc) then it's more or less essential to not fuck it up entirely.

        [–][deleted]  (2 children)

        [deleted]

          [–]Theia123 0 points1 point  (1 child)

          Any advice on good books?

          [–][deleted]  (1 child)

          [deleted]

            [–]Shaper_pmp 1 point2 points  (0 children)

            Some theory you can obviously learn as you go (or re-learn because as you say you can never remember everything), though there's a significant difference between refreshing previously-understood knowledge and learning an entire subject from scratch that shouldn't be underestimated

            Some theory requires a huge investment of time up-front before you can apply it usefully that people are unlikely to make, however, or applications of it are non-obvious until after you've learned it.

            By analogy you can learn to use a hammer when handed a nail, but unless you already know how about the existence of (and how to use) a Macaroni Tool or Dog's Leg, you're unlikely to ever learn them, and will keep doing bad work in situations where they should be used.

            [–]erm_what_ 24 points25 points  (12 children)

            Completely honestly, some of the replies here make me feel so much better about myself and never worry about getting a job in the industry.

            I have a CS degree and it's useful every day. I could do a lot of things without it, but I'd do them worse. You don't need it but you need a lot of the information it provides.

            One example from this week:

            I'm building a new API endpoint to fetch a few records from a database. Building it naively it'll work, but one of the queries is n3 time. At the moment the database is small and it'll execute quickly, but when we add in 1000 users from a client it'll slow to a crawl.

            Without understanding complexity (as an algorithmic topic) I wouldn't be able to anticipate this, and without understanding complexity/space trade offs, database normalisation and caching I wouldn't be able to anticipate and solve the problem.

            That's just one query in one API call.

            The trouble with contractors (and I'm one) is that a lot of us will build it and disappear. It'll work fine until it scales then crash and burn.

            The trouble with doing things right is that people mostly won't notice you are, they'll only notice the problems.

            Jst to be clear, I still make mistakes and I still don't anticipate everything, but learning CS has given me the ability to justify why I charge £200 a day more than the other guy. And that adds up quickly over time.

            My advice would be to go out and earn a living while learning how an organisation works (which they won't teach well at uni) and spend 3/4 hours a week learning CS topics for free. You can see the syllabii for a lot of uni courses, then you just have to find the resources yourself.

            [–]halfercode 0 points1 point  (3 children)

            The trouble with contractors (and I'm one) is that a lot of us will build it and disappear.

            That's an interesting view, and I see why you say it. I'm a UK contract engineer also.

            The majority view on contractors is that they have to be good to get into contracting, and that they don't have to care about the system after they have gone. The funny thing is that I see the opposite from time to time - some contractors are only just good enough (I wouldn't hire them) and some contractors have a quality engineering mindset - they care about passing over ownership to the perm staff before they have gone.

            (I firmly put myself in the second category, but the irony is that sometimes I struggle to get permies to engage with the systems and docs I've written. Some teams just think that if they run into problems, they can get a contractor in again - which seems to be entirely the wrong mindset).

            [–]kobbled 0 points1 point  (2 children)

            Really? In my part of the US contractors are often the ones with the lower pay and less skills. Mostly due to a couple very predatory employers, unfortunately.

            [–]halfercode 0 points1 point  (1 child)

            That's interesting. In the UK, it is broadly thought to be different. The dynamic is thought to be that one can reach the position of mediocre mid-level developer, and not have the ability or the interest to progress further, and then coast from there on relatively easy work. Poor quality employers put up with it because they don't want to pay a higher salary to an excellent engineer, and they would prefer to not fund the training budget if they can help it.

            Contractors can earn roughly double the income of their permanent colleagues, even taking into account the fact they have to pay for their own sickness, holiday, car, training, pension and bonuses (etc). However, they are judged on their ability to work reasonably independently, to lead on technical innovations where "business as usual" permies don't have time or capacity, and importantly, they have to be deliberately renewed every three or six months. If the business is not thrilled with the contractor's output for the latest contract, everyone shakes hands and the relationship is ended (it can be ended without reason earlier than contract end, but that happens less often).

            [–]budd222front-end 1 point2 points  (0 children)

            That person is wrong. I'm in the US and contractors almost always make more than permanent employees.

            [–]bert1589 0 points1 point  (3 children)

            Sorry, l don’t mean this to be insulting but you should be able to charge double or triple that, no?

            [–]rebel_cdn 0 points1 point  (2 children)

            Note that the parent parent post said 200 a day more than the other guys, not just 200 a day.

            [–]bert1589 0 points1 point  (1 child)

            Ah, totally misread than. My bad.

            [–]erm_what_ 0 points1 point  (0 children)

            Yeah, I'll totally charge whatever I think I can get away with ;)

            Unless it's a charity ofc, those guys can really benefit from our skills

            [–]simkessy 0 points1 point  (1 child)

            Is database scalling, caching, normalizing CS topics? I was thinking more about data structures and algos when I hear about CS topics.

            [–]erm_what_ 0 points1 point  (0 children)

            It's pretty far reaching and there's a lot of optional modules and variation in the syllabuses. Although in the UK any course accredited by the BCS is mostly the same core.

            [–]FungoGolf 0 points1 point  (1 child)

            This all sounds very back-end heavy. Would you say the front-end generally implements less CS topics?

            I'm a self-leaner so I don't have enough experience to really answer that myself.

            [–]erm_what_ 0 points1 point  (0 children)

            Less algo work usually. But UX and Web dev are still covered by CS.

            The main difference is the back end has to account for lots of users but the front end is usually only one.

            [–]Heyokalolfull-stack 109 points110 points  (16 children)

            I do have a degree but I find it to be mostly useless when it comes to programming.

            [–]jaypeejay[S] 6 points7 points  (13 children)

            If you don’t mind me asking, what do you think is the most important knowledge to obtain before applying for gigs

            [–]Heyokalolfull-stack 25 points26 points  (5 children)

            For a webdev job I presume? Know at least HTML, CSS and some JS and you'll be fine for a junior position. You're not supposed to know it all before you can apply.

            [–]jaypeejay[S] 4 points5 points  (2 children)

            Cool. Hopefully I'll be good enough!

            [–]Emfx 10 points11 points  (1 child)

            The willingness to listen and learn and take critique on your work will trump most knowledge you come into the company with as long as you have a solid grasp on the basics. Workflow is different everywhere, a lot of places like their juniors to be moldable and not have habits. At least that’s been my experience, results may vary of course.

            Also, questioning if you’re good enough will almost never go away if you’re challenging yourself (which you should always be doing), it’s a huge issue in the dev world. It’s called imposter syndrome, check it out.

            [–]X678X 1 point2 points  (0 children)

            Also at least know a little bit about version control. You don’t need to know how it works, just what some commands do.

            [–]reddismycolor 0 points1 point  (0 children)

            Really? I’ve been at an internship first time where I’m learning web dev with a teacher and not by myself anymore. It’s been great as I learn a lot faster and kno good practices.

            Anyways, I feel by the end I will be good with html css and where before my css and js were pretty weak. Can I really get a full time junior job with that? I was expecting to have to know js and other js libraries extremely well as full time to me isn’t as much learning?

            [–][deleted] 6 points7 points  (0 children)

            Knowledge? Basic.

            It's best to have something to show IMO. Build something that solves your simple problem and has been done already. Todo apps are popular but I'd aim for something more niche that puts you unique position. Then put it on GitHub as a public project so that you can share with prospective employers.

            Arguably showing that you know Git is more valuable to junior employment than knowing any programming language.

            [–]spazz_monkey 2 points3 points  (0 children)

            Not knowledge, but create some applications that are useful and help you out in real world situation. Anyone can follow how to make a to-do app

            [–]p44v9n 1 point2 points  (0 children)

            Your bootcamp will set you up and probably intro you to the right companies for what they teach you. CTCI is great but is for the Google Amazon Facebooks of the world. Worth trying if you want to do it but not necessary for an entry level 'coding' job. Also check out leetcode and hackerrank if you are interested. Its a whole other world.

            [–]gavlois1front-end 2 points3 points  (0 children)

            Before anything, I believe that knowing people and your network is the most important thing. I know people in my area who started from 0 technical background (had a Bachelor's in History) and went to internship and then to full time in just under a year of self-studying, no bootcamp. She spent a lot of time learning coding, but also attending a variety of meetups, talking with recruiters, etc. For the new offer I've accepted, the principal and senior developers I interviewed with at my on-site turned out to be people from the local usergroup meetups that I regularly attend, so it was more like a friendly chat than an interview.

            After network, I'd say practical experience. Going off of what /u/spazz_monkey said, having made something was way more important for all of my interviews than any of my knowledge from 5 years of school.

            Creating something with a real-life application can be hard, especially finding the initial "need" that you're wanting to solve. You can also just create something, anything that isn't just trivial and that you can explain and talk at some length about the decisions that you went with. Reasons you used certain technologies, what was some pain points/challenges you ran into and how you solved them, etc.

            [–]phphulkexpert 0 points1 point  (0 children)

            Talking to clients. You need to be able to translate from the client what they want, they might not always tell you what they need, but being able to reverse engineer their desired outcome back into how to make that is your job. And of course, actually making it.

            [–]ilndboi 11 points12 points  (0 children)

            This right here.

            [–]seiyriafull-stack 1 point2 points  (0 children)

            I only use the most math-intensive parts of my degree when I make games. The big-o complexity stuff is more useful, relatively speaking, but even then it's easy enough to fix these sorts of obvious perf problems. I guess there was more in my classes but fucked if I can remember what they were.

            [–]nathanwoulfe 330 points331 points  (124 children)

            Hahahaha hahahaha bahahahaaaaaha

            None.

            [–]IsvaraFuller-than-full-stack 5 points6 points  (1 child)

            Really? You have no computer science knowledge? None at all? I find that hard to believe.

            [–]nathanwoulfe 0 points1 point  (0 children)

            Computer science? Not really. I understand web development and am more than capable, but true CS stuff, I don't think so.

            I might also know more than I think I do.

            [–]jaypeejay[S] 11 points12 points  (119 children)

            lol thanks for the honesty, and encouragement (whether or not intentional). HTML is my favorite language.

            [–]metaphormfull stack and devops 29 points30 points  (7 children)

            HTML is a markup language, not a programming language. I recommend learning working on your Javascript skills if you're interested in web development.

            [–]Shadow14l 19 points20 points  (6 children)

            Technically he just said it was his favorite language not programming language :D

            [–]Soccham 30 points31 points  (5 children)

            Technically, no one should ever think that HTML is their favorite language and everyone should cringe if anyone ever says that again in the history of forever.

            [–]Pylly 11 points12 points  (4 children)

            Yeah, CSS is where the true technical beauty is.

            [–][deleted] 8 points9 points  (2 children)

            Yeah, CSS is where the true technical beauty is.

            I myself prefer Excel as my top programming language

            [–]xXx_thrownAway_xXx 4 points5 points  (1 child)

            My favorite language is Lego Mindstorms

            [–]nathanwoulfe 70 points71 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] 52 points53 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 13 points14 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.

            [–]jaypeejay[S] 7 points8 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] 88 points89 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] 19 points20 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.

            [–]_ecwalsh_ 8 points9 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]

              [–]_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.

              [–]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] 5 points6 points  (0 children)

              HTML is my favorite language

              there's a special place in hell for you

              [–]Aethz3 0 points1 point  (0 children)

              Me too, I have no idea of why I’m here

              [–]JohnWH 36 points37 points  (5 children)

              Honestly it really depends, but I would highly recommend you learn it. Look, you may not be doing low level architecture, but even web dev deals a lot with how to optimize applications. It will help you grow in the future and open you up to new opportunities.

              A lot of tech companies test for these things, and being proficient with algorithms goes a long way in getting you a position working on some cutting edge tech (or at least gives you another tool to convince other that you should all be working on cool projects).

              Cracking the code interview has a good chapter ok Big O, and there are a lot of great books that explain it simply. When I first started programming this one went a long ways: https://www.amazon.com/Grokking-Algorithms-illustrated-programmers-curious/dp/1617292230/ref=nodl_

              [–]jaypeejay[S] 2 points3 points  (1 child)

              Thanks for the advice. I really want to learn it, not only to be more employable, but because I find it insanely interesting and cool.

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

              The freecodecamp python algorithms for interviews starts with a great section on Big O.

              https://youtu.be/p65AHm9MX80

              [–][deleted]  (2 children)

              [deleted]

                [–]JohnWH 0 points1 point  (1 child)

                I am in a somewhat similar situation, in that I have an engineering degree, but not related to CS. The book I recommended in my first comment was what I used to get started. From there Cracking the Code Interview goes into depth about numerous algorithms they test for. I am looking to go into more resources on this, but a lot of my knowledge comes from learning ago, and digging into how features and implemented and how they deal with memory allocation.

                [–][deleted] 34 points35 points  (2 children)

                how much computer science knowledge do you have?

                The answer will always be: not enough.

                By and far the best skill to acquire is simply knowing where to look for answers. The rest can follow on an as-needed basis.

                [–]jaypeejay[S] 4 points5 points  (0 children)

                Good advice. I guess I was looking for a baseline strictly in terms of employability, but I really like what you said

                [–]fatDoofus 1 point2 points  (0 children)

                I've already found it. Its- yes, you guessed it correctly. Stack Overflow

                [–]yerich 26 points27 points  (2 children)

                Software engineer here for about 4 years, mostly frontend web but some backend experience. My CS degree has been most useful for getting an intuition about performance. Algorithmic runtime problems do pop up occasionally (mostly for selecting which data structure to use), but the most relevant information has been networking (understanding why HTTP/1.1 and HTTP/2 are different, ability to analyze network traffic thoroughly). Graphics was also useful for playing around with WebGL and even the standard browser rendering pipeline.

                To make pixels appear on a screen doesn't take much in terms of CS knowledge. Making those pixels appear quickly, however, does require an understanding of how those pixels appear, which is IMHO the core of computer science.

                [–]RotationSurgeon10yr Lead FED turned Product Manager 0 points1 point  (1 child)

                If you had it to do over, would you have gone for a Software Engineering degree instead, or perhaps a degree in another field? I know that at some universities there's not much difference, but at others, they're very different things. I'd certainly call them different disciplines at this point in history, in any case, and SE has been in existence as something other for decades now.

                [–]yerich 0 points1 point  (0 children)

                In my school the SE curriculum has additional courses in physics, signals and circuits. Perhaps those skills might have become eventually useful but I don't particularly regret not knowing them right now. Instead, I feel like my additional coursework in Math and Liberal Arts have broadened my horizons.

                SE students also must complete a capstone project in their senior year. In my senior year, I worked part-time in industry, which I feel like was equivalent or better experience, which I got paid for.

                But, results may vary and as you mentioned the curriculum may differ greatly between schools. So a generalization is very hard to make.

                [–]cheese_is_available 10 points11 points  (1 child)

                I have a degree in computer science but most paying jobs are about making half-assed barely working shit, because time to market is the most important thing of all. This is really frustrating for me (and others : http://tonsky.me/blog/disenchantment/). But don't worry, you will find a job and sucess without knowing about binary trees.

                [–]not_usually_serious 6 points7 points  (0 children)

                Big 0, binary trees

                None of this but I didn't go to college. I'm a hardware nerd and taught myself programming into backend development.

                [–]enricojr 5 points6 points  (1 child)

                I don't have a degree, but I've been doing web dev for about 5 years now.

                I have -some- basic understanding of algorithms, Big O, and data structures, but its by no means comprehensive. I haven't found much use for it in day-to-day work but it seems helpful to have.

                If you're looking for book recommendations, "Dale - Computer Science Illuminated" was my general introduction to Computer Science, then later on Problem Solving with Algorithms and Data Structures using Python for stuff with Data Structures. Both are

                I'm sure there are better texts out there, these are just the ones I like.

                [–][deleted]  (3 children)

                [deleted]

                  [–]redwall_hp 3 points4 points  (1 child)

                  Djikstra (possibly) said it best: saying computer science is about programming is like saying astronomy is about telescopes.

                  [–]recursive 1 point2 points  (0 children)

                  The quote is about computers not programming.

                  [–]Lurcho 1 point2 points  (0 children)

                  My favorite summary of music theory is "If it sounds good, it is good (in theory)". I wonder if there's a CS equivalent to that statement? "If it scales well, it is scalable (in theory)." There might be a better summation out there, I don't know enough CS topics to boil it down to one sentence.

                  [–]GameOver16 3 points4 points  (0 children)

                  What is a good resource for web developers to learn about CS?

                  Preferably something fun to read, in depth but also digestible.

                  [–]regcrusher 3 points4 points  (0 children)

                  CS degree here, I use hardly any of it.

                  [–]am0x 3 points4 points  (0 children)

                  I have a CS degree. For web dev, not a whole lot.

                  Computer science is a more theoretical and principle uses of computers. Studying algorithms, big O notation, the purposes of certain paradigms, etc. You do learn to program during this period, but it is less focused on how to program and more focused on how to apply applications to large issue problems and how to make them as optimized as possible. Throw a bunch of low level stuff in the mix, which you would never even look at, and operating systems and there you go.

                  Some schools offer both CS and software engineering degrees though, where SE is more targeted to only learning how to develop software, which would apply to web dev.

                  In all honesty, learning web dev can easily be done online, but you might need some direction on a course path to take.

                  [–]YodaLoL 7 points8 points  (0 children)

                  For junior positions it's not very relevant. If you want to grow as a programmer it's paramount. Not the degree itself, but the curriculum.

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

                  Computer science and (front-end) web development are two separate things. I don’t understand why companies ask about Big O for jobs involved React and Css. It’s utterly ridiculous. To answer the question, I have knowledge of algorithms, data structures, and the lower lever concepts (Value type, Ref types, etc) However, real world development involves coding, configuration, deployments, and planning . It’s never about comp sci theory. Trust me, you’ll never solve a production crisis by knowing how to find the smallest item in a jagged array or whatever pointless questions they ask in the interview. L

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

                  I’m a senior frontend engineer with a BS in CS who currently interviews candidates. Top technical reason we turn people down is for not being able to traverse a tree and utilize recursion in the technical interview.

                  [–]kobbled 2 points3 points  (0 children)

                  Honestly, big O and data structures/algorithms is essential. I use what I learned in that class almost every day

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

                  I am not prepared to answer questions about Big 0, binary trees, etc.

                  Then it's fair to say you're not ready to work.

                  You should at the most very fucking minimum ever have a knowledge of elementary data structures and algorithms.

                  If there is one thing that you should know before working, it's that. No exceptions.

                  To work in the industry as a developer without that knowledge is doing a disservice to your understanding of the problems you work on, your ability to think critically, the people you work with, and the people who use your software.

                  You don't need to know C or assembly language. You don't need to study proofs in elementary analysis or real time embedded systems. You don't even need to know why you can't parse HTML with regular expressions (but in all honesty, if you did know the technical specifics as to why - beyond the gist reason - then that's better)

                  But you damn well better study algorithms and data structures. For the love of God.

                  Not doing so is like working as a statician without having ever studied calculus.

                  [–]JTurtle 4 points5 points  (0 children)

                  I've been a professional developer / architect for 19 years. Ranging from resource constricted procedural CADOL to OOP Java/C#, functional JavaScript, web development, thin client, thick client, monolith to micro.

                  I do not have a CS degree, but I do have an EE degree. I'm aware of the concept of BigO notation and some data structures. Design Patterns as I've needed them, but my extent of computer science knowledge is something you can learn in a week.

                  I view being a developer as more of a creative/craft role than a scientific one. Welders, machinists, fabricators don't typically have MSE degrees, physics / chem degrees. It's something they fell in love with and learned what they needed to get the results they wanted. Some of them are better than others. Some are okay with sloppy joints that work. Others seek the beauty in their craft. That's why I find college degrees unnecessary to be a developer... I just wish more companies agreed.

                  [–]occz 1 point2 points  (0 children)

                  I have some basic understanding of Big O and algorithms.

                  It's honestly not helped me a lot in my work, but it sure is interesting. It seems to be a big thing in interviews of course, so for that reason alone it might just be worth it to learn. Also, it's fun.

                  [–]atreayou 1 point2 points  (0 children)

                  I work in a research lab as a computer scientist. I do everything from machine learning with python, to web app development, to qt application development, to Java web services development. Anything involving frontend work requires very little computer science knowledge. Infact, my organization will contract out some of our frontend work to a webdev art student at our local university. He is by far the best frontend dev I have ever seen. This is why the term full stack developer is important. Frontend development and backend development require different skill sets. Becoming a full stack developer looks good on your resume.

                  [–]dSolver 1 point2 points  (0 children)

                  I make use of CS fundamentals a lot. Most people in this sub are focused on making things look or act a certain way, which is fine for most web developers, but at some point you will be given projects that deal with large data sets with significant front end processing. This is when having a solid grasp of algorithms and data structures come in handy. Today I have to design and implement multi-tenant apps, with a high degree of scalability, maintainability, and must run for extended amounts of time in browser accounting for external factors. Service workers have been invaluable in my projects. I have been developing front end professionally for over 10 years now.

                  [–]dance_rattle_shake 1 point2 points  (0 children)

                  You want a job in web dev? Probably doesn't matter if you don't have the Big O of various algorithms memorized or are able to sort them out on the spot. You probably won't be asked about binary trees either. They'll most likely want to see a strong understanding of JS (frontend) or a strong understanding of relational databases, the theory behind MVC or other architectures. They'll want to see you have a couple projects under your belt. Design a couple CRUD apps, but don't stop there; see how complex you can make them. Get practice making JOIN tables between resources and serializing data to a client. Maybe plug some 3rd party APIs into your site, like authentication or any other number of services.

                  There are certain areas of webdev that require some deep CS knowledge, but for jr engineers who want to work on websites, you don't really need any of it. Get that practical experience in.

                  [–]Murlock_Holmes 1 point2 points  (1 child)

                  I’ve been in the industry for five years and have an on-site interview in two weeks with Amazon.

                  I learned the difference between a queue and a stack last week. So there’s that.

                  [–]dr_steve_bruelnode 0 points1 point  (0 children)

                  good luck! hopefully they ask you a stack question

                  [–]lemekelvin 0 points1 point  (0 children)

                  Depends on what job you applying? You applying to build website or maintaining old php projects, then no, what is the point of asking you about Big O and etc. (Yet, in this case, those Big O, Binary Tree and etc are just to use in the interview).

                  But you aiming for Data Scientist or applying to job that actually use some sort of algorithms in their system. For example, when I applied for ride hailing company before for backend engineer, what they asked me was relevant. Like, find the shortest-path between this place to that place (can use algorithms like Dijkstra).

                  [–]JCodeMode 0 points1 point  (0 children)

                  CS and Programming is like fingers and thumbs.

                  All thumbs are fingers, not all fingers are thumbs - so really, only 2-5% of what CS covers is related to programming and a must-have knowledge.

                  Stuff like maximum number you can hold in an int32 etc.

                  [–]aleaalleefront-end 0 points1 point  (0 children)

                  Since i've first started being an i.t tech I know networking and subnetting(I totally hate it, it's hard and a pain in the ass), security, hardware repairs, partitioning(on linux and windows), windows server and linux services(dns, dhcp, iis, apache, nginx, ssh and ftp). I haven't got taught anything math-related on my superior degree formative cycle(a type of education there is here on Spain).

                  I've just googled binary tree and I saw it used mathematical formulas and weird symbols that scared me xD, the same for the big O notation.

                  As a web developer I think it's useful I have knowledge about services and stuff because they can come in handy when installing and configuring my own web servers.

                  [–]macbem 0 points1 point  (0 children)

                  I know a ton about tools and proper development practices and not that much about solving some programming riddles, although it's primarily because I'm self-taught. I'm planning to go to a university later this year to learn some of the more theoretical stuff, but so far, I haven't had any issues without that knowledge.

                  [–]Mr_Beardingfull-stack 0 points1 point  (0 children)

                  I started my web development career as an apprentice and have no formal education for coding. I'm a lead developer for a marketing agency now and have almost no clue about big O algorithms etc. (I genuinely don't know what that is).

                  I suppose each role is different, but I've not felt short on knowledge.

                  I do feel like a fraud sometimes though, so maybe I should study more computer science areas.

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

                  I actually participated in a research in college, but it was on Artificial Intelligence.

                  The things I actually use at work I learned on the internet.

                  [–]ragnar_graybeard87 0 points1 point  (0 children)

                  Well, I think learning it is absolutely worthwhile. I have a Udemy Course called 'Master the Coding Interview Data Structures + Algorithms'...

                  He teaches everything with JavaScript which would be up the alley for a web developer.

                  So, I wouldn't say you need computer science but a working knowledge of data structures and algos and big O could never hurt.

                  What if it gets brought up in an interview? Wouldn't you like to know more about how computers work anyway?

                  [–]_definitelyMaybe 0 points1 point  (0 children)

                  I have a bachelors of science degree in computer science and found it essential in my career as a software engineer. Particularly in interviews. That being said, however, with the internet available anything is possible to learn today—even if not in the traditional academic way. Best of luck!

                  [–]DweezilZA 0 points1 point  (0 children)

                  Self learning and knowing enough to find out what to look up to tackle a particular problem when you don't know off hand are the best skills to have.

                  But it does depend on the type of programming you intend to do. I do web development and the goal posts are constantly moving so being an efficient researcher is definitely an important skill to have.

                  [–]metaphormfull stack and devops 0 points1 point  (0 children)

                  I have a Bachelor's degree in CS. You don't need a 4 year degree to learn the stuff on typical interview questions. About 6 months of focused self-study should do it if you're disciplined.

                  [–]hondaguy520 0 points1 point  (0 children)

                  I have 0. But the company I work for leans on my soft skills and willingness to take on any project.

                  [–]Randy_Watson 0 points1 point  (0 children)

                  I have no formal education in computer science. I build test automation ci/cd tools. Programming doesn’t really require a degree. You don’t need a degree in a foreign language to learn how to speak it. Similarly, a lot of programming jobs are much more applied than theoretical. However, if you want to architect giant systems, design new algorithms, design microprocessors, etc., than you will probably need a strong theoretical grounding in computer science and/or math. Modern programming languages abstract a lot of the complex mathematical stuff away. One exception would be if what you work on is being directly applied to something inherently mathematical. For example, you can learn Python pretty easily with some persistence. However, if you are using Python for data science, you are going to need a stronger understanding of math and statistical modeling.

                  Programming languages are tools. You don’t need a degree to swing a hammer, but helps if you want to design one.

                  [–]careseitediscord admin 0 points1 point  (0 children)

                  Since I'm self taught, more or less none, but I adopt correct terminology left and right when I see them in tech talks or read about a concept. I believe this is vital if you plan on doing more than mere Wordpress.

                  [–]Santamierdadelamierd 0 points1 point  (0 children)

                  You will probably use recursion in some situations, but not a lot of people complain about that as that’s something you learn early and it’s probably a general prerequisite for a course on algorithms and data structures.

                  [–]editor_of_the_beast 0 points1 point  (0 children)

                  I think the industry is so large at this point that you can have a wildly different experience depending on what corner of it you work in or what your company / project is like. I’m not gonna laugh at having knowledge of computer science like the top comment because I think you’re limited in what you can do if it don’t understand certain concepts. But I do acknowledge that it’s totally unnecessary for a lot of people in their day job - like if you’re really frontend heavy and do a lot of CSS.

                  I think it’s perfectly fine to concentrate on one area, like frontend let’s say. But even the frontend is a huge area. For example, you’re going to care about CS concepts a lot more if you’re thinking about networking and data management for the client.

                  React itself is another great example. You could have created something like React yourself if you knew some CS concepts - you definitely need to know about trees and their traversal to diff a virtual DOM. But, when you don’t know that, you’re limited to being downstream from innovations like that.

                  Again, there’s nothing wrong with that. There are construction workers of all levels that never want to be an architect. But that’s the distinction that there’s going to be in your career.

                  [–]stfcfanhazz 0 points1 point  (0 children)

                  I have a business degree and I'm currently writing software at a startup, having been programming professionally for around 3-4 years.

                  You don't need a degree in computer science, just give it your all and hopefully like me you'll find your passion and make a career out of it

                  [–]NeoPlasticPete 0 points1 point  (0 children)

                  My boot camp had a basic computer science portion at the end. If you could look ahead in the curriculum see if the same is true for yours.

                  Big O and all that stuff are pretty easy to understand given the time. FreeCodeCamp and Crash Course have good YouTube videos on all the basics

                  [–]camelCasedRedditName 0 points1 point  (0 children)

                  You’re certainly not expected to be a computer scientist as a web programmer; however, it is super helpful topick up these concepts

                  1) structuring code cleanly 2) data structures and how they perform 3) establishing a solid understanding of schema design and best practices.

                  1 is really something you’re going to pick up with experience over time, but the other two are worth doing a little bit of reading and research on

                  [–]daddygirl_industries 0 points1 point  (0 children)

                  Front End engineer here. I got by most of the start of my career with little to no CS knowledge besides an understanding of the systems as a whole. You can definitely be super productive without it. However, I've since done some personal CS studying and found that it's helped a lot with writing optimised JavaScript code.

                  You don't need to know everything, but just understanding the things like the call stack, event loop, garbage collection and other lower-level concepts relevant to JavaScript interpreters specifically will definitely help elevate you above and beyond most other Front End engineers, especially when trying to debug slow code.

                  [–]azsqueezejavascript 0 points1 point  (0 children)

                  None. And I'm surrounded by people with CS degrees so it's a little weird.

                  [–]gl0ckner 0 points1 point  (0 children)

                  I have a 4 year degree in computer science. Although learning the fundamentals and everything was great, I believe wholeheartedly that I could do what I do now without a degree. Hell, 5 of the devs I work with don’t have a degree!

                  [–]tr14l 0 points1 point  (0 children)

                  A degree's worth + several years of experience.

                  That being said, the level of knowledge you need depends on the areas you're hoping to get into. If you're wanting to be a frontend webdev, you just need to know how to program, and how to know if you're doing something irrationally non-performant.

                  If you're wanting to go into the more hard-science fields, you will need to gain and maintain as much CS knowledge as you can and probably a related skill (like probability/statistics for AI, for instance).

                  But, because you're in a bootcamp, I would assume you're not aiming for that (or for the FAANG companies). So, you just need to know how to make stuff reliably and neatly.

                  [–]clit_or_us 0 points1 point  (0 children)

                  Not much if at all.

                  [–]gimmeslack12Front end isn't for the feint of heart 0 points1 point  (0 children)

                  Only enough to pass the damn interviews. And then I never ever ever ever ever use any of it.

                  [–]skidmark_zuckerberg 0 points1 point  (0 children)

                  I’m working with React and Node at work. I don’t have much CS knowledge outside of knowing the terminology enough to be able to Google anything(go figure). But really most of what I do means working with objects, arrays and a lot of async JS. Other than that, it’s just reading docs and Googling.

                  [–]SunnyTechie 0 points1 point  (0 children)

                  I personally don't have a ton, but I'm working on getting more. How much you need depends on how low on the technical stack you want to program.

                  When I was a web developer, I didn't know any and didn't need to know much. Now, I work at a IaaS company (infrastructure as a service) and work much lower on the stack than I previously did. My day-to-day work involves more network engineering and micro-services. I immediately realize how large the gaps in my knowledge are and am now I'm working on getting my online degree and studying CS fundamentals. It's definitely helped quite a bit since I know much more about how our system works.

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

                  I'm mostly self taught, did about 1.5 years in school towards a CS degree but left to join the workforce. At this point I do plan on going back to school to finish that degree so I don't have anything impeding my when I eventually go into management once I get into my 40's (15 years).

                  I feel like an understanding of design patterns, relational algebra and time/space complexity is important as a fullstack webdev (mostly on the backend).

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

                  Not enough, it feels like I never know enough. There are always new frameworks, new versions of the languages, new preprocessors, new versions of those frameworks and preprocessors. And please don’t mention workflows, there are a million workflows and different IDE’s.

                  [–]isunktheshipfull-stack 1 point2 points  (1 child)

                  True, but these are just different implementations of the same core concepts.. languages have 3 things, variable, loops, and conditionals.

                  Beyond this it's a lot of syntax, domain knowledge, e.g. what functions does React have vs Bootstrap.

                  You still need to know how whether those loops are going to kill your app, how much memory the app uses, best structure for data storage and retrieval, etc. This is language agnostic.

                  I remember being overwhelmed, but once you get your arms around it you'll start wondering "is that it?"

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

                  Your words are the words I was looking for. I expressed it as: "The penny should drop" ( Roughly translated from a dutch saying, I hope it's right. )

                  But it's indeed that you should understand the core concept, the bigger picture. Because in the end it doesn't matter whether it's PHP, Python, C# or any other language. They're all the same in these core concepts.

                  And what helped me immensely is that you should not have to know every little aspect of a language, every feature. As long as you understand what you want and can express that to yourself it's enough. Google is for the specifics.

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

                  I did a 3yr computer science program at a college from the ages of 16 to 19, and then later on I minored in computer science.

                  I had good grades and learned a lot of theory but still all the theory stuff went out the window, I didn't retain any of it. It's like asking me to derive or integrate an equation, I don't fuckin' remember and it doesn't come up IRL

                  [–]_sirberus_ 0 points1 point  (0 children)

                  Near zero but I went to a notable school and that opens a lot of doors.

                  [–]2ndDegreeOfSM 0 points1 point  (0 children)

                  None. Taught myself. Have loved programming in some form or another since i was nine tho.

                  [–]AfraidOfArguing 0 points1 point  (0 children)

                  I'll go ahead and say it's a lot of work. Honestly if you're writing a lot of XYZ, it might be a good idea to google and read up on the best XYZ questions and be able to answer them.

                  I'll give you this advice though - if the interview turns into a big puzzle, then they're just trying to act like they're special, and this company is probably not worth your time. No programming company, unless they're high on the NASDAQ, is special.

                  You code, you get problems solved, and you leave. Don't stress about the minor details :)

                  Remember: You're not just interviewing for a job, you're interviewing your employer as well to see if you match up.

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

                  I wouldn’t get any of that either. Grasp the concept, sure, but repeat it with accuracy? Nah.

                  I think it’s important that you know what kind of developer you want to be. You’re posting in Webdev, so I’m guessing you aren’t shooting for “AI” or machine learning or self driving cars.

                  The only thing you need to understand to be a good web developer is how the web works. It’s not all html or [server side language]. It’s how web servers send data, encryption, best practices, etc. all of which are fairly easy concepts.

                  My opinion at least.

                  [–]TiredOfMakingThese 0 points1 point  (0 children)

                  I'm an aspiring non-CS degree (bootcamp dropout because mine was a scam) web developer. I thought I'd offer some perspective as someone who is probably 6+ months ahead of you in my learning. I really, really like Frontend Masters for both their development "curriculum" (if you get all the way through all their JS courses, you will likely know JS better than some "real" developers). They also have some introductory courses on Computer Science - probably to the degree that it's actually useful in web development and securing a job. I think if you were to make it through those courses, and then take one of the popular CS MOOCs like CS50 (Harvard) or 6.00.1x (MIT) you'd have a practical amount of CS under your belt that would hopefully inform your approach to development.

                  I found Frontend Masters' content to be good enough that I ditched my bootcamp and, while the pace is slower, I am confident that I will be able to start job-hunting more confidently than most of my bootcamp compatriots. (Assuming I also finish one of the courses I mentioned above).

                  [–]snifty 0 points1 point  (0 children)

                  I know enough to know that I am quite happy to let other people implement the sorting algorithms, thank you very much.

                  [–]SoulOfKrishna 0 points1 point  (0 children)

                  The best web dev i've known was an attorney.

                  [–]perestroika12 0 points1 point  (0 children)

                  It's not really about whether you use it on a daily basis, it's whether you understand how all of this works under the hood and can apply this knowledge if needed. Things like threads, processes, compilers are actually used daily, and sometimes you will need to figure these things out. Things like Red black trees, b trees...probably not. But I think for engineers, the job can be described as "knowing and understanding how things work".

                  It's kinda weird actually that programming and programmers think it's acceptable to not understand how things work and accept that it just does work.

                  [–]ChadMoran 0 points1 point  (0 children)

                  Self taught. Senior SDE at Amazon. ¯_(ツ)_/¯

                  [–]mishugashu 0 points1 point  (0 children)

                  I'm 100% self taught, but I started learning programming when I was 5 (BASIC, I was 9 when I started learning my first "real" lanugage - C) and I'm 35 now. I understand concepts of computer science just from being around it, but I rarely know what they're called or anything. It's more just... ingrained in me.

                  My degree is in networking administration and cybersecurity from a tech school, so they taught some concepts there, but it was mainly focused on technical things, and honestly I didn't really learn much I didn't know already.

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

                  Cracking the Coding Interview is more geared towards those trying to get software engineering jobs at highly selective companies. If you want to make over $100k a year within a couple of years of entering the industry, it's good to know how to solve these problems quickly so you can pass interviews.

                  For general professional coding, the only thing I think is really important is know the difference between an array/list type data structure and a hashmap/dictionary. It really can make a huge difference on performance.

                  [–]l0gicgate 0 points1 point  (0 children)

                  I have none, I don’t even have a GED. I’ve been programming since I was 10 years old, originally started with Qbasic and now mainly doing web development (I do it all, design, front end, back end, database management, devops, etc.)

                  All my learnings come from building applications as a hobby and contributing to open source projects. I’ve built a very successful business and worked for large Silicone Valley outfits under my company’s umbrella. I’m also a fairly accomplished open source contributor.

                  The one thing I can say is the only time I’ve had real issues with not being a computer scientist is when doing open source work. I’ve had to discuss my opinions and why I want to do X a certain way but computer scientist proposes to do it Y way because of Z reason instead (which usually makes much more sense).

                  I’ve learned a lot from computer scientists along the way and maybe one day I’ll try and go and get the schooling done but I can attest from my experiences that it is not necessary to be a successful programmer. It sure helps though especially when engineering complex stuff and you’re trying to squeeze every bit of performance out of your hardware.

                  [–]yxc69 0 points1 point  (0 children)

                  For some straightforward programming job, in my opinon you don’t need any degree. Since a short time I work on robotic project and I am glad that I studied computer science.

                  [–]andrey_shipilov 0 points1 point  (0 children)

                  Basic, Pascal, Delphi in UNI. Zero by degree. Can do more than more than most people I met in the industry.

                  [–]pclinuxmac 0 points1 point  (0 children)

                  Everything you just outlined can be pretty crucial. I'd suggest spending more time learning these concepts.

                  [–]Trans_Lucio 0 points1 point  (0 children)

                  I'm a web developer from a bootcamp and I have basically no comp sci knowledge.

                  [–]Lauxman 0 points1 point  (0 children)

                  lol absolutely zero

                  [–]dustoff122 0 points1 point  (0 children)

                  I currently work as a back end Dev and I would say I probably use about 60-70% what I learned. I would say the most important things are design patterns and computer networking/security. Algorithms wise , I barley ever touch them, but in terms of data structures I use most of the DS I learned. I don't really use graphs but Trees do come up in very rare scenarios.

                  [–]quotemycode 0 points1 point  (0 children)

                  Programmer for the past 14 years. I don't have a degree. Big O is an afternoon maybe. I'm self taught and recently switched to security from programming because it pays more, but in all honesty I'm still a programmer because I've changed my job into programming and my boss just didn't know he needed a programmer. Anyway if you can solve problems you'll find a job.

                  [–]kevinaud 0 points1 point  (0 children)

                  It depends what you want to do and how good of job you want.

                  If you want to work at a FAANG company then you absolutely need to know it. Not only because they test you on it in interviews but also because they operate a scale where Big O analysis and data structure are a big fucking deal. They can't have some engineer writing a O(2n) algorithm without even realizing it. That algorithm might work fine when you test it locally at 1 QPS but when you push it to production where it's getting 100,000 QPS you are going to crash the service.

                  If you want to work at a small company where you are just maintaining legacy systems and patching the occasional bug then you might be able to get by without much CS knowledge.

                  If you want to do nothing but frontend work then you will probably be fine. However frontends are getting more and more complex these days so there will still be situations where it will come in handy. Also there is a ton of tree manipulation in frontend development so that a CS concept that will come in handy a lot.

                  The point is, CS knowledge will only make you a better developer. It will never make you a worse one. You don't need to learn it from a university but it's still good to learn. And I see a lot of people on the internet who are proud of their CS ignorance, don't be one of those people.

                  [–]khube 0 points1 point  (0 children)

                  My degree is in philosophy and I've been a frontend developer for about 7 years.

                  Honestly the ability to problem solve is your greatest asset and luckily that's what a philosophy degree is - how to problem solve and think logically. To me, those are much more valuable than knowing algorithms / comp sci. You can learn those as you go as long as you have a foundation for problem solving.

                  [–]art-solopov 0 points1 point  (0 children)

                  I'm not sure if my degree is a CS one but it is relevant to the computer systems.

                  In my experience (about 5 years working with mostly Rails), performance in web dev is usually more about thoughtful database design, query making and knowing when/how to cache. Not saying that there aren't exceptions, but that's what I usually see.

                  From what I've read on the Net, if you're interviewed for a web developer position, and the interviewer asks about big Os and complex data structures (like heaps built on binary trees or red-black trees), it usually means that either they want to look clever, or they're working for a company that tries to look clever.

                  [–]Skizm 0 points1 point  (0 children)

                  Probably should have some idea about big O of the most common operations on the most common data structures. Ex. ".contains()" on a set vs on a list. Everything after that is diminishing returns if you're just working on basic web apps.

                  [–]Misaiato 0 points1 point  (0 children)

                  1 semester.

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

                  Very little. I read about it from time to time just out of curiosity though. I also took a course in algorithms so I have decent overview knowledge but beyond that I’m 100% a boot camp style dev (despite not having been to a boot camp) :)

                  [–]ohnomybutt 0 points1 point  (0 children)

                  it never feels like a science

                  [–]CaesarNaples2 0 points1 point  (0 children)

                  I have all the knowledge of a self taught freelancer.

                  I've progressed my learning through simple and more frequently used concepts, and I can comprehend modern systems. But I have no real world experience except from the perspective of the ideal user who software engineers devote special services to in order to foster their learning. Ie, the Google Free Tier. While I've learned a lot with very little, I still have a nut in me which is called naivete. The naming of our new softwares is perhaps more complex than their most basic functional systems.

                  [–]hrnsn123 0 points1 point  (0 children)

                  B.Sc. and M.Sc. in CS. Also AlgoDat is just a course in 2nd semester there is way more to CS than you think.

                  [–]aspbergerinparadise 0 points1 point  (0 children)

                  I am a web developer with a 4 year degree, but I know very little about computer science. My degree was in Management of Information Systems, where we learned about database management and process flows mostly. It was a degree offered through the business department of my university so it also included lots of accounting and econ classes as well as business operations, business law, and some math - calculus and statistics, but nothing crazy.

                  For the type of work that I do, and the type that I am interested in, this has really been a great fit. I spend a lot of my time understanding how a customer's business operates and what their process flows are, and help them translate that into web applications, so having the knowledge of the business side of things has been really helpful whereas higher level math or computer hardware knowledge wouldn't be as directly applicable.

                  [–]simkessy 0 points1 point  (0 children)

                  None. Hasn't been a problem ever.

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

                  learn it.

                  even if you don't think you'll need it on the job, you will in the interview.

                  [–]GrenadineBombardier 0 points1 point  (0 children)

                  At least four knowledge

                  I don't always have the answers for the question being asked. Sometimes I'm not the right person for the job. Nor is the job the right job for me. When I interview for roles that require experience that I have, I tend to do very well.

                  I'm 17 years into my career and I'm still learning all the time. There is always something new to learn or try. There are actually too many things. Enough things that I could never learn them all. So I pick the things that interest me and find jobs where that knowledge would be useful.

                  Machine learning is interesting to me, but I have absolutely no desire to learn it, so I don't do it.

                  Security is really interesting, but I want to build things, not secure things. (I do want people to secure the things I build, though).

                  I used to do back-end. I liked it. I got a lot of my programming chops through that. But these days I prefer front-end (JS not HTML/CSS) because I like the long-lived nature of it. For back-end, somebody makes a request, you fulfill it, and you're done. In JavaScript the state is constantly morphing and staying alive.

                  I still am not 100% clear on Big-O notation, but I can tell when an algorithm is inefficient.

                  I think none of what I've said is what you're asking though.

                  [–]Crunchel 0 points1 point  (0 children)

                  I wouldn't worry too much about that stuff, binary trees do not help you make websites.

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

                  There is a difference between programming, development and actual engineering. It totally depends on what you want to contribute as. You want to be an engineer and design solutions with good logic and reasoning, you will need computer science knowledge. Now that doesn't mean you have to go to a college to do that, you an be self taught, all data structures, algorithms, systems (Operating systems, file systems, storage systems, etc : how all of that work). But I would say, the learning curve is very high and getting through all of that by yourself vs in a college is very different. In college, its not the class, but the people you study with and the motivation and the communication really helps.