Coding Grit

A topic has been coming up quite a bit in the last month or so for me. Boiled down to a few lines its something like:

Whats the best way to learn to code? What should I focus on? What should I learn first?

Usually accompanied with mentions of that these people have been doing FreeCodeCamp or Udemy, or some type of course that hits the fundamentals of the language.

How Code Courses (usually) Work

These coding course online are good. They help build the foundation a coder will use to go on to build other things. This is the basis for starting to learn anything new.

Example: You are 4 or 5 years old and barely familiar that numbers are a thing. You’ve been told there are different numbers. So how do you learn math?

DoMath

Well you do some scaffolding. Scaffolding is the temporary structure built next to a building that helps works build up the building in safety. Its always right there, next to it and usually one level higher.

Applied to learning it is guiding the bounds of your learning. Keeps your learning focused and always one step ahead to guide you to build on top of what you just learned.

For instance with math: learn what numbers look like, then their order, count them, add them, subtract them, and so on.

You can’t jump to calculus without all those in between steps because you don’t even really know it exists or is a possibility. You need guidance on the basic parts of math before you can imagine the possibilities.

Coding example with FreeCodeCamp:

You start the lessons on JavaScript. It teaches you about comments first.

Why? Because its going to be putting comments in the code and needs you to know why they are there and not breaking the code. Then it teaches you things like strings and numbers.

Why? Because you need to know those things to understand how variables use them. Then you can build on that with the next step. You're building your scaffolding to support your learning, one step at a time.

The Missing Link 🔗

Scaffolding is important, can’t be skipped in some cases. But it lacks some of the most important pieces to effective learning.

Listen

  1. Attention: Apparently if you want to learn something you have to pay attention. In high school that meant you had to actually look up and hear the words being spoken and process them in your brain. Can't do much of that if you're not paying attention. Its hard to pay attention if something is boring. Why do we think things are boring? Because... 👇
  2. Relevance: Our brains have a hard time caring about things that don't have an application in our own lives. Some people out there are good at overcoming this. Most are not. Remember math class in high school? Someone always said: "What is the point of learning this? I'm never going to use it." Not relevant so I don't care. When you are wading thru all the concepts and theory of coding and only coding snippets here and there, never really putting more than a few lines together, it is hard to see what it could all lead up to. Like learning the letters of the alphabet but not understanding how they can be connected to make words and sentences and books. I will admit doing small code challenges or completing steps in those course can be fun and feel like you're getting really good at that language... BUT then if someone asked you to make something you have no clue on how to get started, where do you do it, how do you save it, where do people see it? You've learned the middle coding part but not all the parts that connect those things into a whole. Eventually you might loose... 👇
  3. Motivation: You can overcome things that may seem boring, or irrelevant if you have a motivation to push thru it. In reality, if you have motivation to do something then those things don't seem bored or irrelevant. So we really just need to keep our motivation going strong. We've all started something being stoked about it and then when things got hard or felt boring we dropped it and moved on to the next interesting thing. This habit isn't a bad one, if those things are meant for entertainment. If you are expecting to make a living then there will be parts of your career that aren't always fun. And even if they are right now doesn't mean they will be forever. You have to stay motivated to work thru those moments of boredom. You can keep motivation up if you have good... 👇
  4. Attitudes & Beliefs: If you don't think you can do something then you won't. Its that simple. You have to believe you can and have the attitude and confidence that you will. No one wants to help someone with a bad attitude, and people with bad attitudes usually don't ask for help anyways. Believe you can, do what you can, iterate on that and you WILL. But I have to admit, don't just be those people that talk to themselves in the mirror saying: > I can do it. I am great. I can achieve my goals. Instead make a plan. Tell yourself the plan. When things are planned then you fear less, you stress less, you know what to do. Have a plan. > I can learn JavaScript because I'm going to do A, B and C. If A doesn't work I'll ask Jared. If B doesn't work I'll try D. I have a plan!

TRUE GRIT These all combine to something called GRIT.

Grit is a term used in the educational system in reference to:

…individuals who demonstrate perseverance to accomplish educational goals in the face of challenges and setbacks. Credit InstructionalDesign.com

Guess what happens when you try and learn something you've never done before? You're going to fail... a lot. Is that bad? Nope. Are you not smart because you failed? Nope. Can you still be successful even though you've made mistakes? Hell yeah!

I personally am okay not knowing everything. I do want to know as much as I can. I do have a hard time not knowing the magic that happens between what I do and the result. But I am not focused on those details until I have to. I personally try and focus on the goal. We'll get back to that in a minute.

A normal developer will not know every array method and coding pattern ever conceived. They don't code from memory. They look things up. That's why the documentation exists (or at least we hope there is some documentation 🤞). I often go look up those array methods to remember some I've forgotten, or to find the best one for the situation. I look up things all the time. Its part of being a professional developer, having to research and read to find the current solution.

If we all just gave up because we didn't know something, or we tried a fix and it caused more errors, no one would ever do this. That's why we do debugging. Its why we have code review and why we make tests and continuous integration tests, and on and on. All to check ourselves because we are all fallible.

Grit is what pushes us thru those hard times to learn from our mistakes and keep trying. We know the journey will have ups and downs and we are okay with that. We enjoy the ride.

If Not A Course Then What❓

Instead of JUST doing courses that run you thru coding concepts (learn letters of the alphabet), project based learning has more application, motivation, attention, relevance, and all that good stuff. It creates longer lasting learning thru experiences you will remember.

The hardest part of learning is that if you don't struggle enough then your brain doesn't think it is worth holding onto. So you forget that spoon fed information.

(I don't need to remember how to spell anymore because there are spell checkers on everything I touch. Too easy so my brain doesn't care to remember how the rules. I before E except some other time... 🤷‍♂️).

Your brain needs to feel the pain of trying to make connections. That pain and time is what triggers the brain to hold on to what is going on. Its obviously important, our brain doesn't waste energy on anything unless it is important. We have to find a way to take learning to code and find that sweet spot of learning brain pains. Not too much or we'll give up. Not too little or we won't remember.

FindMentor

Mentored Projects

What fits that? Mentored projects. I know some coding course try and do projects in them but they lack the individualization. Most want you to make a portfolio site. Sorry but I did those and they were terrible and I never used them. I'm not even especially proud of them since I just kinda followed along with their scaffolding way of teaching me. Too easy, not relevant, and looks like everyone else that traced on the dotted lines of their course.

Mentor-Mentee

Try doing the same thing with a mentor. But keep in mind a mentor is there to guide, like the scaffolding, but only when you need a nudge. Most scaffolding is more like video game race tracks. They keep you on the track no matter how far off you try and go. Its the same thing each time you do it and there is no deviating from the course. Mentors are the opposite of that. You decide what you want to do, where you want to go. The mentor points you in the right direction. Helps you here and there. Gives you advice or clarification when you get stuck. You change your mind and want to go in another direction? The mentor can handle that.

Currently I am helping a cousin learn web dev. We've gotten thru some basic JavaScript and super basic HTML. I gave him a JavaScript project to learn the basics. Just a choose your own adventure game in vanillaJS. Taught a few things about variables, comparisons, if statements, and confirm prompts. Let him figure it out. I gave him nudge here and there on our weekly meetups. Now he is doing a project to build a website, just html and css. He decides how it is designed, but it has to have links, images, text, 3 sections, etc. Gave him the criteria, which we could change, and let him go at it. In one meeting I showed him how to look at the html and css of other websites in the dev tools. Now he can see what others to do and he can try and mimic them. After we get this done we'll add in some vanillaJS to his site and get things interacting well.

See how he decides what he does. He's invested in the goal because it is his. He can't figure something out he can look it up, contact me and I'll tell him where to look it up or we'll meet once a week to pair program some things together.

This trains him to have GRIT. He's on his own during the week. If he is stuck and doesn't want to wait 7 days til the next meetup then he has to look things up. He can contact me and I'll give him things to look up. He has to go thru the brain pain of connecting the dots of this does that, etc. He remembers. He learns.

He could give up, but that's fine. If you can't make a plan and believe you can do something to the point you need someone to hold your hand each step of the way, then either you lack the will power to do it or it just isn't for you. Find your passion.

The-More-You-Know

Conclusion

Scaffold learning is required but gets boring fast. Project based learning is more motivating but if you don't have the grit to continue when you get stuck then it can break you faster. Mentored Projects are the most helpful, applicable and effective way to learn something like coding. It promotes gaining the grit you'll need for a job and life. Its learning last longer. You have more motivation to finish a project. Find a mentor and get started.