My 2020 In Review: What I Learned and Accomplished as Senior Front-end Developer
Tags: javascript, webdev, career, react
Published: 2020-12-28 19:15:04

With 2020 coming to an end (finally!) I decided to do a little summary of things I learned during this year.

At first I wanted to point out I would not be able to remember every thing I will list here without a journal. To be more specific, in the place I work in we have quarterly performance reviews and to make it more smooth we maintain a document with list of all our accomplishments and observations. It made creating this post a lot easier and I would recommend it for you.

## January

### I was promoted to Senior Front-end Developer

A very happy start of the year. After more than 2 years working at this company I became a `Senior`. It was preceded by promotion proposal made by my leader and discussion about my accomplishments with management of Frontend Unit.

### I created a tool to automatically export SVG icons from Figma

I open sourced [Figma API Exporter](https://github.com/slawomirkolodziej/figma-api-exporter). A package to export all SVG icons from Figma using JavaScript. The idea about Figma automation started with my project where we implemented [Figmint](https://github.com/tiltshift/figmint) to sync colors and typography styles from Figma to our code on every deployment. We wanted to also include sync our custom icons, but there wasn't any tool available at the time. So I decided to create it.

### I finished [Angular Core](https://frontendmasters.com/courses/angular-core/) course on Frontend Masters

Frontend Masters is still my favourite platform for learning. They say it's good to keep your friends close but enemies closer so I decided to learn more about Angular. My key observations are that it works very well with TS and has strong opinions about the project structure. When Angular developer switches projects the chances are he will feel familiar as opposed to React where everything is a wild west.

The interesting part of this course was also introduction of [nrwl/nx](https://github.com/nrwl/nx). It's a tool to manage monorepos. It made me thing about using monorepos more in React projects.

The downside of Angular for me was its flexibility. I remember when I wanted to create a modal in Angular and I spend too much time looking for suitable solution. Maybe it's my lack of experience in Angular, but I appreciate React ecosystem more for creating a very dev friendly components.

## February

### I finished [Testing JavaScript](https://testingjavascript.com/) course by Kent C.Dodds

I was already familiar with Kent C. Dodds from Frontend Masters, but this course is a very good introduction into the world of JavaScript/React testing. The most interesting for me were solutions for mocking modules in Jest and working with external libraries in tests. Kent presented very well thought solutions in form of short screencasts (there is a lot of them).

### I've read [The Unicorn Project by Gene Kim](https://www.goodreads.com/book/show/44333183-the-unicorn-project)

I think it was the only work related book I fully enjoyed reading (besides The Phoenix Project). Gene tells a story from his other book, The Phoenix Project, but this time from a point of view of developer. It gave me a motivation to look for improvements in my daily life at work and question the rules if they make no sense.

## March

### I co-created a template for Create React App

At this time new version of CRA was published with a feature called [Custom Templates](https://create-react-app.dev/docs/custom-templates/). It allows to customize the default project structure and dependencies of new Create React App project. I created it within a team at work to configure Prettier, ESLint, Commitizen and custom deployment scripts for all new React projects in a company. I turned out to be very successful, allowing developers to deploy their first applications to AWS in 10-15 minutes.

### I finished [Complete Intro to Containers](https://frontendmasters.com/courses/complete-intro-containers/) and [Full Stack for Front-End Engineers](https://frontendmasters.com/courses/fullstack-v2/) on Frontend Masters

I wanted to move more into Fullstack role at the time so I decided to pick up those 2 courses.

**Complete Intro to Containers** starts with setting up containers by hand using `chown` command and moves to everything you should know about Docker. I knew how to set up Docker before but this course for sure gave me full information to work with it comfortably.

On the other hand **Full Stack for Front-End Engineers** talks more about setting up your own server and tons of other thing you didn't know about web development if you only focused on Frontend development. Definitely a good introduction to so many good topics you might want to explore more yourself.

## April

### I finally started using React hooks at work!

When I started working in this project it was React 0.14, but in April we finally migrated it to React 16.8+. It was a year and 2 months after the stable version of hooks was published. I had a chance to learn them before, but didn't put too much attention because I couldn't use them at work. 

## May

### I finished [Advanced Distributed Systems Design Course](https://learn.particular.net/courses/adsd-online) by Udi Dahan

Although it now costs $2500 😵  it was available for free for some time. I took this course as a part of learning more about backend stuff. Udi is a great and engaging teacher. He was giving a lot of example how distributed systems could be used in practice, ex. in booking systems. The great value of this course was also the fact it was recorded with very experienced participants, who attended this workshop live.

## June

### I finished [Go for JavaScript Developers](https://frontendmasters.com/courses/go-for-js-devs/) course on Frontend Masters

I already knew some basics from languages like Ruby, PHP, Python, Java, but Go was entirely new to me. What I liked the most about Go was that it is strongly typed language. If I figured out the types then I was almost sure the program would run correctly, I had a similar experience with Haskell. The other nice thing was the ability to explicitly pass variables by value or reference.

## July

### I started doing [Gophercises](https://gophercises.com/) - exercises to learn Go

I think these are one of the best exercises for learning new language I've seen. I expected building a dummy REST API, but it ended up building a quiz, choose your own adventure game and url shortener. There is a total of 20 video tutorials with introduction and a complete solution.

If I would want to invest more time into Go I would definitely buy other paid courses from the same author.

## August

### I took a long vacation!

## September

### I worked with [React Admin](https://github.com/marmelab/react-admin)

I started working in a new project in my job and had a chance to see React Admin in use for the first time. I knew about it before but I wasn't aware how great it is. It's definitely not for everyone, I would use it if I wouldn't care about the visuals and more custom features. It helped us create an admin panel in a very short time.

## October

### I started working as a Node.js developer in a project

The project I joined in September had a backend written in Node.js and I saw it as an opportunity to work more on backend. The app was built with Nest.js. I started with simple changes to the REST API we needed on frontend and progressed with more advanced stuff. The most interesting feature I've built was generating PDFs.

### I started my [developer blog](https://slawkolodziej.com)

It all started with signing up for [BloggingForDevs](https://bloggingfordevs.com/) newsletter, which inspired me to start my own blog. I create one post a week and posted it on [dev.to](https://dev.to/slawomirkolodziej) with a link to my original blog. Most of the traffic came from this source, but after few weeks it started gaining organic traffic from Google. For my blog I used Gatsby and a theme I didn't modified. My goal was focus on content first and then take care of technical stuff. I didn't wanted to build my blog from scratch for few weeks and have no content 😃 .

## November

### I started working on an internal course about testing React components

I took one day a week to work entirely on this project. I wrote several chapters about testing components, mocking API calls, working with libraries like Redux and React Router and more. It was definitely the biggest project outside of programming I've ever made. It wasn't launched yet but I expect it to help many people and introduce better testing practices.

## December

### I redesigned my blog with [Tailwind CSS](https://tailwindcss.com/)

You can love or hate Tailwind. For me it made it possible to do the redesign very quickly, I think it was only a couple of hours. The best think about it is that the final effect just looks good, you don't have to put too much time into the details. [Tailwind typography plugin](https://tailwindcss.com/docs/typography-plugin) works great with content generated by Gatsby. Also I didn't have to write a single line of CSS! I think I will create a separate post about good and bad parts of Tailwind I learned during the redesign.

---

I'm regularly publishing my insights on web development. 
Consider [subscribing to my newsletter](https://slawkolodziej.com/newsletter).
Visit my blog at [slawkolodziej.com](https://slawkolodziej.com) to find out more interesting content.
Follow me on [Twitter](https://twitter.com/slawkolodziej).