After ploughing through two machine learning prerequisite courses, I wanted to have a change in content for the next course I took. I've used Django in the past to build IRVING - a dashboard that allows users to run queries against many database types and display the results in one location. The majority of this was done almost 6 years ago though. It was built to assist in a job I no longer hold. Since then, I've ignored it and haven't used Django for a major project. I have used it to test a small snippet of code here or there, but never a complete application.
I remember liking Django. To that end, I decided to take Jose Portilla's Python and Django Full Stack Web Developer Bootcamp course on Udemy.
Thoughts on the course¶
The lectures were a combination of hands on coding and an explanation of what the code is doing. The instructor types slightly faster than me. This was a problem only at transitions between files, for example moving between an HTML file and a CSS file. I found myself rewinding the video lectures many times around these transitions.
One thing that I liked very early on in the lecture was the introduction of GitHub's ATOM text editor. I've used this once before, for a job interview that went very poorly (another story, for another time). I'd heard good things about it though. I used it throughout the course as a way to force myself to use something other than PyCharm. Now that the course is complete, I have decided that I like ATOM, but not enough to switch from PyCharm. It does have some nice features, especially with plugins, that I may utilize when building boiler plate code and templates though.
Foundation vs Django content¶
The Django content, itself, was great. It started at basics like setting up a project and single application within the project and moved through URL routing, templates, views and briefly touched on the admin side. There were advanced topics on class based views and the debug toolbar, both of which are important when developing.
I can't help feeling that important things were missed though. For example, the admin side is barely touched. It is incredibly capable, yet the most that is done in this course with the admin backend is registering a model to appear. Groups and permissions aren't touched at all. Customizing views in the backend aren't mentioned, either. Another thing that I was hoping would be covered as part of the "and much,much more!" bullet in the course description was both signals and channels, but they are not mentioned.
Clone projects are useful in giving students a "real world" example that they are familiar with to bring everything they've learned together. There are two such projects in this course, a blog and a message board/social media site. The blog one was a logical extension of the 5 parts that were covered by Django. The message board, however, wasn't as useful. In an effort to be more "real world", the instructor missed a lot of steps in the preceding foundational lectures. This project introduces multiple applications in the same project, but never introduced that concept previously and doesn't expand on it much here. Instead, the project becomes a combination of speed coding to keep up with what's happening in the lecture and copy and pasting code from the notes when the instructor does the same thing. I appreciate the more realistic project, but for all the time that was spent building the foundation of Django knowledge, there is a big gap between the last lecture and this clone.
This course was worthwhile, once I made it through the foundational courses. It was a great refresher for what I'd done 6 years ago. Either I did things very inefficiently then, or Django has had a ton of improvements (or both), but looking back at IRVING, I see many things that could be improved. I'm not sure if I actually will though, just due to not using the application any longer.
The long foundational courses either should have been condensed. I would have rather had more focus on Django and covered more topics there. This is especially true after completing the second clone project. New concepts were used in this project, but glossed over as "there is excellent documentation on this", instead of the in depth explanations that were provided earlier in the course.
I'd recommend this course for the Django topics. However, if you are coming into the course with any type of web development background (even the relatively basic one I have), be prepared to be bored during the first half of the course.