Today I came across this article on parents and teaching children mathematics. The US is, of course, falling behind many third world countries in mathematics.
I wrote "I Hate Algebra" last year. In this post I talk about Nobel Laureate Richard Feynman's take on teaching mathematics.
In light of all this I recently had a chance to observe some grandchildren who, by the teachers, were claimed to be lacking educationally. Not surprisingly it seems that children do quite well with basic concepts outside the class room. Yet when placed in a "classic" educational model their progress seems to stall or fail.
So then I started to wonder: Does the lack of mathematical ability affect programming?
Over the years of have apprenticed a number of programmers. To me "apprenticing" means that they learn how to make a living at it, either as a job on their own or as someone a customer will pay to support doing tasks.
Competent programming involves all sorts of complex mathematics: virtually all of it well beyond what you might get in highschool. Virtually every one of my "apprentices" thought they were "bad" in math - failures. Yet with experience they became effective programmers and were able to grasp all sorts of complex mathematical ideas: statistics, performance comparison, efficient design, and so on.
Fortunately all of them could at least add and subtract when they started - but that was about it.
Fractions? Forget it...
Yet today they use these concepts without even realizing that they are:
"How much disk is free?"
So though they were "math failures" in the academic world in the real world they are not.
When I learned to program the idea was more closely tied directly to mathematics. Books such as "The Art of Programming" by Donald Knuth (1962) were rife with complex mathematical formulas showing how algorithm A was faster than algorithm B. This was rough going coming from a highschool where all you could learn in mathematics was trigonometry as a senior.
So while I was not a complete math failure I did struggle in college - I
Eventually I got as far as Advanced Calculus.
Over the years since then (which was the late 1970's) I have come to realize that much of the mathematics that you use in your daily life (if you use them at all) are intuitive. Its only the formalistic written forms that people struggle with.
Back to the grandchildren...
It seems that today those that teach mathematics are not mathematicians - particularly in elementary, middle and high school.
In fact I would say that mostly they are mathematically dysfunctional.
Now their bosses realize this and, rather than pay someone who really understands it to teach it, they create formulaic teaching aid (and I mean "teaching aids" for the teachers) so that these mathematically inept folks can teach children mindless algorithm's to accomplish the obvious.
(Watch the Feynman video in "I Hate Algebra.")
So any child with an alert mind (at least more alert than the teachers mathematically) is quickly stymied with boredom. To the point in some cases where children actually mock the teachers.
"Okay class, we are teaching rounding today. Let's round to the nearest ten. Andrew, pick a number between one and a hundred."
"Ah, Andrew, let's try another number."
"Okay class, let's try rounding to the nearest five. Jr, pick a number..."
Worse, those that are successful in this model go on to college. And in college today they are present the same model.
So the best and the brightest are actually not.
So when they land in the world of business where someone is trying to get something done programmatically they literally don't know what to do. They have no "model" to work in.
So they have to guess.
Which is intellectually what Agile programming is.
Guessing at what's wanted - creating a prototype - and iterating.
(BTW, I wonder what Agile does with things that take a long time to do just to build the basic framework...?)
So I am saying that the whole concept of "Agile Programming" is derived from a body of individuals that are evolutionarily selected in the educational system for a lack of true mathematical understanding.
(In today's school world even more so than in the past bright children are simply bored into dropping out...)
So Agile Programming is symptomatic of a failed mathematical (and scientific) educational model.
Which means that our leadership in these areas of IT is in jeopardy as well.
The rest of the world does not pretend that everyone has equal ability in all areas. Even the old Soviet Union understood that some children had more talent in some areas than others.
And they used the true ability of their countries elite in those disciplines to help those children along.
That wouldn't be "fair."
So we drag everyone down to the (math warning) Lowest Common Denominator (LCD) - basically treating the most gifted as if they are a true math incompetent. (And there's nothing wrong with being incompetent at math because its likely you're simply good at other things. In my life I've found that there virtually everyone has some sort of unique skill that they can use to make a living. The problem is often that they are told they are stupid or a failure rather than being encouraged in an area where they can excel.)
Most of those in my generation who are skilled in these areas of mathematics and programming are nearing retirement - our knowledge will be lost and the next generation will have to relearn what we have done.
In the mean time the results of Agile programming are everywhere. So pervasive is this that my eighty two year old mother complains:
"Why is the phone system so stupid?"
"Why does my new iron not make steam when I fill it with water and set the knob to steam?"
"Why can't I just make a phone call on my cell phone?"
Agile product development, Agile big pharma, Agile everything.
A total and, for the most part, complete failure.
Perhaps this is the advent of Agile Failure...?
The second point on the image above is most telling: "Working Software over comprehensive documentation."
If you don't have a comprehensive idea of what you are doing how do you know the software is working?
This takes you right back to US grade school.
Teach the kid a process designed to make the teachers job of teaching math easy and the kid learns nothing about doing the "hard work."