3 ms·
As someone who makes developer courses / training material I think it's a really bad idea to use online services like PythonAnywhere or Cloud9IDE. It's really
by nickjj 9y ago
As someone who makes developer courses / training material I think it's a really bad idea to use online services like PythonAnywhere or Cloud9IDE.
It's really important to learn how to set up your own development environment as a developer and if you're making this content, I believe it's our responsibility as teachers to show people how to do this.
Personally I use Docker in my courses (because it's what I use for my own stuff) and it's been a smashing success. I do get occasional people questioning "why" but after I explain what the process would be like to set up a proper Python dev environment without Docker they immediately see the wins.
Of course I do get Docker related installation questions but it's a small percent compared to questions on the course content. One of my courses is building real world web apps with Flask and it's probably 80% Flask / 20% Docker related questions.
That's much better than punting a local development environment off to a third party service / pre-built VM and then leaving people stuck in the dark for getting anything done on their own.
- prawks 9y agoI think I'm in the group that doesn't immediately see the obvious gain of teaching in a Docker container vs. teaching how to install pyenv/virtualenv. Is it mainly cutting out troubleshooting differences between host OS's while also getting isolated python environments? Maybe I do see the win there, after all?
- nickjj 9y agoI think you're starting to see it. By the way, everything isn't just thrown into a single container. We use Docker to set up the whole app over a series of containers. So postgres, redis, the flask app and celery all run in their own containers. Without Docker, you're responsible for getting not only virtualenv set up, but also installing postgres and redis on your box, which is wildly different on Windows, MacOS and Linux. From a teaching POV, it's easier to level everyone off with Docker, but from a student's POV, it's also easier because now they don't need to worry about any of that. It lets them get to the important material faster. They can just install Docker and run a simple `docker-compose up --build` and they are good to go. Compare that to listing out a million steps to install python, setup virtualenv, write special clauses for people on Windows or MacOS, etc.. It's a huge burden for everyone, and it's the main reason why I started using Docker for my own projects years ago. We haven't even talked about installing multiple versions of postgres or redis without Docker too (because apps tend to be developed at different points in time), or deploying an app to production. All of the steps you do to set up a typical real world Flask app on Windows and MacOS are thrown out the window without Docker because your production box is likely running Linux, but with Docker, it's pretty much the same.
- prawks 9y agoAh yes, makes total sense if you're setting up not just a Python environment, but an entire stack. Very cool.