I'd wager that 90% of working developers _with_ a CS degree would not pass any of these tests. The reality is that the vast majority of software developers use little to none of this math in their professional employment. We really need to stop forcing people to get science degrees to order to be employed in engineering, it makes little to no sense.
I would far prefer to employ somebody who has a wide range of experience and knowledge over somebody who has churned out what is essentially the same CRUD web site anyday. Even if the job is to produce CRUD web sites.
One employee will just be able to produce what they have always done, the other will be able to look at the particulars of the problem, analysie it and potentially produce a product that is far more likely to meet the customers requirments.
Do you also prefer to pay the premium price that someone with a wide range of experience and knowledge commands? There is an even higher premium to get them to accept doing CRUD work for any length of time, if you can convince them at all.
> One employee will just be able to produce what they have always done, the other will be able to look at the particulars of the problem, analysie it and potentially produce a product that is far more likely to meet the customers requirments.
It seems like you're conflating "once had this knowledge" with "currently has this knowledge", this is only true for recent graduates, after that you starting forgetting everything you don't use regularly. I'd encourage everyone to go an khan academy for a refresher on everything they've forgotten since middle school, I'd even forgotten things I was extensively drilled in like long division.
I'd also strongly disagree that a comp sci degree teaches you to break down problems and come up with optimal solutions.
Thank you! It irritates me so much to see people refusing to learn just because it isn’t a sought-out skill listed in job descriptions.
Yet...I don't use much of any of this in programming, it's mostly just not applicable. Calc is vaguely useful in the sense that understanding at a high level what derivatives/integrals are is a good thing to know, but if you tossed an AP calc exam in my face I would fail it. The most important ideas there (rates of change) are not hard to teach without the rigor of calculous. You don't have to pass calc 3 to have an idea of rates of change or gradient decent. These are pretty simple ideas you can explain to almost anyone as long as you avoid math jargon and get to the point.
Yeah I started out as a computer geek over thirty years ago in my bedroom doing assembly language. But anytime I spend learning anything at this stage in life is with the goal of making money.
Also, while there are those that go from bartender to developer via bootcamps, a lot of people who do these camps have technical undergrad degees (other engineering, math, physics, etc.) and probably took as many math classes for their major as a typical CS grad.
And let’s be real...most developers, maybe especially at FAANGs, are frankly overqualified for their day to day job and aren’t doing much more than things they learned in a CS 102/103 class.
What I can agree to is that the job has significant challenges that a CS education does little to prepare you for. The interpersonal challenges. The challenges of designing large systems, forward and backward compatibility, the interaction of business and technical priorities, deployment, production safety, etc. And it makes little use of a number of skills that were very important to CS performance. I can tell you I've used zero graphics programming knowledge, little of my compilers course, very little of what I learned in my networks course (despite that I'm regularly called upon to write programs that communicate over the network). I've written exactly one proof since I started my professional career. In that sense, my CS program over-qualified me for the work. But I think it's more accurate to say that I'm differently-qualified, education-wise, from the field I'm actually working in.
However, I do jump between discussing if a trie is the right way to implement something, discussing whether the "simple" model should be a SVM or boosted tree, trying to figure out if we've covered the major abuse angles in our product, coordinating with all the other teams we're collaborating with, analyzing the experiment results, etc, etc.
Having at least some actual CS certainly helps fill in the gaps, even if it's not what I'm doing most of the time.
I wouldn't, either. But I've discovered that if I go about relearning it, it comes back very quickly. Having learned it before, I also recognize when I need to go relearn it, and what I need to know.
It's a lot better position to be in than having no idea how to go about figuring out how to solve the problem.
I haven't seen differential equations, but sometimes calculus, probability theory and a basic understanding of machine learning and deep learning is needed to understand what other teams that you're working with are doing, or to analyze the statistical significance of an experiment that you ran.
At FAANG I often wished I knew probability theory and statistics better (instead of other things that we learned at my University).
It's hard to say how it is in the large, but at Microsoft I do apply CS principles fairly regularly, use statistical tools, and think fairly regularly about different data structures and algorithms. A lot of this is due to working in performance-constrained environments. If that were not the case, then I would say the academic side of things would be less prominent.
I hear too many stories from angsty mid-career FAANG developers who do little more than write a bunch of Protocol Buffers all day, every day.
As someone who did not major in CS, and learned coding on the job, I find this particularly elitist and an awful attitude. I realise that I am behind the ball a bit on things like having memorised the space-time complexity of sorting algorithms, but I am filling these gaps quickly, especially when it applies to real world problems I face in my career.
I can't say for certain that I would be able to pass calculus, linear algebra, discrete math, and differential equations, but I think that I would. To throw some elitism back at you; I wound not consider any of those subjects to be anything except pretty basic in the realm of mathematics.
It's not elitism. I'm saying this as someone who tried (and failed) to get a CS degree after working in the industry for 4 years as a self taught developer. Math classes have a way of exposing deficiencies you never even knew you had. It takes years of study to gain the mathematical maturity needed to pass these classes for anyone with just a basic American high school level of education. And yes, they are quite basic in the realm of mathematics as a whole, which makes it all the more disheartening. It made me gain a whole new level of respect and understanding for the necessity of these skills, and how they simply cannot be picked up along the way in the same manner as coding.
I Interviewed with them about two years ago, mainly bc I was looking for interviewing ideas for the team I directed.
The interview was good, but they definitely asked about CS fundamentals, and funnily they rejected me because I did not know enough of them hehe.
I held no grudges, because I wasnt tried to get somewhere, but I find hard to believe that someone without a CS degree will pass their interviews.
They value what the degree unlocks for their career.
I think what you're saying is true, but the problem is that people hear success stories of silicon valley technology startups being founded in a dorm room at MIT and decide they want to have the same opportunity.
Can't blame them.