Two months in one blog entry? What happened with March? Well, the whole point of this is for me to learn in public and be forthcoming about the stuff that's not working the way I want it to. More on this later...
Learning really took up a lot of space this month, as some surprises came up that I had to take advantage of:
I was given the opportunity to audit an Angular workshop that an employer that I didn't quite make the cut for provides, for free in exchange for some feedback. While I concentrate on being strongest in React above all other frameworks, I have the most prod experience in Angular, and I don't want to let those skills rust too much. This workshop did a much better job of getting devs unfamiliar with Angular up to speed than any other resource I've come across, and I learned a few new things about how to approach architecture in Angular.
Max Schwarzmuller has a new Next.js course on Udemy. I know, it's Udemy, but I feel the need to go through every major resource I can for key technologies in my bag of tricks, which Next.js definitely is. This was helpful to me specifically in terms of getting a lot more comfortable with the Next.js data-fetching hooks like
getStaticPropsand API routes.
Developer Josh Comeau briefly opened up a pre-sale for beta access (drafts of the first 4 out of 9 eventual modules, to be fully released in the fall) for his CSS for JS Developers course. On the strength of those first four modules alone, I'm calling it now: this is going to be the best CSS course that money can buy. I've learned tricks that it would have taken me years of trial and error to stumble over in production, and I have a much deeper understanding of how the various parts of the box model, layout, z-index, Flexbox, etc, work.
As a rule, I try not to get dinged on a subject in an interview more than once, and one question I wasn't at all equipped to explain was "Tell me about the critical rendering path". So I went on a deep dive in April with Clyde Matthew's excellent Web Development Secrets Udemy course, which delves into the CRP, AJAX, HTTP, and other behind-the-scenes aspects of development which aren't talked about much, and I know have a clearer understanding of the CRP, and how to optimize applications for it.
Hall of Champions: I modified this application but converting some independent application state to derived state with the help of an original-Redux-like implementation of
useReducer, which resulted in potential savings of tens of thousands of unnecessary DOM elements per page. The performance improvements from this change were rendered somewhat moot by a refactor that replaced a
selectinput with a
numberinput, saving even more tens of thousands of unnecessary elements on the first paint. More below about my next steps for this app!
Police Data Trust (name change likely later on): I've made some small open-source contributions via Code For Boston before, but this is the first opportunity I've had to contribute to something from the beginning, and while front-end work hasn't commenced at the time of this writing, it's given me some useful practice with team development and preparing complex applications for deployment.
While trying to figure out how to implement a dynamic grid in react-virtual, I noticed an omission/clarification in the docs regarding one of the
useVirtualproperties, so that was an easy win PR!
The Elements of User Experience: One of the OG User Experience books, this one is a good grounding in UX basic ideas.
Effective TypeScript: My favorite types of learning resources are the ones that take the time to spell out "When you have multiple approaches to solving a problem within this paradigm, here are the strengths and weaknesses of those approaches", and Effective TypeScript is a wonderfully opinionated guide to making use of TypeScript in the wild. This should be on every TS dev's bookshelf!
Learning HTTP/2: A Practical Guide for Beginners: This was a surprisingly engaging (and mercifully short) read about what should be a much drier topic, this book serves as a good crash course for HTTP noobs that will give you a clear mental model as to what the latest version of the protocol improved over its predecessor, and how to approach utilizing and analyzing it.
I wrote blog posts on overlearning in general and how much HTML you need to be job ready in March. The HTML post is the first in a series that addresses specifically targeting the minimum effective dose of knowledge for certain technologies, so I'm happy to have that one out there.
I set several goals for March in my last blog entry: So how did I do with these?
Writing integration and E2E tests for Hall of Champions: I started this, but immediately ran into difficulties with integration testing for an application that's using both Next and Apollo: there are some outstanding performance issues with that app I need to knock out first, but I don't want to kick this can too far down the road.
Read and take notes on Effective TypeScript: I did both of those things, and I feel a lot more confident in my ability to use TypeScript in the wild as a result of the work I've been putting in.
Have UX/UI notes on my Metal Detector blog, and possibly some tests in Storybook: Lol, nope! Though I did update the codebase to Gatsby 3, and I'll be able to get some more work done on this very soon. I build a color palette for this, so yay?
Start studying for AWS Certified Solutions Architect Exam: So, yes-ish? What I actually did was start studying for the AWS Certified Cloud Practioner exam, which I should be ready to ace within the next week or so. While this one isn't a major developer certification, I agree with the take that you should start here if you're newer to AWS since it will provide you with a good overview of the AWS ecosystem, and what tool to reach for to use on 'X' problem. The tricky thing about this is that studying for this certification is a huge time suck, and can take a lot of oxygen out of the room while you're working on other things.
I did a little better in March than I did in February, and a little better in April than in March, but the kind of progress I want to see at the moment should be reflected in a resume (and/or in the web presence of projects) that looks at least slightly better than it did the month before. While I'm moving in the right direction there, I want to see bigger results month to month, since my biggest disadvantage as a developer is that my online body of work doesn't reflect my actual level of capability, and that's the biggest issue that needs addressing. I'm seeing learning (read: I'm studying a topic and taking notes on it or blogging about it, but not incorporating it in anything I'm currently building) as taking up WAY more time than I'd like it to, so I'm going to curtail the only acceptable learning for the time being to:
Concepts I don't understand to the depth I need to, especially for writing about the Front-End Development Roadmap.
Any new CSS For JS Developers modules that get released: This should be a slow trickle until August or September of the remaining 4 modules Josh hasn't completed yet.
MAYBE Moon Highway's GraphQL Workshop, when it's released? This is going to depend on the price and what exactly's in there, but it looks promising?
Implementing windowing for Hall of Champions: Performance for the one big page load is NOT QUITE there, but implementing windowing via react-virtual should do the trick. I had some trouble wrapping my head around grids, but the trick seems to be converting the data to a shape that matches the virtual rows and columns (so, nested arrays). I can't find detailed examples of implementing this, so this should make an excellent blog post when I'm done!
Complete freeCodeCamp's Data Visualization certification: I need to switch gears, and I've been chasing this white whale for a while, only for it to be deprioritized since D3 doesn't come up as much as other things in job requirements, so I'll be glad to complete this. The good news is that I have 2 of the 5 projects in the can and one mostly finished in the last week, so things are looking good to have this done with no problem.
Explore unfamiliar corners of the React API: For May, I'd like to walk away with a deeper understanding of lifecycle in React, and the corners of the API that I haven't spent a lot of time with, such as
Write as I go: This is one of the reasons this post was such a slog is because I didn't add items as I completed them, but did them all at once. I'm changing that this month!
Thanks for reading about my journey so far this spring, I'm hoping to have a lot of exciting things to report in May!