I started my first computer job in 1985, July to be exact. Just after completing what was called “National Service”.
Lucky for me I got a good amount of computer experience doing my National Service. I learned RTL2, RSX 11M the PDP Operating System, and got to do some numerical optimisation algorithms that were tested in real life!
Anyway when I arrived for my new job as Software Designer (mmm better than Programmer) my boss Greg threw a copy of “The C Programming Language” by Kernigan and Ritchie onto my desk and said: well around here we are going to use this language.
Eager to please I began devouring the book. What was nice it had lots of practical examples. I worked my way through and in just under a week I showed my boss my word counting program. He said I must write a spell checker, with a dynamically updatable dictionary. I started to get used to the idea of parsing text streams. And this was getting exciting.
Now unknown to me, It seems that somehow I had learnt this language in under two weeks and the other old hats had not got to grips with it yet! Just shows you, If you have enough necessity you can do most anything. Well I had no clue, but really enjoyed all the things I could do with this language.
Next we needed a document pre-processor. It needed to include and exclude sections of text based on command line arguments, It had “If” sections and allowed inclusions and exclusions of text in the “If” section or “else” sections.
Challenge was nesting these, and I made my first use of recursion to handle this simply. I even had boolean (Evaluating to True or False) expressions in the “If” sections. This started a monster which I will cover later.
Anyway the point I am making here is that I was apprenticed by Greg and Chris both experts in this programming field. They tasked me and corrected me and kept me learning. This gave me confidence, and caused a large transfer of competence from these two bosses with years of experience to me.
I am very grateful to these mentors. After working with them I got the confidence, I knew how to code, I could do anything in code, all I needed was business requirements!
The sad thing is I don’t see that happening these days. I have seen so many Honours and Masters graduates starting at companies and not knowing HOW to get things done in programming. They have a fair amount of data about programming and what is incomputable and what is provably correct et cetera, but no knowledge how to DO programming and create systems. In fact what I noticed most was that the longer they had studied, they more they knew was impossible or very difficult to do in computing!
The drop in expertise of the average programmer is very evident to me looking back over these times. And I think the key element causing this is this dropping out of Apprenticeship.