I’m reviewing html and css with Rob Percival’s Complete Web Developer Course. I bought this course on sale last summer and haven’t gotten around to doing anything with it until now (here’s my first project, a laughably 90s-style page about cats).
I wasn’t expecting much at the outset. First, Udemy courses tend to vary wildly in quality. Second, I’m wary of the marketing associated with the “learn to code” movement, of which this course is a part. So many bootcamps and online course providers try to pitch their wares by appealing to the would-be learner’s financial insecurity. That is, they start with the premise that developers tend to make decent coin, and promise to arm the learner with the skills to replicate this success in a minimal amount of time. It’s just not realistic. You need more than a quick course to become professionally competent, no matter how many fun interactive tutorials, gamified challenges and cliche self-promotion tips such a course may provide. If you’re going to learn to code, do it because you enjoy computational problem-solving and you and want to build interesting things - not because someone sells you a glorified get rich quick scheme, replete with promises of financial independence, a life of travel and adventure, and a four-hour workweek.
That said, if you want a well-structured introduction to the basics of web development and a solid foundation for further learning, this course delivers. While I’m still working through the course, I would say it’s definitely one of the better intro courses I’ve seen so far. First of all, it steers away from the gamified challenges and gimmicks that tend to go with the “browser-based tutorial model” of coding instruction, which imo can create a false sense of efficacy among learners (more on that in a later post). Second, it introduces the concepts in a logical, sequential manner that’s friendly to beginners. Third, it actually shows you how to set up an infrastructure that actually reflects a real-world coding environment. If you actually want to move beyond memorizing syntax patterns and get a better sense of what it’s like to build a production-ready site, one thing you need to learn how to do is to set up your working environment (working with text editors, setting up your domain, hosting service, and ftp client).
The main reason I would recommend this course over a lot of interactive tutorials I’ve tried (Codecademy, freecodecamp), is because it’s built on sound teaching principles. The instructor, Rob Percival, started out as a math teacher, and it shows in the attention he’s paid to the course structure. He’s managed to strike a balance between introducing the topics in the gradual, cumulative way that actually helps people learn, while managing to get people building things relatively quickly (which gives learners a sense of efficacy and reward that motivates them to keep going).
To illustrate: freecodecamp’s tutorials get the learner to start messing around with items inside a style tag without defining what a style tag (or CSS in general) actually does, its common components, the difference between html and CSS or how CSS interacts with html on a site. While I haven’t spent a lot of time on the site, I got the impression they were trying to get learners to build something “cool” right away, but without really providing a solid context or framework for what they were trying to show the learner how to do beforehand (thereby making it harder to build the genuine understanding or memory structures that would make it easier for learners to eventually start building sites without constant instruction). If I were completely new to markup languages, I may have been confused and frustrated with the lack of context.
On the other hand, Rob introduces html as a standalone topic, gradually gets the learner to build more complex (but still extremely simple) things in html, and ends the section with a project, in which you build a simple site on your own. By the time the learner gets to the CSS chapter, when he introduces it by defining CSS and the difference/interaction between html and CSS, idea that html is content and CSS is style is intuitive. To illustrate how CSS interacts with html, he uses this excellent demo from W3Schools, which gives the user a basic html page and three different styles (with source code) to apply to it. While his explanations and videos are concise, he takes care to provide learners with the background they need to confidently apply the concepts and code on their own.
This is in contrast to the “bootcamp” model. A lot of bootcamps and online tutorials seem to advocate teaching html and css together, giving learners a relatively sophisticated site to hack away at in an attempt to figure out how each piece of code affects the site, advocating learning through immersion and trial and error. What they don’t tell you is that unless you already have some familiarity with coding, you’re probably going to end up frustrated. While I haven’t had much exposure to bootcamps (I’ve gotten a taste of this approach through html500 and online courses that replicate the bootcamp teaching style), I’ve generally been able to follow along because I’ve seen the material before, I understand programming principles and the overall infrastructure (for lack of a better word) that enables someone to create a page and display it to the world (a lot people I encountered at html500, for example, didn’t have that understanding). One tech-savvy (but non-coder) friend admitted she didn’t feel like she learned much from a short bootcamp-style course she took. All of this is to say that while you won’t start off creating something amazing in Rob’s course right off the bat, by starting simple and gradually progressing to more complex topics and projects, you’ll learn a lot more (and feel a lot more confident) than if you try to learn everything all at once.
Also, while he provides a ton of external resources for further reading (many from sites like W3Schools, which offered a solid foundation in markup languages long before the “learn to code” trend), you don’t have to rely on Google or external references to compensate for meager instruction (as is the case for other courses I’ve encountered). The videos provide a solid grounding in the skills you need to complete the projects, so you don’t have to rely on external resources for that purpose.
In sum, this course offers comprehensive, yet concise instruction from someone who has obviously put a lot of thought into creating an effective learning experience. Unfortunately, “get a solid foundation in the basics in a reasonable amount of time!” doesn’t have the same marketing appeal as “become a cash-earning developer in six weeks!” Nonetheless, there’s a strong course underneath the marketing spin.