I don’t pretend to know what the people want. Thankfully I don’t have to: my stats tell me the people want reviews of coding tutorials. My review for Coursera’s Learn to Program has been a constant source of traffic since it went up last year. Never one to withhold from the great and weary masses, I will starting doing more regular reviews of programming courses.
I liked the Learn to Program class very much and wanted to do more through Coursera for my next project/review. However, I wanted to do more with Python and there were no more introductory/intermediate programming classes offered. After snooping around I discovered Learn Python the Hard Way by Zed Shaw. I’m working through this course now (and loving it). A full review on LPtHW will come when I’m finish.
Python is well and good but I realized that a scripting language mainly used on the Web would be rather lonely without the company of HTML and CSS. Shaw, unfortunately, does not have any materials for either CSS or HTML. I knew that Codecademy had an HTML module so I decide to have a look.
What is it?
How does it work?
The Web Fundamentals track is divided into six sections (e.g., Introduction to HTML) and each section has two courses (e.g. Project: Build Your Own Website is the second course in the Introduction to HTML section). Each course has anywhere from six to twenty-six exercises. The track starts with HTML and ends with students using their knowledge of HTML and CSS to build a web page.
The exercises are the centerpiece of the Codecamy experience. Each exercise has careful instructions for students to follow and an input area for testing. Another column displays the output of what students are typing and updates as you type. The layout is mostly very good and makes experimentation painless. My only complaint regarding layout is HTML code tends to get rather long and side-scrolling to see what is happening in the far margins becomes quite a chore. I ended up using JS Bin for the longer exercises, copying and pasting when I was ready to move on.
Students are expected to produce the results of the instructions to advance in the exercises. There criteria to advance are clearly stated in each exercise but the system was forgiving enough to allow variety of student input. I admit to being frustrated more than once because I thought the computer was not recognizing my perfect code. More often than not I had not read the instructions carefully and had missed a crucial detail. There is an option to skip an exercise if you do not get the correct answer but I never needed to do so.
I found the explanation of some exercises to be needlessly confusing. I appreciate that each exercise attempts to break down the element being taught to its smallest, logical part but I wish that some more in-depth explanations had been offered on some exercises. These frustrations were infrequent, but present.
Did it work?
I think so. There were more than a few ‘ah-ha!’ moments as the exercises had me re-creating elements of web pages I had interacted with many times.In fact, the constant re-creation and doing is what makes Codecademy shine. I could have learned everything in this track from a book, of course, but following the instructions and seeing the results immediately is empowering. I wasn’t afraid to experiment beyond what was called for in the exercises and ended up reading quite a lot about HTML/CSS standards outside Codecademy. Although the track doesn’t (and probably can’t) teach good design principles I feel like I could build a website from scratch that looks ‘acceptable’ to most laypersons. Nothing worthy of a Webby, of course, but certainly better than nothing!
Should you try it?
If you know nothing about HTML or CSS and want to learn, I give Web Fundamentals my full recommendation. Knowing where to start is a major hurdle for learning any new skill. Web Fundamentals is a perfect entry point. The track will not make you a master of web design but it will give you all the tools you need to get started.
Codecademy is also free, and signup is painless.
Was this review helpful? Not so much? Let me know in the comments!
Is there another programming method/class/book I should try? Tell me!