jfv
Joined 10 years ago
Joined 10 years ago
Ads are inherently going to be the opposite of Google's values, yet Google depends on them for the vast majority of their revenue. They show you some search results in line with their values, and if you can't get to the top of that "intrinsically", you buy ads or SEO. The folks that use that system to exploit the least intelligent win here, and Google takes a share of the profit.
Based on my Google search results in the recent past, Google isn't doing a good job of making sure the "best" websites (by my own value system, of course) make it to the top. I find myself having to go into second and third page results to get legitimate information. I'm seeing pages of medical quackery that "sounds good" but isn't based on science when I try to find diet or exercise advice.
As technology becomes more democratic, more people will use it. That means that the people that spend more time trying to sell you shit are going to win, because they're the ones that are willing to reverse-engineer the algorithm and push stuff up to the top. They add less value to society because they're spending all their time on marketing and promotion.
I wish I knew how to solve this problem. By imposing morals, Google "bites the hand that feeds".
Don't listen to what the guy at the top is telling you to do with your life. Ever. But do nod and smile when he says it.
Most working programmers won't have to know any math beyond arithmetic.
For instance,
"Also, how does one distribute a large computation across globally distributed data centers? You have to understand some physics to do this well: at Internet scale, the speed of light starts to be a bottleneck. Heat dissipation, density of electrical current draw per unit area, etc, are all real world considerations that go into what programmers do"
Come on, let's be real. In grade school we learned that light goes around the earth 8 times a second. That means 1/16 of a second (63ms) to go around to the other side of the world. That doesn't set a useful lower bound since this is the ballpark of latency within a country anyway. You're just going to ping between the two servers and measure the latency.
That being said, programming could in theory require any kind of math. If you're doing machine learning, you'll need to understand statistics. If you're doing graphics programming, you'll need to understand trigonometry, linear algebra, etc.
If you're writing software for the medical industry you'll presumably have to understand a little bit about how that industry works, but I wouldn't suggest programmers go learn that just for the sake of improving their "general" programming skills.
Here's a more realistic take:
1) Learn math as necessary for a field you're interested in
2) Know binary and hexadecimal representations of numbers.
3) If you're going to use a lower-level language, understand how signed/unsigned arithmetic works, boolean algebra, and some basics of the floating point representation (in a nutshell, don't assume that computations are exact, so don't rely on equality (==)).
4) Understand time and space complexity. For most programmers, this is going to be simple: don't nest too many for-loops. I'm guessing 90% of programmers will never have to construct an algorithm whose complexity involves a logarithmic function, except for maybe binary search. Even then, most programmers will rely on libraries to do those things.
5) Be able to do back of the envelope calculations, and understand that order of magnitude is more important than exact numbers. Try to do them in your head so you can quickly evaluate possibilities.
6) Increasingly, statistics and machine learning are becoming important for programmers to know. Learn some basic statistics and it will make you much more desirable. Play around with R or Octave or numpy and don't make the mistake of applying too much statistics without thinking, unless you're in the marketing department.
My recommendation would be Spivak’s calculus. There are a million great exercises and the book is beautifully typeset and overall a pleasure to read. Don’t let the title fool you, there are analysis exercises in there.
As a new coder even things like learning the tree-like structure of HTML, the brutality of an errant slash or missed closing tag, or the frustrations of bringing a visual idea to fruition with plain text are challenging enough. I wouldn't worry too much about HTML "not being real code".
If time is on your side (more than a year), I would gently nudge her into HTML and see what she comes up with. If she finds it tedious maybe try another route, but if it sticks I would segue into simple Javascript or CSS after that depending on what she wants. If she wants more control over how the page looks, naturally she'll want to learn CSS. If she wants more control over functionality and making the page "do" something, Javascript.
As a completely radical idea, you could show her LOGO. I remember that being incredibly inspirational when I was a kid and appealing to the artistic side.
If time is on your side, you are lucky in that she can afford to play around and not go down the bootcamp route which will inevitably lead to burnout. I say nurture the interest as gently as possible.