|Syntactic Confectionery Delight|
Yesterday I was lurking on the chatterbox, watching the byplay of comments, and saw reference to what an ability to learn meant. (The subject was perl, the individuals remain nameless :-) )
Because of that & a few other things that have been going on in my life, I was prompted to thinking about this:
Warning! Very long, disjointed ramble follows.
We often hear (um, read) rants for/against tertiary education as opposed to learning “on the job”.However, I find that the actual “Learning” has been done on a very different level indeed.
We hear references to individuals who either won’t learn, or are unable to learn, from the advice that is given them.
We hear things about what it “takes” to learn to program (or program in perl).
When I read these, I almost invariably find myself squirming, because I’m never on the RIGHT side of the argument … therefore I’m never going to be a programmer. Unfortunately for me, my job title is “Software Developer”, it’s what I get paid for (not in perl, unfortunately)… so I BETTER be good at it, and most of my colleagues seem to think I earn my salary :-).
Very often I think we categorise people (and their potential to be good as a programmer) far too easily. I am one of those neither-here, neither-there people … everyone I know views me as a geek, but technical things do not come easily to me. I have a great facility in arithmetic, and am only a mediocre mathematician. I can understand an abstract concept almost instinctively, yet struggle to implement it in practical applications.
I have found, in programming in general, and specifically in learning perl, that I cannot just read the docs and then write usable code directly afterwards, usually I have to see 5 to 10 different examples of that particular technique being implemented before I have an AHA moment, and from then on it’s a breeze.
In my spare time, I tutor Matric (South African school leaving level, read 12th grade or whatever your national equivalent …) Mathematics, with the goal being to get students who are failing to pass with a respectable grade. I find that the reasons students aren’t coping with Algebra (or Calculus, or Geometry, etc) is usually because they never mastered the basics a few years back, and have been barely holding on since then. Then the solution is never to teach them the concepts they need to pass in the exams, but to take a step back and take as much time as is necessary until the student has internalised the missing foundation concepts (or techniques). For this reason I absolutely refuse to take on a student after April, and then only if the student (not the parent/s!) commits to doing whatever it takes.
Very often, I think, we have the same problem in the programming world. People seem to equate learning a programming language, to learning to programme, when in reality they are two totally different things (interrelated, yes, but not the same). Concepts such as arrays, modularity, or flow control are basic, and independent of language. Specifics such as syntax and structure, etc are language dependent.
If people learnt (mastered) programming techniques from the basics up, then specific languages would be a lot easier.
To move to the more general. Different people learn in different ways.
We each have our own ideas as to what it means to master a subject, some lean to the academic & some lean to the practical. (And some just want solutions handed to them … a symptom of our sick society). Personally I don’t think one way is “better” than another.
I am one of the unfortunates who do not have an “Education” (university degree), and the 2 years of university education I do have are in a totally non-technical field (Theology).
I have found myself repeatedly “Studying” certain types of things in my journey in my IT career, things like Novell Networks (got certified and then promptly never went near ANY network again!), different technologies (because my boss of the moment wanted me to), and different programming languages (to get the current job done).
I am in a highly technical position, in a highly technical environment, yet the skill that benefits me the most is the ability to decode what users (i.e. my boss, my colleagues, our clients, etc) really Want, as opposed to what they say they want. This I never studied anywhere, yet learnt everywhere (even from my kids).
Learning that no matter how proficient I am in a particular technical skill/technology today, the market will come along and upset all my carefully laid long term plans and I’ll just have to skill myself up in something else (currently Oracle!)
Learning that I will never be more than a newbie in the great game of Life and that if I want to benefit from it, I have to reach out my hand to whoever is willing to help me understand better how I can use the limited gifts I have to maximise both my use to society and my ability to realise my personal goals.
Learning that reaching the pinnacle of mastery in something like perl is not the point, the point is to do as well as I can NOW, and do better tomorrow.
So, If I HAD to pick, I’d take my Learning and leave my Education and my Studies behind, BUT, I don’t have to, so I’ll remain always grateful that I have all three to call my own.