Developers January 24, 2020

Indie hackers who are learning web dev, how do you take your notes?

Kevin Conti @Kevcon80

When learning development, it's most common for us to learn via a combination of videos, tutorials, and online courses. But how do you record what you are learning? What have you found to be effective so that, months later, you still remember the concepts and syntax?

Or, have you not found a great solution, and would be curious to hear what others think? Post that here too!

  1. 15

    I concur with @Alchemist's point. Don't take notes. Instead, put your knowledge to use. Go out and actually build real stuff. Start and finish as many simple projects as you can.

    The beauty of building stuff is it forces you to use the most practical knowledge the most. There are things you learn that you'll do 1000x per project, or 1x per project, or 1x every 10th project. If you focus on building, you'll memorize the most common and crucial stuff pretty quickly.

    As for the less commonly-used stuff that you forget, just look it up! Seriously, learn to Google to find that information. Googling is an essential tool in every programmer's belt, and you need to practice it to get better at it.

    Lastly, writing things down is just going to slow down your learning experience. Instead of learning, you'll be writing, which is not learning. Plus you'll be stressed worried about memorizing stuff, which is silly, because you can just look it up, or commit it to memory by doing rather than reading. Plus you'll probably waste time writing down a lot of stuff that's not important because it gets used so rarely.

    You don't learn programming by reading --> memorizing. You learn programming by doing, which should be supported by looking things up hundreds of times a day. The only reason to read or watch tutorials is to look up what you don't know how to do, or to familiarize yourself with new concepts upfront so later you know what it is you should be Googling for.

    1. 3

      I agree with this sentiment.

      Also, by writing simple programs, you are in a sense taking notes. I have a folder of little projects on my desktop that I've built, and I know that I can look back at "that one that accepts Stripe payments", or "that one I build with Next.JS" (and so on) should I need to re-utilize those skills in the future.

      Bonus points for writing super good comments in your code as you build those little projects. I over-comment my demo projects so future-me won't have such a hard time picking them back up.

    2. 1

      I definitely agree with this, I think applied learning is an absolute requirement in learning a new language, framework, etc.

      I've personally been frustrated with the best way to 'lock in' my learning from a course. For example, I did a course on the Phoenix framework recently. Here's how I went about it:

      1. Follow along with a high-quality course (two courses actually)
      2. Take notes on the unique syntax and concepts (a functional framework, so a lot there is new!)
      3. Implemented the challenge problems at the end of each module
      4. Tried to implement my knowledge in a personal project

      What I found was that there was a lot that I just hadn't retained from the course. The sample challenges at the end of each module didn't feel hand-holding at the time, but when I was on my own I didn't know which way was up. Going back to my notes was simply a copy-paste, they didn't seem valuable like I had hoped. And worst of all, I wasn't understanding why errors were happening, as I didn't have enough of a conceptual understanding of the framework.

      I'm curious to find the bright spots here - people who feel like they easily lock in the learning and never feel frustrated by having spent the time/money on a course, only to forget some or all of what they have learned. What @kwiromeo has mentioned in his comment sounds very interesting!

      1. 2

        Interesting. I don't take many online courses, so I don't have a great answer. I do read a lot of books, and I find that my retention isn't great. I'll forget 95% of what I read in a book within a few weeks or months.

        I used to feel bad about it, but this article from Paul Graham made me feel a lot better: http://paulgraham.com/know.html. It completely reframed my thinking as to what I was accomplishing by reading.

        I'm not sure, but it's possible that it might make you feel better, too.

        1. 1

          Interesting. I don't take many online courses, so I don't have a great answer.

          This is surprising to me! When you were building IH, did you already have a strong knowledge of the technologies that you ended up using? If not, how did you go about learning them?

          http://paulgraham.com/know.html

          Thanks for the link, to be honest I both agree and disagree with it. A recent example is with the book Obviously Awesome. I originally read it, and it completely changed my perspective on positioning. I finally understood what positioning actually meant, how it was different than marketing, etc. However, in that book the author mentions a 10-step process for deciding your positioning. Now that I'm actively working on a project, I had to re-read the entire book to re-learn it!

          So PG is correct, having just read the book once did in fact change my brain. However, that's not to say that the specifics that have been lost are unimportant. And, in my opinion, it would be a worthy challenge to try to increase the amount of important specifics I'm able to keep after I've put the book down.

          1. 1

            I'm a big fan of project- or action-based learning. (I don't think there's an official name for it. Those are just the words I used to describe it.)

            It works like this: (1) Try to accomplish something that you actually care about. If you succeed, yay. (2) If you're failing, figure out why. Is it because there's some specific knowledge you need to look up, or because you need a broader overview of all the options? (3) Go look up the specific knowledge or read something broad to give you more of an overview.

            So I will, for example, dive into something like Firebase or Ember, by actually attempting to build a website. I might peruse the guides to give me a broad overview. Then I relentlessly refer back to the guides and API references hundreds of times to look up specific knowledge that I need to accomplish the tasks in front of me. This works well for memorization, because I end up looking up the most common tasks the most often.

            I think the same is true of general reading. Reading Obviously Awesome gave you a broad overview of what was out there. And now that you know what's out there, you know what parts of the book (or even other books or Google searches) to look back on as references when you're trying to accomplish specific tasks. And that's exactly what you're doing.

            I personally think this is far superior than trying to memorize everything while first getting that broad overview. For one, that's inefficient. How could one know which parts are worth memorizing and which aren't? That knowledge comes from being action-driven, and letting real-world tasks dictate what you look up and re-read repeatedly. Second, it's unnecessarily hard. It's not a school exam. We can always open up the books and look for the answers. So we might as well.

            1. 1

              Thanks for taking the time to respond to this Courtland! This is a really well-written comment, and what you're saying makes sense

      2. 1

        If you were speaking of my screencasts being one of those two "courses" you did, I'd love to chat!

        I'm working on building out some gamification features that will probably lead to the "challenges" I give at the end of each of the earlier episodes becoming a first-class feature of the site and feedback will definitely influence it!

        As for Anki, I've used it for well over a decade and even contributed to it in the early days. I'm a big fan of SRS but I'd be very careful about using it outside of its wheelhouse. I even made a whole podcast about it, and the tldr; is "SRS is great for remembering disconnected facts but a bad choice for memorizing more structured information"

        1. 2

          I do agree with @alchemist, SRS does have its limit. I strictly use it for remembering syntax. As far as for knowing, I agree with @csallen that nothing beats doing the thing.
          One method that I used in my electrical engineering days to learn concepts is the Feynman technique (https://www.youtube.com/watch?v=FrNqSLPaZLc&t=4s)

        2. 1

          Ah, not yours it seems :) My previous job gave me a free Pluralsight account, which had two interactive Phoenix courses.

          Here's a link to one of them: https://www.pluralsight.com/courses/code-school-on-fire-with-phoenix

          I'll keep you in mind when I inevitably need to revisit the topic!

          Completely unrelated question: How long do you think until LiveView is production ready? Very excited about the potential there.

          1. 1

            Woah... that one wasn't even on my radar!

            I get a lot of students who come in struggling a bit after a popular Udemy course (which is pretty out of date and made by someone who wasn't really an Elixir dev), and a lot who are further along after the fantastic course by Dave Thomas, but pluralsight didn't even come up in my research.

            How long do you think until LiveView is production ready? Very excited about the potential there.

            Several of my subscribers have been using it in production for months. I will be too before the month is over! My current free series I'm working on is that app.

            1. 2

              I think pluralsight tends to be enterprise subscriptions, so you may not be directly competing with them!

              Several of my subscribers have been using it in production for months. I will be too before the month is over! My current free series I'm working on is that app.

              I'll keep an eye out for this!

  2. 3

    If your goal is to learn then, I'd focus on using instead of recording. If you just do tutorials you'll get a superficial understanding of what you're doing at best. Spending more time recording syntax etc and reviewing it to remember it isn't a great choice IMO.

    On the other hand, if you do a tutorial and then build something else that uses the same concepts you learned from the tutorial, you'll both test what you've learned and learn it much more deeply. You'll also get practice figuring things out as you work towards a goal. Not only that, but you'll have something of your own to show off to others.

    The one exception to this would be writing a blog. That's a great way to help others with what you've learned, get feedback and increase your luck surface area.

    1. 1

      So, to summarize what you've said, the two best ways to lock in your learning is:

      1. Applied learning, and
      2. Teaching it yourself

      Totally agree!

      1. 1

        A good article to read is this https://www.scotthyoung.com/blog/2019/06/07/apprenticeships/ by Scott Young.
        I read his most recent book, and it definitely echoes a lot of the ideas in this conversation.

      2. 1

        😂 I didn't say that at all!

        1. I don't suggest spending a lot of time recording things like language syntax because you will use them in the process of building higher-level skills.

        Consider this analogy: after learning basic arithmetic, one could set aside regular time each week for recording and reviewing the material. This would help cement the memory. But so would just using arithmetic while learning and doing algebra. This cements the memory and increases your capabilities at the same time!

        1. I don't think blogging about programming is the best way to "lock in" your programming learning. Your knowledge will be much better locked in if you spend that time reading and writing code. I do think blogging is still worth it though, because it helps other people and it increases your luck surface area.

        FWIW, I think the best way to really lock in most things is by using a memory palace technique. I just didn't mention that because have no experience trying it on a programming language.

        1. 1

          By "applied learning", I mean exactly what you're saying in your example. I think it's just a terminology difference around it :)

          Noted on #2 though, sorry to put words in your mouth!

          1. 1

            No worries! It's super hard to summarize things down to a single line.

  3. 2

    A few things:

    • when I am trying to understand complex code, I print the page and mark it up with pen and paper. I tend to remember things I write down better.
    • For syntax, I try to use Anki. It's quite a pain to set up, but it's really useful in remember snippets of code (i.e. what are the steps to connect to Sqlite database in Python).

    I was inspired by these posts:

    1. 1

      Can I ask you to elaborate on your use of Anki? How good is the code-snippet support for it, and do you find yourself notably better at locking in your learning for the things you put in Anki vs the things you don't put in there?

      1. 2

        The code snippet support is not smooth. I personally just settle for bold and basic formatting (spaces and '>>' characters), and that gets me by just fine. I do remember things better. Adding cards and remembering to practice does take time, but I do know my way around Sqlite3 on python because of it

  4. 2

    Actually writing the code, a function which demonstrates the concepts, has comments, and is checked into Source Control is good. Often without context it's not difficult to recall.

    1. 1

      How often do you find yourself going through the effort of creating a new repo and writing the code into source control? Do you find yourself often looking through these code snippets?

  5. 2

    Evernote but thinking maybe if switching to Notion

    1. 1

      What are you hoping to get out of Notion that you aren't getting from Evernote?

      1. 2

        Seems more flexible than Evernote and lightweight... More tutorials for NoCode stuff are using it too, so would like to learn it a bit too.

        1. 1

          Notion is pretty comparable to OneNote.

  6. 1

    As I've progressed in my development skills, I've learned to more quickly and easily read code, and use the IDE to access docs, and make sense of it all quickly. Hence, the software and the IDE is my notes. No need for notes. For difficult to remember or infrequent commands, you could try flashcards with an open source tool like ANKI.

    1. 2

      When was the last time you learned a new framework or paradigm? How did you go about learning the material?

      1. 1

        I'm actually learning Flutter / Dart right now. Using a Udemy class by Angela You - awesome instructor who developed it with the Flutter team. https://www.udemy.com/course/flutter-bootcamp-with-dart/ Also, recently read "The First 20 Hours" by Josh Kaufman, and employed his techniques briefly on leveraging flash cards for training myself key concepts, but realized that was unneeded effort, and I just focused on mastering the Android Studio IDE and deciphering Docs, to be able to quickly reference the info I need. I did prefer Anki the most of all the flash card tools he advocated.

  7. 1

    I use a combination of things: most things I want to remember I write down in my notebook, the old fashioned way. I keep a daily notebook where I use the left hand page for tasks to complete, and the right hand page for notes. I date each page which helps me find items if I can roughly remember when I wrote something down. I also save clips of information using Notes in the Mac Ecosystem. Otherwise, if something isn't committed to memory, and I need to relearn the syntax of something specific, I usually just google that specific item and quickly get what I need. I don't think you need to know everything, just know where to look. But I agree with what's been said, the key is to just start coding. I learn by doing, so the more I do, the more I learn. I don't even really write that much down specific to coding.

  8. 1

    I don't take notes. When I want to remember how I did something I go back to the code I wrote that used that concept.

    I basically do just in time learning. I learn a concept then apply it.

    For example I recently learned about CSS so I started applying some incredible basic styles to this incredibly rough draft of an idea - http://appwillgiveyouabs.surge.sh/

  9. 1

    I had a middle school band teacher that used to say, "Practice makes permanent." Life has taught me this is true. 10,000 hours = an expert. Yeah, perhaps, but if you've got 10,000 hours of practice, you're at least likely going to get it. So what if you're not Alan Turing or Linus Torvalds? It doesn't matter. We all have to start from somewhere and we have an equal number of hours in each day. If taking notes works for you, then it works for you. Here's the takeaway from my own experience: Knowledge without application is useless.

Recommended Posts