Earlier quoted context omitted.
Calculus probably isn't the best example, because you really don't need it. Real engineers need it, but if software engineers got a different sequence in discrete math I think they'd be better prepared for the job market. I ended up doing a math concentration so I got both Calc 1-3 and some nice discrete courses like number theory, combinatorics, and abstract algebra that were super useful, and in my opinion we could…
This really is not true. Using a little calculus to derive a closed form solution to a problem can reduce computational burden. A team where I work just had to do exactly this for a geographic distance optimization problem. At first glance it seemed like you needed dynamic programming and it was expensive, but drawing it out and modeking it with equations, we actually set up a Lagrange multiplier formula for the prob…
Google Tech Dev Guide
241–250 of 250 posts
Re: Google Tech Dev Guide
#242Earlier quoted context omitted.
This really is not true. Using a little calculus to derive a closed form solution to a problem can reduce computational burden. A team where I work just had to do exactly this for a geographic distance optimization problem. At first glance it seemed like you needed dynamic programming and it was expensive, but drawing it out and modeking it with equations, we actually set up a Lagrange multiplier formula for the prob…
Yeah the statistics and machine learning applications are a bit hard to get away from. But I would still replace the calculus sequence with discrete math, assuming the number of math credits had to stay the same. At my school (University of Maryland, College Park) most CS majors just took calculus 1-3, statistics, and one basic discrete math course from the computer science department. The size of calculus seems mass…
In fact I’d argue it makes calculus more important than what is typically understood as “discrete math” because in order to have the mathematical maturity to really understand the meaning of major discrete math results and theorems, it requires understanding calculus first.
If you “just” study discrete math mistakenly believing “that’s where the value is” then you’d end up with a shallow understanding of discrete math, lacking ability to extract value from it except in some narrow sense from rote discrete math application-specific coursework.
Re: Google Tech Dev Guide
#243Earlier quoted context omitted.
Seems like a pretty normal algorithms problem to me. Anyone that's taken a CS curriculum has done plenty of them.
Yes, and that's just about the only time they'll do them. That's the problem.
It would be a problem, I guess, if people found it so boring that it deterred them from learning (I don't know what the Karate Kid analogy here is; I think miyagi MEANT to make Daniel do something boring to prove himself, which is probably not appropriate for learning to program), then more interesting exercises might be beneficial. Everyone learns differently, but when I was learning, I found exercises like that fun myself. Because I enjoyed programming, the same way some people enjoy crossword puzzles (I don't). Of course it was a long time ago, perhaps "kids these days" require more flashier puzzles, I don't know.
I'm a better programmer for having taken a 'compilers' course, but I've never written a compiler since and probably never will again (but who knows).
There's a reason "foundations of programming" are foundations. It's not because you will do those tasks again in your career. But because they will teach you concepts and methods and skills you will use forever.
Re: Google Tech Dev Guide
#244Earlier quoted context omitted.
(Disclaimer: I work at Google). This is going to sound like a humble-brag, but it isn't, I'm trying to give some life advice based on my experience: I have used "CS" algorithmic thinking on multiple projects, I've even used facets of abstract algebra and number theory from my Math degree to further my career and it lifted me out of poverty. Here's an example. A few years ago, I was researching ways to crunch down the…
>There's nothing wrong with straightforwardly engineered apps, screens, forms, databases. Most of the world subsists on this. Most of Google subsists on this. Interviewing everyone for skills that only come up when you are pushing the boundaries of CS is pointless. 99% of engineers at Google fling protos and do menial translations on them. Have a separate "CS" group if you want and apply the CS questions to them. For…
I don't know if it's a good interview question or not, but that doesn't mean it's not part of learning programming.
There's more to learning to program than learning to do well in interviews, just like there's more to learning in general than doing well on standardized tests.
I think it's odd that so many immediately jumped to discussing the _interview process_. Google's, or anyone's, interview process may or may not be effective at finding talent or being fair. (I have no particular opinion on Google's, but there's LOTS written on the difficulty of creating a successful interview process for programmers, and various different opinions and approaches).
But why do we in this discussion seem to assume the only point of this Google site is helping people _pass interviews_? It doesn't say that's what it's for at all.
I think it's actually a pretty marvelous free site for learning CS and programming of various sorts, for people of various levels and domains.
Re: Google Tech Dev Guide
#245Earlier quoted context omitted.
(Disclaimer: I work at Google). This is going to sound like a humble-brag, but it isn't, I'm trying to give some life advice based on my experience: I have used "CS" algorithmic thinking on multiple projects, I've even used facets of abstract algebra and number theory from my Math degree to further my career and it lifted me out of poverty. Here's an example. A few years ago, I was researching ways to crunch down the…
I agree with most of your post, except for: >But IMHO there's no harm in being challenged like this anymore than being asked to complete basic training to be in the military, even though you might just be a tech-support soldier. I would agree if the big companies making the demands on these candidates assumed the burden of training. You don't have to spend $60k for a degree, spend hundreds of hours grinding leetcode,…
Their culture problems that have become publicized of late are a knock on effect of this. It definitely establishes the fundamentals and makes you "better" than the rest (to a point), but at a terrible cost.
Re: Google Tech Dev Guide
#246I checked out the "cloud infrastructure" section and there's no challenge questions or code snippets. It's less of a "Tech Dev Guide" and more of a "Here Are Some Bookmarks I Found, Check Off The Ones You Read" . It's not a terrible idea, but more of a suggested reading list than a "guide". There's at least 10 years of such articles and videos piled up on the internet. Going through them all will take a long time, an…
Re: Google Tech Dev Guide
#247Earlier quoted context omitted.
> Family obligations do not help. You've put your finger on it right there. These type of interview questions are biased toward candidates with plenty of free time and few obligations. This effectively has ageist, sexist, and classist[0] consequences. [0] Racist as well, to the extent (which is considerable) that class is entagled with race.
yes anything that requires competence has those consequences. you could say the same for not learning anything.
Not true. Are you in the "prioritizing diversity means lowering our hiring standards" camp?
Re: Google Tech Dev Guide
#248Earlier quoted context omitted.
yes anything that requires competence has those consequences. you could say the same for not learning anything.
> anything that requires competence has those consequences. Not true. Are you in the "prioritizing diversity means lowering our hiring standards" camp?
Re: Google Tech Dev Guide
#249Earlier quoted context omitted.
> Family obligations do not help. You've put your finger on it right there. These type of interview questions are biased toward candidates with plenty of free time and few obligations. This effectively has ageist, sexist, and classist[0] consequences. [0] Racist as well, to the extent (which is considerable) that class is entagled with race.
yes anything that requires competence has those consequences. you could say the same for not learning anything.
Re: Google Tech Dev Guide
#250Earlier quoted context omitted.
> The engineer that cannot write a sorting algorithm is the one that designs an API that fundamentally requires server-side session state that grinds to a halt at ten QPS I've come cross more than a few "can write a sorting algorithm" engineers that nevertheless design APIs requiring server-side session state, or that have gone ahead and implemented a sorting algorithm embedded in the server-side HTML template. Knowl…
Of course it's not sufficient. I don't even think it's necessary. But, generally speaking and in my experience, formal algorithms knowledge is incredibly useful, and you are at a significant disadvantage if you do not have it in your toolbox.
I was pointing out that a specific correlation you mentioned wasn't particularly robust, and certainly didn't amount to the causation you were implying.
Perhaps I should have made my point more explicit by noting the existence of counterexamples - engineers that design and implement good APIs without any particular knowledge of CS or the implementation of sorting algorithms.
You actually are conceding my point when you admit that knowledge of algorithms isn't even necessary.