Select Page

Being a novice again

15 Apr 2023

I’m a perpetual learner. I mentioned in a previous post that I’m not new to taking on challenges and seeking out new learning opportunities. I love learning new things! I’ve dabbled in learning languages (Spanish, Arabic, Japanese, German) over the years as well as various crafty hobbies (crocheting, knitting, jewelry-making, painting, etc). And one important and sometimes uncomfortable aspect of learning how to do something new is being vulnerable. It’s uncomfortable when you make mistakes and it’s hard to feel like you’re making real progress sometimes. So, I wanted to reflect on what being a novice means in relation to my coding journey so far.

Screenshot of My Library App

There’s so much you don’t know you don’t know

When you learn something new, you don’t know what you don’t know. There are things that you just aren’t aware of until you encounter them or learn about them. For example, back in the fall, when I was maybe a few weeks into my bootcamp, we were talking about looping through arrays. You know, accessing different types of data in arrays, the different methods that are available in JavaScript, that sort of thing. 

I was trying to solve the following coding challenge, and I was having a hard time working out possible solutions. One way to address the challenge was to use higher order functions, .map() specifically, but I wasn’t aware that you could include the index as a parameter with .map(). I spent an hour or so trying to figure out how I could use .map() to deal with this challenge, but I wasn’t getting anywhere. I left the challenge unfinished until our class meeting the next day, and during that meeting, I learned that you can use the index as a parameter.

Use the map function to create an array with values 
"true" or "false"
that indicate if the number
in that position is equal to the position

in the array (starting at 0)

Test case: [1,3,2,2,4,13,8,6,8,10,4,12,12]
to [false, false, true, false, true, false, false,
false, true, false, false, false, true]

My solution:
const moreNumbers = [1, 3, 2, 2, 4, 13,
8, 6, 8, 10, 4, 12, 12];
// const moreNumbers = [0, 1, 2, 3, 4, 7,
13, 8, 6, 8, 10, 4, 12, 12];

const areInPosition = moreNumbers.map((num, index) =>
{return num === index; });

console.log(areInPosition);

I encounter this type of realization, that there’s basically an infinity of knowledge about coding that I have no idea even exists, just about every day. But, I’ve sort of grown to expect the feeling. It’s impossible to know EVERYTHING. Even if I code for the rest of my life, there will always be new (and old) things that I don’t know about. And that has to be ok. Being a novice is difficult in this way, though, because you’re constantly bombarded with the fact that there’s so much you don’t know.

While this is the case for me as a junior developer, it’s also true that I have learned a lot in the time that I have been pursuing coding as a new career. I started learning about coding 193 days ago, that’s about 6 months. And if you asked me anything about the basics of JavaScript or even HTML at that point, I wouldn’t have been able to tell you much. What’s an array? 🤷‍♀️

And that’s how learning is, right? It’s incremental and happens over time. It takes time to build. Kind of like building with blocks, you add new pieces to your understanding and eventually, you have something that is bigger than any one individual block. So now I know how to work with JavaScript in basic ways, but I also know how to put pieces together on a larger scale to solve problems and build whole full-stack apps. Are the apps I make at this point awesome? I think so! But, they are still simple and could probably be optimized in a lot of ways. The point is, learning takes time, and I’ve come a long way. In six more months, hopefully, I’ll look back at what I’m doing now and realize how much I’ve learned.

Being proficient

Getting to the point of being proficient at something new, though, isn’t only the product of information transfer or confidence. It it takes time. And patience. And a willingness to make mistakes and be a novice again.

These are the things that are uncomfortable sometimes, I think. It’s hard accepting that you don’t quite have the right skills to do something you’re trying to do yet. I’ll bring it back to learning a language. It’s often difficult and frustrating for adult learners to be novices in a new language. For many reasons, I’m sure, but one reason I’ve noticed in my students and myself is that it’s hard to want to express something but not have the language to do it yet. You can only talk about your daily routine for so long!

This relates to my experience coding, I think, because the same kind of feeling has been with me throughout the journey so far. I dream of making a really cool app only to realize that what’s needed to build the app is just beyond my understanding and skill level.

This type of thing, wanting to do something just beyond your current skill level, can also be a driver of learning. In language acquisition, there’s a hypothesis that learning happens when you meet the current level of the learner and then add one level of difficulty more. I think this type of learning is motivating for me because little by little I’m pushing my understanding forward.

Errors as opportunities

But I want to know all of the things right now! Unfortunately, that’s not how learning works. As I build projects and practice what I’m learning, and push my understanding forward, I’m able to do more with the code. Things that were impossible when I started are easy now. But there are always new things to add to my toolbelt. And I’ll continue to make simple mistakes. That’s ok. That’s how learning works.

The feeling of rendering code only to find a bunch of errors is something that I’m learning to live with. I’m striving to see these errors as a part of the building and learning process rather than mistakes or problems. Each error is an opportunity to solidify my understanding and push my knowledge forward. I’m learning that coding isn’t about building something perfectly the first time. It’s more about working through the challenges that pop up along the way to make the code as functional as possible within a given timeframe.

Crystal Rose-Wainstock

Let’s connect!