Public Learning

project-centric learning for becoming a software engineer

Week minus 4: Off To A Good Start

The (unexpected) first decision I made was to not finish the 230 course of Launch School. It had only partly to do with the course itself which was as excellent as I expected. I initially wasn’t super stoked about working with the browser API’s, but learning about how to use the DOM, do network requests etc. was fun enough. The second part of the course dives rather heavily into jQuery, though, and I feel like making a deep dive into a library that has lost its importance for newer projects (which can easily use ES6 features to achieve almost the same result) is not the best way to spend my limited time.

Instead, I decided to start working on my understanding of certain JavaScript topics I’m still a bit shaky with. I decided to start with asynchronous programming, especially how it has evolved from a callback-driven approach to the new Promise API and which problems that solved. Changing from the material-led Core Curriculum of Launch School to a completely self-driven approach was not as hard as I thought it would be. Espeically for JavaScript, there are tons of great resources available. I decided to continue relying on Kyle Simpson’s excellent You don’t know JS book series (that is available for free on GitHub). Accompanying that, I subscribed to Frontendmasters to be able to watch Simpson’s video courses. Rethinking Asynchronous JavaScript closely follows the first part of the Async & Performance book and adds a few helpful exercises as well as some additional bits and pieces of information. Especially the consideration of thunks as containers around an expected value (similar to how a Promise works) to remove the time-dependency of nesting callbacks was a surprisingly interesting insight. If you take Simpson’s very opinionated talks with a grain of salt, he’s a good teacher.

Aside from that, I already got my toes wet on a bit more Node.js. Again, Kyle Simpson on Frontendmasters provided a course called Digging into Node.js. It has kind of an awkward mix of topics in it, but fits my current state of knowledge around Node quite well. I was especially interested in his (unfortunately rather short) introduction to Streams which seem to be the preferred alternative to almost any data processing and transfer once things get bigger than a small JSON payload.

For both topics I use my trusted method of creating extensive Markdown notes where I try to put everything I learn into my own words, create code examples etc. Once I get around to organize my stuff for the post-Launch School time, those notes will be available in a repository on my GitHub profile. I have to admit that my method of learning new things is still heavily in flux. Yes, even after roughly two years doing Launch School, I’m still not settled on a trusted set of procedures. I (kind of) wish that I had sticked with doing flash cards for Spaced Repetition, but I never reviewed them enough for it to have the desired effect. I might need to reconsider that once I start to amass more and more knowledge that I can’t immediately put to use.

For JavaScript, it’s easy enough: I love to write code and if I use something once or twice, I generally don’t forget about it, or can at least quickly get back up to speed. Well, writing about my learning processes will be one part of these notes, so expect more on this topic in future posts.

Also, with December arriving, another year of Advent of Code is upon us! I’m not going to lie, I love this little programming competition. In 2018, me and two other Launch School students started out solving these daily problems and we found them to be hard. Earlier this year, we tried solving the Advent of Code exercises from the year 2016 and I found it way easier. Having spent time on algorithms and data structures in the meantime has definitely paid off, and - when applying the PEDAC process taught in Launch School - finding the correct solution never took too long. The great thing about Advent of Code is that it is such a fun mix of exercises, well-presented with bits and pieces of a Christmas story, and they often have a nice twist for the second exercise part: you might find yourself with a rather inelegant brute force algorithm for part 1, but realize that for part 2 this solution is not going to cut it, so you will have to optimize.

Alas, since I still hold my full-time job this December, I might not have enough time to follow the exercises from day to day. But I’m going to try and do as many as I can. They’re a good way to get some JavaScript fluency and I’m just going to treat it as such. My solutions can be found in a separate GitHub repository.