Joel Spolsky and Clive Thompson discuss the past, present, and future of coding
stackoverflow.blog
stackoverflow.blog
I could probably be convinced to jump on that bandwagon.
Granted it seems like it didn't stick for a large segment of folks.
(Which might be a valid thing to examine in itself: for math and science we tend to act like it's just the fact that a course is missing from the curriculum that will answer why the general population is inexperienced with it, but nearly everyone also takes composition and literature classes, and I don't feel like we can say their associated skills are really at "saturated" levels.)
A good example is regressions this is quite a common technique I rely on daily and at it certainly helps to have an understanding of slope, intercept etc.
Unfortunately my "Stats for Engineers" course at uni was not great it was pretty much focused on "this is how to interpret ANOVA output from Excel".
I've found looking at some of the more complex stats I've had to wrap my head around like Principle Component Analysis - it makes a lot more sense when you can grasp the linear algebra going on behind it.
The problem with it is applying it to life, which is more often Bayesian.
Sadly the high school level math can never be reasonably complete. They should mention statistical tests and normal distribution at some point, as concepts.
My college course was "Probability and Statistics" so by combining them you got coverage of the basics but no deep dives and no calculus.
You need more statistics than calculus to understand the current state of neural nets in Machine Learning, but you if you don't at least know the chain-rule, you're just using library code and not understanding even a basic perceptron.
And from a personal perspective: I've used so much trigonometry in my career (plenty of graphics work) that I'm not sure where I'd be without the time spent on trig and geometric reasoning in school.
I mean, I agree with their basic thesis that stats is important because of ML and the increasing practicality in using statistics and AI to solve problems. But I don't thin what they'd discard is well thought out in terms of what is going on. Nor is it meant to be, it's just a casual interview.
People are always complaining that schools don't teach them how to do their taxes, but for most people doing taxes is a combination of addition, subtraction, and following a page of instructions about which numbers to copy from one piece of paper to another.
Imagine trying to teach 16 and 17 year olds that are going to grow into adults that struggle to copy numbers from Box A to Line 3 and then add them correctly the difference between t-value and a t-value.
(I also believe the average person should have a better understanding of probability and statistics ... but we're still working on getting the average high schooler an understanding of why 1/2 + 1/3 is not 1/6 and why you don't need a calculator to calculate 7 * 0)
100% agree about probability and stats, that stuff is not intuitive nor easy to pick up outside of school.
This is absolutely not a US problem alone, btw -- every modern country has a yearly cycle for fiscal policies at the very minimum, and often you have additional changes landing throughout the year.
We really should be making income taxes automatic for the default W2 case, like new zealand, but there is another story behind that.
Alternatively, there a number of other tax software companies that do not actively lobby against tax simplification and consumer interests. TaxAct is one example I've seen mentioned on HN, but there are others.
The problem is that "no-brainer" decisions like yours help keep us stuck in the same quagmire we are in now. I think it is worth a bit of time and/or money to push back against these kinds of shady business practices.
But if you spend time thinking about it, trig likely changed your perception of the world (and history) too. I think most mathematics do that to your brain, by virtue of expanding your internal language.
I can only imagine how crazy these conversations must get for the people actually trying to plan curricula.
> I could probably be convinced to jump on that bandwagon [dump calc, replace with stats]
I think, really, that the opposite needs to be done.Math curriculums would do better to focus more on getting "the foundations" right. Starting with algebra, geometry, trigonometry and real analysis (calculus), and pursuing it rigorously for college-bound students. There should be a focus on mastery rather than covering a wide variety of stuff quickly.
Too many students get to college with a mathematical foundation that looks like Swiss cheese-- with many holes in basic skills: like fractions, exponents, trig (yes, even if they took calc in high school).
I think that's a pretty good foundational skill, but I admit that it isn't obvious from the students point of view why that would be or that that is what they are even learning.
In Texas the Geometry class is designed to "strengthen their mathematical reasoning skills in geometric contexts. Within the course, students will begin to focus on more precise terminology, symbolic representations, and the development of proofs" [1]
In Texas Trig is taught in Precalc, which makes sense if you are going to take Calc which makes sense if you are going to go on to study engineering or physics or mathematics. But neither of those classes are required in Texas. You could just as well take Algebra 1, Geometry, and AP Stats.
[1] http://ritter.tea.state.tx.us/rules/tac/chapter111/ch111c.ht...
(Edit: for that matter, teaching statistics to students with limited exposure to calculus is not a very successful endeavour, either...)
There are a lot of things that mathematics is fundamental to besides data science, and schools need to address the requirements of all children, not just those who want to write (a very limited range of) software when they grow up.
I agree with you though that attempts to teach Physics without calculus are sorely misguided. It's ridiculous to force students to memorize kinematic equations that can be trivially derived from each other.
Statistics, on the other hand, I encounter daily, but don't have the expertise to handle well. I know, I could study, but easier said than done.
I'd wager it's been a while since Joel was in a school and the course offerings across the board are likely quite different than he remembers.
My school teaches Algebra 1, Geometry, Calc, and Stats. We sometimes are able to offer Multivariate Calculus if there are enough Juniors in the BC Calc class.
It would be nice if we could offer an Abstract Algebra or Complex Numbers course occasionally, but there just aren't enough students that get to senior year ready to take those kinds of courses. Keep in mind that there are 2 AP Calculus tests, so no student that could take Abstract Algebra would choose to not take AP Calculus due to getting college credit for it.
Since there is an AP Stats class, students will often take both AP Calc and AP Stats. Which means they are lined up to take all the fun math classes when they get to college!
Of course, these aren't the average students. These are the students that are taking full boats of AP classes and coming out of high school with 15 - 30 college credits.
Well, Joel obviously wasn't taught statistics then, because you need calculus to learn it properly.
And trig is such a fundamental math needed for linear algebra and vector calculus that it shouldn't be dropped either.
Even for discrete math you need to understand ideas like convergence, otherwise probability is filled with paradoxes.
"Pick a number!"
"Any number?"
"Well, numbers that are big are less likely to be picked."
"How much less likely do they need to be in order for your question to have a sensible answer?"
"Let's talk about convergence"
You also need algebra and trig. How else would you know what an inner product is without trig? Or that correlation is just an inner product? You need some linear algebra as well to understand cross products and inner products, otherwise they will be these magical things.
Many ideas in discrete math should be understood as the discrete versions of ideas in continuous math, with the continuous math ideas often being more natural and easy to understand. Sometimes one of the best ways to estimate an infinite sum is via an integral that is much easier to solve. A lot of complicated sums seem magical until you see that they are just the discrete versions of integrals -- sometimes path integrals -- with various weights that come from measures on the spaces of interest. So if your interest is blind computation, you don't need a lot of discrete math at all, you just need to learn what the symbols mean and how to look recipes up in books. But if your focus is on understanding what you are doing, then there is not a magic barrier between discrete and continuous math, most discrete math can be viewed as a discretization of continuous ideas, and in some cases ideas in continuous math can be better understood as limiting cases of a discrete result.
The sad thing is that this is all stuff you will get in a good gymnasium in Europe but you may need to wait until college to get it in the U.S. Absolutely no reason why a teenager can't learn calculus, limits, trig, probability and statistics, as well as basic ideas in group theory. Really algebra, geometry and trig you should get in elementary school so that you can get calculus, probability and statistics, basics of differential equations and some topology in high school. Then you can take specialized courses in algorithms if you are into CS or say PDEs if you are into engineering -- this is all stuff that should be taught in high school.
College tracked teenagers in Europe often learn that and more, and not just in math centered gymnasiums, but the price of that is tracking, otherwise you have to go as the slowest learner who has no interest in a specific major in college.
My acquaintance (having recently graduated college for maths) was explaining that in the real world, statistics and probability have far more use in the regular world. From my perspective perspective as a programmer, I confirmed that I'd used statistics far more often than trigonometry but with one notable exception: game engine programming.
Never have I felt more amateur in my understanding of mathematics during my programming career than when I had to (re)learn about matrix math, dot products, quaternions, Euler transformations, and other concepts I hadn't touched or even heard of in years. Maybe those concepts are less applicable as general math education now that everything's a pre-built framework with its own IDE.
Statistics without any calc is basically applying ad hoc tests without understanding what they are actually testing. This is the kind of statistics we should be getting rid of, not expanding.
I can't imagine I'd want to do physics or mechanical engineering without calculus or trigonometry. And computer graphics would be a lot harder without trigonometry.
And for statistics and probability... how can you have a Central Limit Theorem if you don't even know what a limit is? ;-)
Being able to deal with continuous functions is certainly useful for statistics and probability.
Please do go back to school. It's mostly calculus, statistics and discrete math.
Trigonometry, besides geometry, essentially only appears again as part of complex numbers and calculus. When circles or balls are involved. Phase as well, but it's offshoot of calculus, as it can be represented as complex exponentials.
No, I do not need think I need to go back to school.
Neither would be better than trig and calculus. Nobody remembers the formulas and rules unless they use them regularly, and a course that is heavy on proofs would be too hard for most students.
In my view there might be a third way, which is to let the teaching of prob & stats revolve around simulation, rather than by algebraic derivation (proofs) or memorization. What can you learn from a giant bag of random numbers? What if that bag is divided down the middle and given to two groups of students? What can you deduce, when you know something about a set, but not everything about it? Can you make random numbers produce outcomes that are sometimes as convincing as the outcome of an experiment?
And so on. Even to this day, if I think that I've used the correct statistical formula, I test my recollection by feeding simulated data through it.
This kind of exploration could also gently lead students into... coding.
With this approach young engineers learn that clean code and everything people like Martin Fowler have been saying isn’t going to get them promoted. So people learn bad practices and we all get collectively worse at coding.
I’ve spent so much energy trying to get people to care about code quality and qualitative improvements, but at the end of the day the people who got these companies were they are can just say there method works and there’s no proof it would have gone better with better code or that they would have survived at all.
"I know it’s kind of a cliché but it comes back to worse is better. If you spend the time to build the perfect framework that’s going to do what you want and that’s going to carry you from release 1.0 through release 5.0 and everything’s going to be great; well guess what: release 1.0 is going to take you three years to ship and your competitor is going to ship their 1.0 in six months and now you’re out of the game. You never shipped your 1.0 because someone else ate your lunch."
Fowler writes for enterprises which have large, long-lived systems.
However you could spend forever rewriting and refactoring. What is the value in that?
But you (and I, and thousands of others) still use the site and probably didn't even notice or care about any of that. This is one of the largest, most heavily concentrated technical audiences on the internet, and even though those are the exact people you think would be most discerning about it, obviously nobody truly cares about how much isn't being done "properly". People will argue all day in the comments here about the right way to do things, but since they're here they clearly don't think it's important when deciding what they use themselves.
It's the same for everyone else, with every other site and product. As long as it works, the reality is that almost nobody cares how much of a mess anything is internally.
Back then usability, graceful degradation and progressive enhancement were appreciated by developers. Nowadays we have the complexity of Enterprise Java except with less reliability and in JS. And ads and tracking and virality everywhere.
https://www.youtube.com/watch?v=0nbkaYsR94c I find it absolutely hilarious, and I can almost guarantee you'll actually learn something new you can do in excel.
Sending a video about "Secrets of Mastering Excel" is less like to humiliate your colleague than sending them a link to "You suck at excel"
I would add “…and keep your ranges as lower-inclusive, upper-exclusive.” Interestingly, both of these have related reason why: https://www.cs.utexas.edu/users/EWD/ewd08xx/EWD831.PDF
All* developers google things. Google often places at the top StackOverflow hits for programming related questions. I bet that's how most "non-nerd" programmers arrive at SO.
*again a generalization, but even less off the mark.
I feel bad now...
The current stupidity of the hiring process, the inane whiteboarding, the take-home tests and all that, is all down to him.
Bob Martin - The Future of Programming