Here are some thoughts related to web development based on my personal experience in 2020.
Python is fun, but TypeScript is better
I learned how to write Python code this year because the APIs at work are all in Python. It was easy to learn and fun to write. That being said, whenever I get the chance, I'm going to write my web app APIs and front-ends in TypeScript because the strong type-safety prevents a bunch of bugs. Also, being able to generate type definitions on your front-end based off of your API schema is a huge win.
JetBrains IDEs are amazing
I started out trying to write my Python code in VS Code and then switched over to PyCharm after seeing one of my colleagues use it while pair programming. The debugging and refactoring abilities of the IDE seemed to be unmatched by any other tool out there.
I still use VS Code when writing TypeScript code except when I need to do a big refactor (e.g. changing file/variable names) since VS Code doesn't always handle big refactors nicely and PyCharm/WebStorm have yet to fail me on that point.
GraphQL is great, but so is REST
I've been having a great time working on GraphQL APIs this year since I've been able to quickly get features built with a GraphQL API. However, REST APIs still work fine and React Query is making working with REST APIs cool again.
Move over Gatsby, hello NextJS
I'm a lot more into NextJS instead of Gatsby these days. Gatsby feels more and more heavy to work with and NextJS just keeps on improving with new features and they are working closely with the React core team for better server side functionality. I would turn to NextJS for most apps that can't get away with being a single page app.
I think Gatsby got offended by the above paragraph since I had to clear my gatsby cache in order to preview this blog post and it took close to 3 minutes to get the dev server up and running. Hundreds of image thumbnails needed to be re-generated... My site isn't even that big so I cringe at how long things might take for any other site with a lot of content.
Docker makes deployments easy
At my day job, I've had to get comfortable working with Docker because all our apps are deployed with Kubernetes. I've even written a comprehensive guide about Docker to help me learn more about it and also to use it as a reference for certain commands. I'm happy to have become comfortable with using Docker since it makes things easier when it comes to deploying applications.
Published first serious NPM package
I published my first NPM package for use by other people this year. It's called animated-grid-lines and it is a React component that displays a grid with lines shooting out of a cursor when hovering over it. I built this component for my personal website and decided to publish it separately for others to use. tsdx made setting up the component/package a piece of cake.
CSS in JS has become annoying
I've worked with styled components, emotion, styled system, theme ui, material-ui, and more recently tailwindcss. My head is spinning a bit from having to learn all the different APIs and getting types to work with CSS in JS frameworks can be nightmarish at times. Working with tailwindcss has been fairly nice recently since you really mostly on only class names which you can mostly always figure out using the VS Code autocomplete that comes with the tailwindcss extension.
Favourite tech YouTube channels
Kalle Hallden - Nice videography and interesting tech related topics
Ben Awad - Web dev related videos with some good humour
Hussein Nasser - Back-end related videos on topics such as tcp, nat, pub/sub, etc.
Network Chuck - IT/devops related videos
Favourite tech podcasts
Syntax - Web development podcast
MacBreak Weekly - Nerding out over Apple products/services
Indie Hackers - Stories related to indie hackers
Favourite tech books
Production Ready GraphQL - Immensely helpful in understanding how best to structure GraphQL APIs
Kubernetes In Action - Learn how to work with Kubernetes