Skill building as a dev

There’s a fair amount of angst about how much there is to learn in web development (and often front-end dev specifically).1 As someone who wrote her first HTML 25 years ago, I get it. It’s a lot, and it keeps growing. Which is why, especially when hiring devs, I care way more about how you learn than what you currently know. If you don’t have a flexible and strategic learning system, I recommend building and refining one. This post outlines what I currently do, including some shared resources and templates, so you can use or adapt this technique yourself.

This post is not a list of skills to learn to become a front-end developer in 2021 (there’s lots of content about this already) or really even how to learn things (for that, see Ayu Adiati’s series on efficient learning). Instead, it’s about grappling with what to learn when you feel overwhelmed by all there is to learn. This technique has served me in a variety of situations—learning totally new-to-me frameworks, as well as advancing existing skills. Additionally, while I’m writing here about tech skills, I will also admit that this has proven just as useful in my hobbies (e.g., drawing with ink, weaving). Finally, the ranking system described below also helps me accept that I don’t actually need to learn all the things; not all skills or knowledge are equally valuable to me, personally or professionally. Having a system to establish that is immensely helpful in conquering any growing sense of anxiety about all there is to learn.

Step one

Start with a brain dump of skills. This can be a typed list, written by hand or using a brainstorm/mindmapping tool. At this point, the goal is just to generate the list and not do a lot of curating or refinement. Additionally, I recommend include skills you already have; it’s very grounding to acknowledge you already know things and these skills will provide some helpful references/ideas in later steps.

🤔 Getting stuck? Are there skills you’ve seen listed in job descriptions that have made you feel inadequate? Add it to the list. Is there an online course or workshop you want to take—or have signed up for and never completed? Definitely add it to the list. Is there a project on your team you’d like to get involved in, but you lack experience with part of the stack? Add it to the list. Also, keep in mind, this list isn’t one and done; you’ll definitely be adding to it over time.

Step two

At this point, it’s helpful to go digital and put all the skills in a format that you’ll later be able to easily filter and sort. I use Airtable, but a spreadsheet would work, too. After adding each of the skills in its own row, add two new columns:

  • Status/Level. How well do you currently know this thing? I keep things simple here, opting for three rankings: New to me, Some knowledge, Strong knowledge. For the purposes of the rest of this guide, I’m going to refer specifically to the rankings I use. You may want to word these differently, but I encourage you to keep this as simple as is useful. For example, I don’t think it’s helpful to rank in percentages; that feels like too much granularity for no real clear benefit.
  • Evidence. In this column, I describe how I can or will prove that I know a thing. If you struggle with this, it may be helpful to first answer for the skills you’ve ranked yourself as having “strong knowledge” of. How can you demonstrate that knowledge to yourself and others?

After both columns are filled in, I recommend reviewing the list with fresh eyes. It’s entirely possible, having now considered how you can demonstrate knowledge, that you may have ranked your current knowledge too low. Or, perhaps you find yourself thinking, “I know X really well except for this specific bit” (e.g., “I’m confident with my React skills, but need to dive deeper into Redux” or “I’m pretty good at writing accessible markup, but could have stronger skills at using NVDA’s screen reader software”). That’s a good sign that you should break those skills apart, both acknowledging more fully your current skill in the first thing and making it more obvious where you should spend your time growing skills.

💡 Getting stuck? Remember to keep your statuses as simple as is useful; you should be able to easily say, “Yeah, I know this a bit” or “I’ve really only read a post about this thing, I definitely haven’t learned it.” If your statuses are still pretty simple and you’re struggling, maybe the thing you’re trying to evaluate is too big (e.g., all of JavaScript vs something specific like the filter function).

Step three

Up to this point, you’ve been working with the full list of skills, including those you already are pretty competent in. Now it’s time to drill in to any of the skills you’ve ranked as “New to me” or “Some knowledge.” Add four more columns and fill those in for this subset of skills:

  • Motivation. Why do you want to learn this thing? Be specific about how and why this knowledge or skill will help you.
  • Impact/Value. Using a high, medium, low ranking, estimate the impact to you of learning this thing.
  • Resources. What will help you learn this thing and get to the point you described in evidence? This is a great place to either directly link to books or tutorials or point to existing lists of resources you may use on your path to gaining this skill. If you don’t have such links, that’s okay! You’ll find them when you’re ready to pursue this thing; don’t go down the rabbit hole of trying to find all the courses/tutorials in this one go.
  • Effort. Again with the high, medium or low ranking, but now estimating the effort needed to learn this specific thing. For this ranking, you should consider both the time (e.g., 10 hours of video) as well as the complexity (i.e., how different is this from other things you’ve learned).

👉🏻 Getting stuck? If you’re stuck on your motivation, maybe it’s a sign to move the topic to something more like an “idle curiosity” list or straight up delete it. Don’t push through this, as it’s counterproductive to have your list cluttered up with things you’re not actually motivated to pursue. Also, don’t get stuck overanalyzing your rankings; this is a living document and you’ll be able to reevaluate.

Using this list

At this point, your list is set and ready to use. Using the list is a matter of sorting and filtering to determine what to work on next and maintaining and updating the list.

What to work on next

Before deciding your next learning journey, I recommend that you take a breath and assess your current bandwidth. Be real about what’s already taking up your attention and effort, otherwise you’re not setting yourself up for success. If you have a bazillion projects in the air, some personal stress and an upcoming trip…now is not the time to start a high effort learning task. Look for something that’s high value, but low effort. On the other hand, if you have a strong appetite for learning right now, sort your list by things that are high value and high effort.

Maintaining your list

In general, I add to my list on an ongoing basis. If a GraphQL project comes up at work, onto the list that goes. If I read a post about Web Components and want to experiment, it gets added to the list. For these individual additions, I fill out the whole row for each item in one go (in comparison to the step-by-step process described above). I find it’s especially helpful to capture my motivation in that moment, as that may later impact whether or not the skill is still relevant to learn.

Every two or three months, I revisit the whole list from top to bottom. I pay special attention to these columns:

  • Status/Level. If I’ve been using the skill, it may be time to re-evaluate my ranking.
  • Impact/Value. Depending on what I’m working on or see coming on the horizon, this rating may be adjusted (e.g., if that GraphQL project evaporated, I’ll drop the rating for that skill).
  • Effort. Even if I haven’t made progress on this specific skill, sometimes the work I’ve put in on other areas can effect this ranking. Or maybe someone has recently launched a workshop for a skill that I previously lacked a solid resource for; this could make it feel more within my reach.

This review also makes it clear why it’s worthwhile to keep skills currently rated as low value in your list; that ranking is not set in stone and can change based on your needs.

Finally, if you find your list is a bit unwieldy even after sorting and filtering, consider these options:

  • Adding categories for your skills. In my example, these would be very broad, like tech skills vs crafty skills, just enough categorization so I can see like with like.
  • Adding a checkbox column for the skills you’re currently focusing on, those you’re actively taking a class on or building in some other way. This helps elevate them above all others and also makes it clear if you’re putting too much on your plate (i.e., it’s probably not realistic to learn five new things at once).

Template and example

If this system seems useful to you, I’ve created a shared Airtable template.

The Airtable has two tables:

  • Template. This is a blank version of the system for you to use.
  • Example. This is the template but filled in with some example data (see above). I’ve added some comments to my data and this table also lets you see how the filtering and sorting works.

22