(Clarification: I’m a UK high school teacher. “School” in this post means high school, not university and “IT Professionals” is the term used to distinguish those who are not teachers on the forum in question.)
On the miffed-off-ometer, I’d have to say that I’m getting quite close to a 9 with some of the CS Education community of late. The CAS Community is a forum for teachers and IT professionals with an interest in Computer Science education to get together and discuss whatever they wish. As we all know, the Computing curriculum is changing rapidly at the moment and there are a lot of questions being asked on the forum by puzzled teachers, wanting sensible classroom related answers.
Here’s an analogy. I’m learning to play Roller Derby at the moment – for the purposes of this analogy the only thing you need to know is that it’s a sport played on roller skates. My coaches do not come up to me and tell me how the skates I’m using are sub-optimal because the wheels are 96a and I really should have a mix of 93a and 88a for my build, the cushions will make my skates squirrelly, my plates are too rigid and I really should tape my toes and double lace because that’s what all the people playing in the big leagues do. Unless you already play Roller Derby, you probably won’t even understand any of what I just said. Sadly, that’s exactly the type of advice that teachers often get from industry pros – the advice is all true but super unhelpful to someone who is only just learning how to skate.
There are a lot of common misconceptions that IT professionals seem to have about CS education, so I thought I’d address some of them here:
It is a school’s job to churn out students who will be able to walk into a job in industry on day one and work in whatever language/paradigm is flavour du jour.
WRONG! We’re here to teach children the core concepts of Computer Science. Working on that basis to produce someone with employable skills is your job. Do you expect Chemistry students to walk out of school ready to begin work in a lab? Should we stop using Scratch as a teaching language because nobody programs with it in industry? Of course not, so please stop recommending that we should be teaching using Scala/JSON/whatever is currently flavour of the month. It is simply not possible for teachers to be able to keep up to date with the latest flavours in industry. It’s sad that some people label teachers as ‘unprofessional’ for not being equivalent to someone in industry with their subject knowledge – but if you think about it, that’s like asking us to do two jobs at once. We hardly even have time to do one.
Kids should start off learning the right way to code with an unforgiving programming language, so they don’t pick up bad habits that have to be undone later. (i.e. PHP is beyond reproach)
WRONG! When we teach kids French do we begin with teaching the subjunctive tense – it’s really difficult but that’s how a French person would say it? Every time they confuse the passé compose with the imperfect do we get on their case nitpicking at their grammar? Of course not. We start with the present tense and useful sentences that mean something to them. OK so if you went to France you may not be able to pass as fluent but maybe saying something basic is better than saying nothing at all and getting disheartened and giving up.
I really have no time for developers who go on about how we should be teaching lambdas or mutability or tail recursion to 12 year olds or that kind of high horse gubbins. A lot of developers seem to have absolutely NO CLUE at what level students work at each age – please, educate yourself, visit a school and instead of looking for faults, just look and listen. Just because YOU had to learn a programming a certain way in the good old days, doesn’t make it the right way or the only way. People used to have to use tin baths, read by candlelight and clean their clothes with a mangle.
It makes me happy when a student writes a program on their own that works and that they are proud of. So they could have used a switch instead of lots of ifs. So they could have put that part inside a function. So their program doesn’t handle exceptions gracefully. SO WHAT. Computing A-Level students are already as rare as hens’ teeth. If we start forcing younger kids to use unfriendly mean programming languages that require 16 lines of set up to get Hello World just because some developer likes that language’s implementation of scoping, there will literally be nobody left to teach.
Oh and by the way, getting a language set up for students to use on a computer is no mean feat either. Some schools have technicians whose favourite phrase seems to be “Computer says no”, some IDEs are not free, the fun is endless.
A teacher who doesn’t have up to date flawless subject knowledge isn’t fit to stand in the classroom.
WRONG! I find it incredibly rude that so many industry people seem to secretly think that they would be the saviours of CS education, if only they weren’t already occupied as a developer. Wow. Two things I have to break to you:
- I know less than you about Computer Science
- I know more than you about teaching Computer Science
Yeah, I said it – I know LESS THAN YOU about Computer Science. I haven’t got a clue about the latest GPUs, lambda calculus is a distant memory and when I explain networking protocols there’s more fudge than a Devon tourist shop. I’m not saying I teach things that are plain wrong or that I don’t take care with my lessons, I’m saying that I know the basics but you probably know the whole picture. This is not a competition about who knows the most about Computer Science.
Quite frankly, you could be Alan Turing himself but that wouldn’t mean you know the best way to teach a child. I’ve gone through a postgraduate qualification and nine years of experience to get to where I am, so don’t presume to know more than me about how to teach children – and if you do, expect that I will be justifiably miffed. Some teachers may ask for help with subject knowledge, but they don’t need a show off who has the arrogance to assume they could do that person’s job better than them. Going back to my Roller Derby analogy, don’t be the guy who skates around really fast doing all kinds of tricks when all the beginner wanted was to know was how to stop.
I know I probably sound a bit peeved in this post (because I am) but I hope it’s also useful to any developers who read this and who are genuinely interested in CS education. We do value and respect your help, but please respect our professionalism – you’re not just someone who could be doing our job but chose to do something else.