Blog entry by Howard Bates
Attempting to raise coding skills from high-intermediate to high
When I migrated my Introduction to Programming classes from Perl to Node.js, I had a slightly moderate learning curve.
I also moved my AP CompSci classes away from Java to Modern Web Development. I had dabbled in web development back in the 90's and stopped about the time frames were a thing. But now..... HOLY COW! Modern web dev is HUGE. A few things were immediately apparent about the current state of affairs:
I don't have an opinion on the hot-mess state of affairs, but I did need to distill out what I felt was important to learn.
This is the list I came up with:
Everything on the above list is what I would consider foundational, imperative knowledge. But wait, there's more. Everything on the next
list is important too, but it starts to become more difficult and opinionated:
* A solid understanding of http requests, responses, request types, mime types, and valid response codes * A solid understanding of functional programming (first class functions, pure functions, IIFEs, closures, function expressions vs. function declarations) * A solid understanding of Ajax & JSON with stringify & parse * Writing a pure Node.js web server with no frameworks, including routing & mime type handling * A templating engine. I chose EJS for it's simplicity * File I/O with Ajax, CSV, & databases (I chose NeDB for Mongo-like syntax at a millionth of the overhead) * Progressive web app methodology (https, manifest.json, service worker, & favicons) * Firebase * Heroku
As I began my learning journey, I had many obstacles. The main one was my OCD personality. When I code, I prefer to do it using industry best-practice standards. Learning modern web development using the web is not very conducive to this because of all the bad or outdated material out there. Just filtering the web content is a major chore and it was one that I tried my best to shield my students from by curating the best of the best and linking what I found on our LMS (learning management system).
If I were to rank skill with a particular subject, I would probably do it like this:
I feel that after two years of working my way through the learning process, I am at the high-intermediate plateau. I can read & understand most standard code. I can extemporaneously write a progressive web app & have it hosted on Heroku. I can easily help my students with their coding projects. Where I feel like I'm lacking: Understanding how to implement Oauth2, refined design patterns to optimize my applications, ES6 symbols & promises, and finally, a good eye for UX design.
As I tackle the things I need to work on, I will go back and write these web logs to present the material I've curated for my students in an effort to help the next people that need to dive in from the top.