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.
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 finished 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. 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.
I've read The Unicorn Project by Gene Kim
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.
At this time new version of CRA was published with a feature called 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 and Full Stack for Front-End Engineers 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.
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.
I finished Advanced Distributed Systems Design Course 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.
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.
I started doing Gophercises - 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.
I worked with 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.
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
It all started with signing up for BloggingForDevs newsletter, which inspired me to start my own blog. I create one post a week and posted it on dev.to 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 😃 .
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.
I redesigned my blog with Tailwind CSS
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 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.