Things I don't know at the start of 2019
I recently read an article by Dan Abramov where he listed all of the technologies he wasn't familiar with. Dan is someone I look up to and seeing this kind of honesty from him only added to my respect.
After reading his article I took stock of what I know and where my blind spots are and thought I'd put together a list of my own.
For the record, this is a list of the things I know I don't know. There are so many things I don't know I don't know!
So, without further ado, here is my list.
Typescript - Honestly, I've not even looked at Typescript. The language is taking off right now, but I've just not needed to use it yet.
Big O Notation - I know it's a thing that can describe how complicated an algorithm is for a computer to process. At least, I'm pretty sure that's what it is. However, I don't know the notation or how to work it out.
HTTPS - How do you even set up an SSL manually? If it weren't for Cloudflare and Let's Encrypt, I would be in trouble.
Low-level languages - I've never worked with any low-level languages. Memory allocation and garbage collection sound complicated and I don't need to know it for the work I do right now.
Java - It seems like most people when they are learning to code, learn Java. I didn't learn to code at university or college so I never learnt Java.
Kubernetes - I would love to learn how to use Kubernetes, but every time I try, I get overwhelmed and give up.
Linux - I know basic command line utilities, but setting up a Linux server would be way beyond my skill/comfort level.
Dev-ops - Running a server scares me a little. There is so much that can go wrong. At my current place of work, I make deployments on a regular basis, but I hate touching the server, if something goes wrong, I wouldn't know where to start.
Testing - It's a little shameful to admit, but I've barely written automated tests. It's like exercise. I know it's good for me, but I just can't get the motivation to do it.
SQL - Another slightly embarrassing gap in my knowledge is that my understanding of SQL is very patchy. I work with it regularly, but I never feel like I 100% know what I'm doing. I check the docs a lot!
SVG - SVGs are amazing! I've seen several of Sarah Drasner's creations and tutorials, but when I sit down and try and do something cool with SVGs it ends poorly.
Canvas - Nope!
Angular - I've played around with the first version of Angular, but I've not looked at it since.
Service Workers - I have an irrational fear that adding a service worker to a website and making a mistake would lead to permanently breaking it.
Web components - They may be the new standard for building reusable user interface components, but I know very little about how they work.
AI / Machine Learning - I think machine learning is going to be so important over the coming years and I really need to spend some time learning how to use it.
Animation - I work a lot on front-end development and I bit embarrassed to admit that animation is something I really suck at. I know when an animation looks good or bad, but I struggle to create them myself.
Knowing where your blind spots are is important. If I have to work on a project that needs these skills, I know I'll either need help or some time to study.
So much of being successful as a developer is knowing enough about a subject to know what to search for on google. I don't know everything and that's okay.
Developers are problem solvers and at the end of the day, that is the skill we get paid for. New tools and languages and be picked up pretty quickly so don't worry too much about what you don't know. Instead, focus on using what you do know to solve problems.