Photo by Clay Banks

2020 Goals

January 06, 2020 by ChristianChristian Danielsen

Of the many things I enjoy about being a professional web developer, I think my favorite has to be the strong emphasis on continuous learning. The web is an astonishingly evolving platform, and that evolution is somehow still accelerating. Trying my best to keep up with best practices, language features, new design patterns, tooling, etc. can be exhausting sometimes (lookin’ at you, JavaScript ecosystem!), but I will never, ever be bored or unchallenged in this job.

What other field has the space to allow its practitioners to spend such a large chunk of their time on teaching themselves new skills? When I was a high school teacher, getting approval or funding for attending a small workshop or even scheduling some time to talk with other teachers about the actual craft of teaching was absurdly difficult for a variety of reasons, but mostly because no one had any time to do such things. As a web developer, I’d say easily 40 percent of my time is spent researching and learning. What a time to be alive!

There is, of course, a dark side to this learning smorgasbord. As I hurtle toward middle age, I find myself reflecting with some humbleness on my weaknesses as a professional: behaviors or habits that are probably inhibiting me from making as much progress as I could toward my long term goals. One pattern I’ve noticed consistently is a tendency to become overwhelmed/paralyzed if a task I’m tackling or a problem I’m trying to solve has an abundance of options. I’m very susceptible to The Paradox of Choice. This is an unfortunate weakness as a web developer, and particularly JavaScript, as this abundance of options is everywhere. This classic piece sums this up masterfully, and that was eons ago in 2016!

Fortunately, I’ve also been realizing that this weakness is really based on a false premise: namely, that I’ll somehow make the “wrong” choice in what to focus on. I’ve finally realized that there are no real wrong choices, or at least no absolutely wrong ones (okay, maybe don’t study Flash I guess). Any particular language, framework, tool, etc. is just an implementation variant in solving some underlying root problem, like building a user interface or persisting data. Being able to identify the low-level patterns and commonalities that transcend these choices so that they can be recognized and applied elsewhere is what matters. I could choose to intensively study FORTRAN for some reason, and even though I doubt it would be directly relevant to where I want to go, I’ll bet I would get more out of it than shallowly reading tutorials about more relevant things like Redis.

So with that, I’d like to push myself to change that this year by making some calculated choices about what I want to learn in-depth, and discipline myself to ignore spending precious time on everything else. Here’s the working list:

GraphQL - Writing a really good API seems really difficult these days, and I like the thesis that it’s probably a smell that the way we write and use applications has evolved beyond the current de facto standard (REST). Being able to flexibly and surgically query for data seems really powerful. Make APIs fun again!

New language: Python - While I’ll always be a JS fanboy, I’d like to become reasonably proficient with another scripting language. Python seems incredibly popular in many contexts, and I’d like to learn the basics / maybe implement a flask server as a project.

TypeScript - I’ve been skeptical for years, but I admit I’m intrigued by how much people love this superset of JavaScript. It seems like Microsoft nailed it with this incremental (insidious? =) approach to adding an explicit type system to a language that famously eschews them. Plus, Ryan Dahl is on board, and he’s a fucking genius.

Data Structures / Algorithms - As I find myself more interested in the backend side of web development, I definitely find myself bumping up against my lack of formal training in computer science. I’m not sure how far I’ll get with this one, but I’d like to at least learn some basics in this category that I can build on continuously.

That seems like plenty (maybe too ambitious!). If I can make progress on 3/4 of those things by 2021, I’ll call it a successful year.

©2019 Christian Danielsen. All Rights Reserved.