Things I don't know in 2018

It's the start to a new year and I can't think of a more perfect time to outline exactly what I don't know. As developers we have a tendency to throw around tech jargon to make us sound smart when we don't actually know what the hell we're talking about. This year I'm not only calling myself out for the things that I don't (and should) know, but also making an attempt to learn these things. Hopefully next year at this time I will be much more well versed in the topics below.

  • Computer science basics - I went to college for Interactive Multimedia, a hybrid of programming and graphic design. While I enjoyed the more created aspect of this major I really missed out on the core computer science courses and basics I should know today.

    • Big O notation - Learned the very basics of this Big O but not something I can speak about confidently
    • Algorithms - Generally just need to learn more about them
    • Data structures - I comfortable with simple structures like stacks and queues, but I would struggle to implement things like trees and linked lists.
  • AWS - I can do simple things like creating an EC2 instance or setting up an S3 bucket but I struggle with the following

    • User authentication/authorization with Cognito
    • Choosing the "right" services to deploy a dynamic website - Fargate, Elastic Beanstalk, AppSync, etc
    • API Gateway
  • Docker - I've used it but don't know off hand how to easily deploy images and launch containers
  • Kubernetes - Manages Docker containers.... thats all I got
  • Microservices - I understand the concept pretty well, but actual implementation for larger projects and gluing all the services together is something I have yet to do.
  • Git - I use it every day but struggle with anything beyond your basic clone, merge, branch, rebase and push commands
  • Flexbox - I use it regularly and have a decent understanding of how to get things done but still find myself googling basic questions
  • DNS - My knowledge stops at ANAMES and CNAMES
  • User authentication - OAuth and JWT.... I've used them but usually spend too much time on the implementation than I should
  • SASS - I used LESS for the longest time which has helped with SASS, but never actually took time to learn it in greater detail
  • Webpack - Plugins and Loaders elude me
  • Unit and functional tests - Seem good in theory but other than writing a couple tests for fun I've never used them in a projection environment. What exactly do I test?
  • Code architecture - This probably goes back to computer science basics but I find myself constantly writing code that is hard to read, even for myself. I've already started the process of trying to improve my code quality by reading up on functional programming and reading Clean Code by Robert C. Martin