Fear of Forgetting

I did the javascript course first and once I finished that, I knew I had to do the HTML and CSS course too. JavaScript and programming is what I really enjoy. I know that for sure. And so the more I’ve been going through CSS and HTML, the more I have this nagging feeling that everything I learned in javascript isn’t being put to use and I’m slowly forgetting it. I felt really sharp with javascript after being put through all of the challenges and completing them. And I’m afraid of that sharpness going away. What should I be doing to retain all of this information? I try to do challenges here and there but it would be insane to regularly go through all of my notes. And the information being added to my memory is only growing. Does anyone have a way of going about maintaining information they’ve learned? I mean my memory isn’t bad but it’s not photographic either.

1 Like

Hello…This is normal to think that we are forgetting the things that we have learnt in past…and it happens with everyone…what I think is that you should make some projects with it…and then you will feel a lot better…This is what I was suggested by other people…and so am I…Good luck for your journey…

3 Likes

I have a terrible memory. I don’t remember most basic syntax, but I have a number of “hacks” to help me “remember”. The easiest and simplest trick is to just plainly don’t try to remember full syntaxes, you want to remember key concepts, this way you can search for the answer later, either in documentation or other means.

You obviously can’t do everything like this, there are some things you will eventually get used to and the best way to get used to it is to use it often. For example, being able to “remove” an item from an array is a common thing that you will probably need todo. There are a number of ways todo this, but odds are you will do this so often you will remember the syntax, or most of it at least.

Other tricks are using better editors that provide better omni-completion reading the documentation for specific syntax’s instead of just remembering everything. I personally use typescript in most of my projects to get omni-completion, and better references thru strong-typing. I don’t have to remember most syntax, since its baked into the language automatically.

Just keep working and using what you need in real-world use cases by building things. You can “train” all you want, but the best way to remember is to do.

Goodluck and keep building :smiley:

8 Likes

I know what you mean. I kept forgetting what I had learned about one subject when I studied another subject. And for me it worked better to keep doing both, but with the focus on the new subject.

Why don’t you take another javascript course elsewhere, just for half an hour a day? On YouTube maybe? That’ll help you to remember what you’ve learned.

And you could check out this free course at Coursera:

It’s written for people like you and me and explains how to learn in online courses so that you do remember what you’ve learned.

6 Likes

Oh! I’ve done this course too. with Barbara Oakley!
It’s an amazing course, I highly recommend it!

2 Likes

Thank you. I believe in doing more than studying too. I’ve never heard of typescript so I wanna check it out!

I’ve seen this course recommended before so it must be pretty good. Thank you for the recommendation and I’ll go through it. Going through a javascript course is a good idea too. I really want to be more sharp on javascript than anything else.

1 Like

@habit456

If javascript is your passion then go for it!

There is lots of work in it. Make sure you know the basics of html/css. You don’t have to know it all.

Check this out:

3 Likes

That article is exactly what I’ve been feeling. Thank you for sharing. That clears a lot of things up that I haven’t been able to put into words.

1 Like

You can practice JavaScript at for example codewars.com , or other websites where you can practice algorithms

2 Likes

Try anki.

I made anki cards of everything that seemed worth remembering during studying, and now I can pretty much recall anything or at least know what they talk about when I see it.

I try to make anki a daily practice

It works (I could land a job thanks to it)

2 Likes

I used anki when learning spanish. It did cross my mind to do that… I think I’ll try it out

yep take a look.

It will not hurt to read this beforehand: http://www.jackkinsella.ie/articles/janki-method-refined

Also, you may take a look at my anki deck if you want, although I really recommend you create your own: https://ankiweb.net/shared/info/299314723

Hi and greetings! I to have that concern about forgetting my knowledge of JS but I use an app called Sololearn (Android/iOS). It’s an app that is made for coders in mind. It provides reinforcement of key concepts of JS along with other programming languages. One of the best features is that it allows you to compete with other fellow coders in real time while on the go. Weather your commuting or waiting online to see a blockbuster movie. I highly recommend it.

Keep on coding and enjoy!

the more I have this nagging feeling that everything I learned in javascript isn’t being put to use and I’m slowly forgetting it. I felt really sharp with javascript after being put through all of the challenges and completing them. And I’m afraid of that sharpness going away. What should I be doing to retain all of this information? I try to do challenges here and there but it would be insane to regularly go through all of my notes. And the information being added to my memory is only growing. Does anyone have a way of going about maintaining information they’ve learned? I mean my memory isn’t bad but it’s not photographic either.

I’ve felt the same way, and I think that try to remember everything is a source of unnecessary stress ( at least for me).

So I gave up on trying to remember, now I focus on the workflow.

My idea is simple, and easy to implement, I think that an example can be good to explain how works:

Let’s think about “best practices”. The most common “best practice” recommended is add a comment to a function. I find a function signature[0] is enough, but you also can add other things:

  • function description (1)

  • parameter name and description (2)

  • what the function returns (3)

  • examples (2)

    If I try to memorize everything above, I need to keep track of at least 8 fields plus boilerplate. You can use a code completion tool that help you with boilerplate, and get something like this:

    /**
     * @description        Function description
     * @param    {Type}    name   - Parameter description 
     * @returns  {Type}   - Return  description 
     *
     * @example   
     *
     * functionName(input) 
     * // => output 
     *
     *
     * functionName(input) 
     * // => output 
     *
     */

And then you can, edit each part of the snippet. But, the thing is, editing a code snippet is an “static” process.

When you edit the snippet, you (have to) think:

  • I will start with the function description. ( and then select the line and edit it)
  • now I will write the parameter type. (and then select the line and edit it)
  • now I will write the example, I will skip the return type … and so on.

You can see, the tool helped to avoid typing, but it doesn’t help with the editing part or the order of the steps (you need to decide the order).

The above is important because, we don’t have an infinite amount of energy and with every decision we expend energy. Editing text is a long series of decisions that had nothing to do with the problem that you are trying to solve (in this case, add a function signature).

A different approach is: Use a tool that keeps track of the fields and boilerplate, and concentrate in solving the problem in an interactive way.

I use Yasnippet[1] and Emacs, I added the “#condition: (string= (car (org-babel-get-src-block-info)) “js”)” part because I write literate documents[2] and that way I don’t have to worry about expand a snippet outside the source (code) block (I wrote it myself, I am currently learning common lisp, so, probably there is a better way to do it).

    # -*- mode: snippet -*-
    # name: sign
    # key: sign
    #condition: (string= (car (org-babel-get-src-block-info)) "js")
    # --
    /**
     * @description    ${1:Function description What the function computes.}
     * @param  {${2:$$(yas-choose-value '("Type" "array" "string" "number" "Object" "callback"  "boolean" ))}}  ${3:name}  - ${4:Parameter description}
     * @returns {${5:Type}}    - ${6:Return    description}
     *
     * @example   
     *
     * ${7:functionName}(${8:input}) 
     * // => ${9:output} 
     *
     *
     * ${7:functionName}(${10:input}) 
     * // => ${11:output}
     *
     */

The code above is a “workflow”, every ${n:} is a step in the workflow.

Demo

URL

https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-algorithm-scripting/convert-celsius-to-fahrenheit/

Description

The algorithm to convert from Celsius to Fahrenheit is the temperature in Celsius times 9/5, plus 32.

You are given a variable celsius representing a temperature in Celsius. Use the variable fahrenheit already defined and assign it the Fahrenheit temperature equivalent to the given Celsius temperature. Use the algorithm mentioned above to help convert the Celsius temperature to Fahrenheit.

Function boilerplate

    function convertToF(celsius) {
      let fahrenheit;
      return fahrenheit;
    }

Examples

convertToF(0) should return a number
convertToF(-30) should return a value of -22
convertToF(-10) should return a value of 14
convertToF(0) should return a value of 32
convertToF(20) should return a value of 68
convertToF(30) should return a value of 86

Workflow demo

img

What is the difference?

If you see the above gif, I didn’t have to edit anything or decide about the order (with Tab I can jump to the next field) . I only have to think about what information I will enter in each field.

And I think that is important, there is no “context switching” between the text edition part and the “what I am describing” part. Adding interactivity to the code snippet has the effect of reducing the overhead.

This is a simple example, but you can create a “workflow” for everything. For example a good workflow for recursion is to have a “base case field” and a “recursive case field” , that way you always are thinking about the problem.

Cheers and happy coding :slight_smile:


Notes:

  • It was not captured by the gif (I have some problems with the program that I use), but I can select from a menu the type of the parameter. Something like this:

https://company-mode.github.io/images/company-elisp.png

  • I think that you can use textmate for this type of things. I never tried, but the Yasnippet documentation says:
    “The snippet syntax is inspired from TextMate’s syntax”

Footnotes:

[0]
“A function signature is a comment that tells the readers of your design how many inputs your function consumes, from which classes they are drawn, and what kind of data it produces.” How to Design Programs, Second Edition

[1] EmacsWiki: Yasnippet

[2] Literate programming - Wikipedia

I feel you on this. Finished the HTML/CSS course and I am delaying starting the project to master the skills I have learned. I would suggest completing the projects and maybe starting your own projects. Repetition and project-based work help with remembering the material.