A blog about trying to make yourself better at making and designing websites. Also about random shit.

Going beyond the basics

I ran into this question on Dev.to a week or two ago:

I have recently started to study the basics of the html and css language, and soon I will start javascript. I was wondering, beyond the "holy trinity", what does a good front end developer know?

I struggle with this myself. I constantly run into things that are new and cool and are hyped on the Internet so much that it's tough to tell which ones I should be learning.

What should we be learning?

And that's the biggest struggle, I think. We ask ourselves: What should we learn? Of course most of us don't have much time on our hands and we can't just learn everything that's out there. That everything is too big to grasp since new stuff and new content come out every single day.

What works for me is taking a step back (sometimes literally), and thinking of it as a choose-your-own-adventure game. This is where we get a little introspective becase before you can jump in, you need to:

  1. Know your priorities
  2. Be critical of other's opinions (yes, even this blog post 🙊)

This actually reminds me of a budgeting book that I was reading the other week. It's fascinating how you can replace "my money" with "this technology":

The question we need to ask ourselves isn't Can I? or Should I? It's What do I want my money to do for me? Answering this question will help us cope with endless options, pressure to keep up with the Joneses, and the paralyzing fear that we're not being smart with our money.

What do I want my money to do for me? works like a gut check that helps us see whether our priorities are driving our money decisions. When we know what our money to do for us, the options become a lot less daunting, and confidence quickly replaces the stress.

You Need A Budget by Jesse Mecham

Know your priorities

First, you have to know what's important to you right now. No matter how tempting it is, you have to think about it in the context of everything else that's going on in your life:

  • Are you working on a side project? What are the benefits of using this vs that?
  • Are you working for a company? What are the team and business goals?
  • Are you building for a client? What are the requirements of the client?
  • Are you working on an existing project? What technologies does it use?
  • How much time do you have? Can you actually dedicate some time learning all of these things? Can you work with what you already know?

Of course, there is an exception. If you want to learn something just for fun, then by all means learn it! There's no shame in learning something for the sake of learning it. You become a better programmer either way!

Be critical of other's opinions

In a lot of ways, this section is very similar to the one above. You need to be able to ask questions about your priorities before putting any time into it.

People will tell you what you need to learn certain things as soon as possible like React, CSS Grid, git, Emmet, Node.js, or TypeScript. You might feel overwhelemed just seeing the sheer amount of unfamiliar words that are out there but don't forget that you can always pause to think about what's important to you right now.

Homework

Go on Twitter or Reddit or wherever you get your tech news, and make a list of things that you think you should be learning and things that are giving you anxiety. Go though that list and make a plan for each one.

Here's mine:

  • CSS Grid: I'd really like to learn this one, but I can't use it in any of my projects and I'm pretty swamped right now. I'll revisit in a few months.
  • Vue: So many cool things are happening with view, and I'm interested in learning some new JS concepts. I can't use it in any of my projects yet though and right now I'm doing React for GatsbyJS.
  • Animations: There are so many cool demos of animations online especially tutorials like this where people do flawless page transitions. I can't use it right now though. I'd like to revisit this when I have some free time!