I say this in spite of an excruciating experience I had a few weeks ago where I led a Python for absolute beginners day-long workshop. I had tried Repl.it before writing the course materials and was mind-blown at how everything just worked, including the filesystem, which I needed for downloading NLTK modules. I decided to design the materials around Repl.it, letting me spare the class the possibly excruciating and definitely not fun experience of downloading and configuring Python and an IDE. Unfortunately, on the day of the workshop, Repl.it just didn't work for half the class, and for most of the rest, it was really, really slow. Hopefully this was just a hiccup.
We've been battling crypto miners, evil hackers trying to launch attacks, and other nasty stuff. Of course, this is nothing new and we know how to deal with it but I think we just reached a scale where no other truly open computing platform has ever reached and we had to clamp down harder on abuse. Unfortunately, the systems are not very well-tuned yet.
Can you please email me some more info (email@example.com) so we can debug?
Do you know Try it online?
Try it online: https://tio.run/
It’s consistent and Github login saves your code in one page.
Aren't you afraid that class participants will have a hard time configuring later Python and IDE by themselves? Wouldn't be beneficial for them to spend some time setting up their own environment during the class?
BTW I am curious in what way installing Anaconda and starting Jupyther notebook is "excruciating". Last time I did that it went kind of smooth, but maybe there are some gotchas I've missed (it was MS Windows machine, I had a admin privileges, etc.)?
I think techies like us severely underestimate how much of a turnoff it can be to begin someone's computer programming experience by making them schlep through an arduous installation and configuration process. You can promise them "really, we'll just get this right once, and it'll all be over", but that doesn't change the fact that this is their first encounter with programming, and that it will therefore have an incredibly disproportionate impact on how they conceive of the task and experience of programming.
On a first date, would you interrogate your date about their likes and dislikes, childhood trauma, and insecurities? It's probably not entirely wrong to claim that this would pay off in the long term, but there is a good chance that this would strike the wrong tone and prevent a second date.
A coarse metaphor perhaps, but there are some parallels. Imagine hearing someone tell you "You, too, can be a digital magician, and bend computers to your will", and then spending 1 hour bashing your head your keyboard trying to figure out how this Anaconda thing works (I thought I was using Python? What's Anaconda? Is it like Python but different?). If I were in that position again, I think I'd begin to wonder whether this is what programming is always like, and probably wonder if I want to do this after all.
Certainly, as we all know, programming does always involve a great deal of resilience in the face of unsexy unfamiliarity, but there are transcendental moments when you look at what you just brought into the terminal and marvel at how this ever came to be possible, and I think trying to give a taste of that to people in a first encounter with programming with a minimum of pain leading up to it is the best way to make them so excited about programming they'll be willing to continue learning, and yes, set up an IDE and Python installation.
As folks who are fairly proficient in programming, our scales for what constitutes as a "difficult task" can be wildly different from beginners to the field. They haven't built the knowledge, experience and mental representations to accurately determine whether something is hard or easy (case in point: my 9th graders will often propose final projects that would take a group of seasoned engineers months to complete).
After CS classes in college and working in the field, I kinda forgot about the initial setup barriers that I first encountered (and was much more patient to battle through); but after just teaching a single class of middle school students (a) not knowing how to properly install software and (b) as a result, getting into the state of "This is boring ... so I'm going to entertain myself by socializing, distracting my friends, or goofing around" I quickly realized how important it was for these kids' first experience with programming to be painless ... otherwise they would also make my life as a teacher a difficult one.
In my mind, something like repl.it would be ideal for getting through enough material such that the course participants were motivated and knowledgable enough to setup their own environments at a later stage in the course.
1. Hit install on Python and accept the defaults.
2. Install a simple text editor with syntax highlighting.
3. Open a file right on your desktop and type two commands in it and press F5 or something to run it.
Anaconda and Jupyter are great tools, but even they add complexity you don't need when teaching absolute beginners how accessible this can be.
Here's Python. It's installed. Tell the computer what you want to do inside a file. You understand text files and how to store them where you want, use your own conventions for that. Shove it in documents or whatever. We'll learn about project management and version control later, when you're writing programs more than 20 lines long.
There's so much stuff included in the basic installation from python.org. And it all just works.
The only thing missing from the basic installation is psycopg2 for talking with PostgreSQL.
And IDLE has always left me unimpressed relative to the terminal... but using Unicode on Windows, suddenly code pages get involved, which no one should ever have to know. There is a long series of subtle, unpleasant tradeoffs.
Writing short Python scripts when I traveled with a Chromebook was messy, I leaned on repl.it as one option... It was super easy to dive in.