DEV Community

Cover image for My Web Development Study Plan For 2021
Eddy Vinck
Eddy Vinck

Posted on • Edited on • Originally published at eddyvinck.com

My Web Development Study Plan For 2021

This article was originally posted on my personal website. You can subscribe to my newsletter here.


As 2020 is coming to an end, I have been reflecting on how much I have learned this year.

For many, including me, it has been a rather difficult year. Unsurprisingly, this has had an impact on what I have been able to learn or build.

Looking towards 2021 with the intention of further improving myself as a developer I have written a list of things I want to study.

Learning

I have many things I want to learn. The things I want to learn generally fall into the following categories:

  • Fundamentals and getting better at things I already know and use
  • Promising tools and concepts that I've been keepign an eye on
  • Things that will allow me to create things I cannot create with my current skillset

Disclaimer: This list is ambitious. Especially since I will be moving into my own house next year. It's unlikely I will be able to do all of it, and that's okay.

Back to basics

The fundamentals of the web, JavaScript and programming will always be relevant. I find that even as someone who has been coding for about 5 years that I still benefit from going back to the basics.

These are the fundamentals that I want to study (again)

  1. Event loop
  2. Design patterns
  3. Prototypes and classes
  4. Regular functions vs. arrow functions
  5. Learn more about how web pages are rendered
  6. Promises and async / await
  7. How the internet works (generally)

Refreshers

It's good to know the tools you use. I want to brush up on things that I use frequently or want to start using more.

These are the things I want to brush up on

  1. Go through all the ReactJS documentation again
  2. Setting up GraphQL servers
  3. Unit testing with React Testing Library
  4. End to end testing with Cypress
  5. Chrome devtools - what's new that I'm not using yet?
  6. TypeScript

Going outside of my comfort zone

Up until this year I have mostly been "just" a frontend developer. In an effort to go outside of my comfort zone I have been venturing into the backend, but only slightly.

I want to get more familiar with backend in 2021.

  1. Authentication with JWT (JSON Web Tokens)
  2. API Gateways
  3. Restful APIs (I have mostly done GraphQL at this point)
  4. PostgresQL with Sequelize
  5. Server logging best practices beyond console.log
  6. Docker and Docker Compose
  7. Get more familiar with Postman (or Insomnia which is a free alternative)
  8. Authentication library like PassportJS

Serverless and JAMstack

Serverless and JAMstack are things that aren't going away anytime soon. I have some general knowledge about it, but I haven't really taken the time yet to dive deeper into these concepts and build something with it. Now that this way of building has matured I think it's time to give it a fair shot.

  1. NextJS: it's a framework for React that is designed to work great for JAMstack projects. I'll probably be taking Wes Bos' Advanced React course when he updates it since I already purchased it.
  2. A headless CMS like KeystoneJS, Strapi or similar. Probably one of the cheaper ones since some are really expensive.
  3. AWS Lambda and other Amazon services that might come in handy.
  4. Something with a database. Not sure what yet.

There are also things in frontend that I want to check out but haven't yet.

These are my frontend picks:

  1. TailwindCSS
  2. XState: a state management library
  3. React Hook Form
  4. Styled System: a helper library for Styled Components, which I already use
  5. Design systems

Courses

I have a Frontend Masters subscription and I will be using it of course.

These are the courses I want to check out next year:

  1. JavaScript Hard Parts v2
  2. JavaScript Recent Parts
  3. JavaScript New Hard Parts
  4. Production Grade TypeScript
  5. Production Ready NextJS
  6. Intro to Containers

Maybe I'll also take a look at the Computer Science Learning Path.

If I can get through the courses above I will also be checking out some of the serverless / JAMstack courses on there.

Additional things to learn

These are things related to my field, but not particularly to my role. These are just things that interest me generally.

  1. How to write good content
  2. Search Engine Optimization (SEO)

Doing

Learning is very important, but to truly learn you must also do.

I would like to start a larger side project in 2021. I'm not sure what it is going to be yet.

I'd like to have a project that has either a proper backend that I can use to learn more about backend or a serverless setup. Or maybe I will build something serverless, but have a serverless application that works together with some sort of backend I can build.

A busy year ahead

In 2020 I definitely overworked myself a couple times to a point where I needed a longer break. I'd love to avoid that in 2021.

Not that taking breaks is a bad thing, but ideally I should not overwork myself to the point where I don't want to do any coding outside of work for a couple of months. I'd like to be more consistent with programming throughout the year.

With that in mind, I don't think I will be able do all the things in this list.

I will be moving into my own house and learn a lot of things related to that, so I'll also have less time to work on web development outside of work.

I can always move things to 2022 if I don't get to them in 2021.

Happy holidays!


This article was originally posted on my personal website. You can subscribe to my newsletter here.

Top comments (22)

Collapse
 
moumnimohamed profile image
moumni mohamed

Eat healthier and workout, don't forget πŸ˜‚

Collapse
 
eddyvinck profile image
Eddy Vinck

Haha every year that is the plan πŸ˜‚πŸ˜‚

Collapse
 
jacobmgevans profile image
Jacob Evans

Hey! Welcome to DEV community! 😁

Collapse
 
eecolor profile image
EECOLOR

Great to see your plans for learning!

Event loop

It's very good to learn about the details! This video helped me a lot: youtube.com/watch?v=cCOL7MC4Pl0

Practically for regular web development it can be reduced to two rules:

  1. Never write to the DOM outside of an animation frame
  2. Only write to the DOM in an animation frame

This comment explains it in a bit more detail:

/*
  The general rule is:
  - do not read from the DOM inside of an animation frame
  - do not write to the DOM outside of an animation frame

  The reason for this is that reads from the DOM could cause a trigger of expensive layout
  calculations. This is because the browser will ensure that the values you read are actually
  correct. The expensive calculation will only be triggered if the related values are actually
  changed since the last paint.

  So to ensure we never have this problem, we ensure the writes (changing values) to be in the
  part of the frame that is executed right before the layout / paint. Reads should never be done
  from inside of an animation frame; you never know what other animation frames have been requested
  and have performed writes already.

  This shows the effect of calling `requestAnimationFrame` at different positions:

  | non animation frame | animation frame | layout / paint | non animation frame | animation frame |
  |         1->         |    ->1 2->      | -------------- |                     |       ->2       |

  Calling `requestAnimationFrame` from a non animation frame causes the code to be executed in the
  same frame, but at the end of the frame, right before layout / paint.

  Calling `requestAnimationFrame` from an animation frame casues the code the be executed at the
  end of the next frame.
*/
Enter fullscreen mode Exit fullscreen mode

array.reduce

Another great challenge that helps with learning is the following: "implement all Array methods using array.reduce"

Collapse
 
eddyvinck profile image
Eddy Vinck

Thanks! I've already watched that video sometime, I agree it's great! This one is also really good youtu.be/8aGhZQkoFbQ

Collapse
 
dhruvgarg79 profile image
Dhruv garg

what are your suggestions for, "How to write good content"?

I sometimes write some articles and don't post some of them because I don't like them or it seems like there is already enough content on it.

Collapse
 
eddyvinck profile image
Eddy Vinck

I don't really know, that's why it's on my list πŸ˜…

Collapse
 
dhruvgarg79 profile image
Dhruv garg • Edited

right πŸ˜‚πŸ˜…

Collapse
 
afsharm profile image
Afshar

I recommend adding algorithms to your list. It's on mine. I know it falls in the basic part, but it is necessary in two ways. Firstly, it helps you write better code. Secondly, most interviews start with algorithm challenges.

Collapse
 
fang_dev profile image
Fang🦁

I know this is way back when, but in case anyone finds this article the OP mentions the Computer Science path from Frontend Masters which is sufficient as an intro to algorithms, especially for interviewing. Even covering some of the more complex ones not used in interviews but useful on-the-job. You only need to supplement with practice on the algorithms/data structures taught (Leetcode or neetcode.io).

Collapse
 
lexiebkm profile image
Alexander B.K.
  • Back to basics :
    number 3, 6, 7 (HTTP deeply)

  • Refreshers :
    number 1 is a regular activity, while number 6 is necessary
    for learning Angular and Nest.Js

  • Going outside of my comfort zone :
    number 1, 3, and 8 (but OAuth in general, not only in JS domain)

Collapse
 
lexiebkm profile image
Alexander B.K.

Seeing that now I have sufficient time to learn things, I want to update my plan
according to the things mentioned in this fine article.

Back To Basics :

Number 1,3,6
The main reason is I am not a single full-stack developer anymore.
That means it is likely that I will be working in a team where codes will be reviewed by others.
I would add Closure, some methods like Call, Apply that relates to the this operator.

Refreshers :

Number 1: ReactJS documentation

  • Context, Render Props, HOC for Class Components
  • Hooks : I have just resumed my learning on this after long suspension, started yesterday Well, after reading fundamental topics in State and Effect Hooks, I think I will still like class components that have been working quite nicely in my last project. I will use Hooks only whenever I think they are suitable for those similar cases which are explained in the doc.

Number 3 and 4: Unit Testing and E2E with Cypress
Well, due to lack of time, I ignored all things about testing during my development of my last project which was also my 1st real project, except end to end (E2E) testing.
I only did E2E in my own way, not according to any standard or popular ways.
Now that I will have time, my mind is also on testing; when reading topic on testing in React doc, I find the tools for testing like you mentioned, including Jest which is supported by React by default when using Create-React-App.

Number 6 Typescript
Like I said elsewhere, this is necessary, because I have just got started with Angular a couple days ago, in more serious way. My mind is towards large scale/enterprise apps, in which according to experienced developers, Angular is more suitable.
I think I am starting to like the way, the paradigm, the approach Angular takes in building a SPA.
For me, having skills in both frameworks/libs will be useful as well as satisfying, like driving both automatic and manual transmittion cars.

Going outside of my comfort zone

Number 3 REST APIs :
This is always on my mind, as I haven't had used it in a real project. All of the backend code for routing in my last project using Laravel were done by my own way.
Now, even as for using Laravel itself, I need to do it in a correct way, according to best practices.

Number 4 Sequelize :
In this case, I will apply it for MySQL

Beyond those mentioned in the article for this backend section, I will explore the following things :

  1. Node.Js :
    Read thoroughly about fundamental concepts. Maybe I will try some APIs like filesystems, buffers, etc

  2. Continue learning Express, esp Middleware and writting a CRUD database app

  3. Resume exploring NestJs to see whether it will be the framework of choice among all available Node.js frameworks
    I am not really fond of NextJs for serverside rendering; it is NestJs that I am looking for. Both have similar names : Next and Nest, but serve for different purposes.

After all these things are covered, I plan to get started with Microservices. Prior to it, I want to resume my learning on Software Architecture.
Uh... actually I still have interest in mobile dev using React Native, Flutter or Java.
That's why Java is still always on my mind, not only for Android, but also for enterprise app. And .Net Core with C# are also very interesting. Not to mention Python, especially for AI, Machine Learning.

Well, sorry for lengthy response.

Collapse
 
lexiebkm profile image
Alexander B.K.

No mention for picking and learning Node.js frameworks or even Node.js its self ?
I myself currently use PHP for backend, so I still need to learn Apache and Nginx, esp their complex configuration to handle concurrent users.
As for React dev, we know for bundling it usually uses Webpack, although there are others like Parcel. Create-React-App tools handles webpack configuration for us. But when we are forced to config Webpack ourselves, we have to learn it.
I am interested to learn and use Nest.js (not Next.js) for backend. But to integrate React frontend with Nest.js for a standalone app seems to require enough skill in Webpack.

Collapse
 
dthompsondev profile image
Danny Thompson

Great stuff Eddy! Love it!

Collapse
 
eddyvinck profile image
Eddy Vinck

Thanks Danny! Appreciate you checking it out

Collapse
 
ytrkptl profile image
Yatrik Patel

I loved reading this.

Collapse
 
eddyvinck profile image
Eddy Vinck

Thank you!

Collapse
 
janguianof profile image
Jaime Anguiano

really nice plan!

Collapse
 
eddyvinck profile image
Eddy Vinck

Thanks Jaime! Glad you like it