I am about to start creating a video course for Python beginners. What would you like to know?

K. Long one. Bear with me.

This may well be out of your expertise, but I've noticed that a lot of beginners reach a certain point where they throw up their hands and go - "I have no idea what the hell is going on."

I can relate. I taught "web development" back in the early aughts (from late 90's to about 2003 or so) - and those lessons covered everything from front-end graphic design (now called UX) to building simple back end systems (now called the 'stack': I'm so old) incorporating PHP and mySQL. Classic, old-school stuff. Then I got very bored and moved on to another line of work entirely.

Personally, I've got a reasonably solid understanding of programming and "how computers work", but the minute somebody mentions github or "compile from source" (and trust me when I tell you this - newbies see this much faster in their learning then you might think), it's game over.

There are almost always fundamental rungs on the ladder that are missing when people decide they're going to teach "programming". Bear with this brief example... The best metaphor I've come up with is policing. When a newbie is 'learning programming' all they seem to get is people telling them how to fire a gun. Or having to listen to endless arguments over why this caliber (Java, C++, C#, etc) gun is better than that one, etc etc etc. How to hold the gun, when to clean it, blah, blah blah. But thats all they learn about 'policing'. One thing. They don't learn about the "policing ecosystem", why this tool is used here and not there, how teams of officers are created and deployed and why.

So to take this back to teaching programming, I'd have to say you must make them learn to use the shell. You have to really sell that, because competency there will scale to their end goal. Now, talk about layers and protocols, how the software is interacting with the hardware. At that point, I think talking about software development is in order. Talk MVC for a bit. Now you can start talking about the tools each person in that ecosystem is using. The Systems administrator - what tools are they using to monitor servers and networks? Large projects need teams - so who does what, why do they do it, what tools do they use, and why do they use those tools? I know what githubs's supposed to do - I think (wasn't it created to keep versions intac?) - but I wouldn't bet my house on it. And I'm reasonably conversant about computing!

I can't state enough how overlooked this seems to be with people who want to be good educators - they talk endlessly about one tree, but never about the forest and certainly never about the environment that contains the forest. I'm mixing metaphors freely at this point, but I think you get the drift. Some books I've read that are pretty good about the hardware infrastructure (protocols, etc) often get those sections reviewed as "boring", but I honestly think that's because educators don't attach people who oversee those aspects and describe why they're so vital. And they don't describe the tools they use either.

So my sggestion is to show all the 'layers' of computing, why they're necessary, then tie in an actual person who's doing a job with those layers, and the tools they use to do them.

Long, I know, but meh, it is what it is. Teaching was one of the greatest privileges I've ever enjoyed.

/r/learnpython Thread