I learned how to make websites with basic HTML around 1997, plus some basic CSS not long after. I've been riding that for two decades.
No, that's not true. Sometime in the last decade I started riding Google and the Q&A on Stack Overflow to design websites instead. That's all I need.
That's not quite it either—but it feels like it. After that first wall of new skills to learn was scaled and my first sites created—most of them mercifully lost to history—everything blurred together. That interim period involved learning some PHP, SQL, JavaScript, etc. But for the most part, for my own projects, I rely on good ol' HTML and CSS, albeit sometimes put together with Python and output into a static file. Make it as simple as possible, but no simpler.
In about two weeks I'm going to help with a project that's asking for "full-stack developer" skills. I had always ignored things labeled "full-stack", assuming it was a definition for Very Serious coding people. I looked it up. Full-stack seems to only mean front-end web stuff (HTML, CSS, JavaScript) and back-end web stuff (databases, file storage, HTTP, REST). With the exception of REST, that's a list of things that I've been doing for ages. How long have I been walking past open doors?
So, the point: how do I spend two weeks congealing what I've learned through experience and supplementing the missing parts so I can be a productive member of the team or at least be able to have intelligent conversations and ask intelligent answers?
(Side point: small focused sprints like this are good opportunities to hone a system for learning things. And it's helpful to learn how the things-you-know-how-to-do actually work.)
The first, most obvious step is to steal from other people. I skimmed through the top range of Google results and this was my favorite guide: Daniel Borowski, A Guide to Becoming a Full-Stack Developer in 2017, Coderbyte (2017-04-01). There's a simple definition of what it is, broken down into components with recommendations and links to learn more about each. It's well-organized and I'm not going to improve it. My two-week plan is going to be a stripped-down version of that.
Adjusted list of components to consider:
- HTML
- CSS
- JavaScript (Node.js, ReactJS, AngularJS)
- SQL
- PHP
- HTTP
- REST
I'm good with 1, 2, and 4; 3, 5, and 6 are OK; 7 is shaky. Re-ordering the list for effort:
- Learn: REST
- Brush up: JavaScript, REST, PHP
- Skim: HTML, CSS, SQL
So out of 14 days from 1 to 14 November, considering volume, prior knowledge, and rank of importance (i.e., how much I care to know about the thing later), here's what I'm planning to do. I probably wouldn't make such a big deal about it, but if there's anyone else out there who wants to do some refresher-grade work on web development, you might want to hop on. I'll keep /now updated with what I'm working on now, and organize my notes somewhere on /ref (probably something like /ref/html, that sort of thing, but we'll sort it out later).
- REST - 2 days
- HTTP - 2 days
- JavaScript - 6 days
- SQL - 1 day
- HTML/CSS - 1 day
- PHP - 1 day
"The ashtray, the paddle game, and the remote control, and that's all I need."