TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

I Wrote Down Everything I Learned While Programming for a Month

169 pointsby stockkidover 7 years ago

16 comments

lwerdnaover 7 years ago
Here&#x27;s a poor man&#x27;s version of dnote in my .bashrc. It&#x27;s the only thing I&#x27;ve used consistently:<p><pre><code> notes() { local fpath=$HOME&#x2F;notes.md if [ &quot;$1&quot; == &quot;gvim&quot; ]; then gvim + $fpath elif [ &quot;$1&quot; == &quot;vim&quot; ]; then gvim + $fpath elif [ &quot;$1&quot; == &quot;date&quot; ]; then echo &#x27;&#x27; &gt;&gt; $fpath echo &#x27;# &#x27;`date +&quot;%m-%d-%Y-%T&quot;` &gt;&gt; $fpath echo &#x27;---------------------&#x27; &gt;&gt; $fpath elif [ &quot;$1&quot; == &quot;&quot; ]; then less +G $fpath else echo &#x27;&#x27; &gt;&gt; $fpath echo $@ &gt;&gt; $fpath fi } </code></pre> Insert the current date with `notes date`. Store a note with `notes the earth is about 25k miles around` or `notes dentist appointment Thursday` or `notes purfunctory - carried out with a minimum of effort or reflection #vocab`. Look up recent notes with `notes` or read&#x2F;search the entire notes database with `notes vim`.
评论 #16358960 未加载
评论 #16360288 未加载
评论 #16360863 未加载
yathernover 7 years ago
Interesting study - I think it&#x27;s a great idea! Though I disagree with the statement &#x27;we do not actually learn much&#x27;.<p>Most learning is very hard to condense into a short note. For example, &quot;Booleans have a toString method in JS&quot; is a tiny factoid that, yes, is something that can be learned. But I think it is only a minor fraction of what is actually learned.<p>An tennis player may write down what they learn in a month, trying to get better at the game. But ultimately, much of the learning comes from understanding abstract patterns and building up a portfolio of experiences to draw reference to in real-time.<p>It&#x27;s the same way with programming - if I work on a game, and use some engine - yes, I&#x27;ll learn the API to that engine, and maybe some extra factoids about C# I didn&#x27;t know. But the learning that does me the most good is the more abstract stuff - intuition about how to structure larger projects - how and when to start focusing on performance, rather than features. Stuff that doesn&#x27;t really boil down to a one liner, and you may not even realized you learned until after the fact.
评论 #16364406 未加载
评论 #16362841 未加载
评论 #16365095 未加载
评论 #16363669 未加载
Syzygiesover 7 years ago
I kept a list of bugs one month in the 1980&#x27;s. I figured this way I&#x27;d never make the same mistake twice. I found the sheet of paper years later. Last entry:<p>Forgot to eat. Got sick.
henrik_wover 7 years ago
I wrote down everything I learnt from 13 years of solving tricky bugs (194 entries in the file). A very useful and interesting habit that I&#x27;m still following.<p>I distilled the most important lessons here:<p><a href="https:&#x2F;&#x2F;henrikwarne.com&#x2F;2016&#x2F;06&#x2F;16&#x2F;18-lessons-from-13-years-of-tricky-bugs&#x2F;" rel="nofollow">https:&#x2F;&#x2F;henrikwarne.com&#x2F;2016&#x2F;06&#x2F;16&#x2F;18-lessons-from-13-years-...</a>
评论 #16361049 未加载
swaggyBoatswainover 7 years ago
The approach the author used here is similar to using flashcard apps like anki, except not as well fleshed out.<p>Normally, in a flashcard app, you would write down a question and an answer. So you can review the question, and see if you can answer it or not. He wrote this down all as a oneliner for each of his &quot;learnings&quot;. Its nice to see a frequency graph to see how often you are learning, but it doesn&#x27;t really serve a purpose besides showing how inconsistent you are learning new things.<p>I would highly suggest anyone interested in the authors approach to learning to read these 2 articles about spaced-repetition-learning and flashcards, which goes into much more detail.<p><a href="https:&#x2F;&#x2F;www.jackkinsella.ie&#x2F;articles&#x2F;janki-method" rel="nofollow">https:&#x2F;&#x2F;www.jackkinsella.ie&#x2F;articles&#x2F;janki-method</a>.<p><a href="https:&#x2F;&#x2F;www.supermemo.com&#x2F;en&#x2F;articles&#x2F;20rules" rel="nofollow">https:&#x2F;&#x2F;www.supermemo.com&#x2F;en&#x2F;articles&#x2F;20rules</a><p>Not all things benefit equally from writing things down learned &#x2F; flashcards. Some things can only be learned through practice, such as learning a sport you aren&#x27;t familiar with such as football. But flashcards can be beneficial here to learn about the rules of football, the mechanics, terminology, etc.<p>The hardest part is differentiating what pieces of information benefit from using flashcards and which don&#x27;t, and consistently recognizing when new information is learned &#x2F; making a flashcard for it
评论 #16359406 未加载
评论 #16360413 未加载
stockkidover 7 years ago
I wanted to measure how much I was really learning while programming. So I wrote down notes every time I learned something for an entire month in January.<p>The result revealed that we do not actually learn much and that we have misconception about &#x27;learning.&#x27;
评论 #16358727 未加载
评论 #16358783 未加载
评论 #16358886 未加载
评论 #16363154 未加载
Erwinover 7 years ago
I&#x27;ve recently switched from a giant append-only text file which I&#x27;ve been using for 18 years, to using TiddlyWiki -- a personal wiki. Each journal entry (or any wiki page within it) can be tagged and you can view pages across tags, so the ideas is to tag the journal with topics and then later transfer it to some learning article about that specific topic (or any part of my past life in general).<p>I&#x27;ve found that I constantly scan HN etc. for new articles, may read them through and it gets weakly stored in some kind of background memory, but it doesn&#x27;t really make me form a sufficient opinion on the subject. 15 years ago information was scarce (C&#x2F;C++ user&#x27;s journal only came out once a month!) or expensive (E.g. O&#x27;Reilly books), or questionable (Usenet groups). Nowadays there&#x27;s just a constant stream of interesting things happening.
TeMPOraLover 7 years ago
I did something similar over last year at work. I put a section called &quot;Insight from today&quot; in the default template I use(d) for everyday work notes, in which I wanted - hoped - to put something new I&#x27;ve learned.<p>Turned out, I&#x27;m not learning new things too much at my $dayjob (or my attitude is wrong). Ultimately, I was disappointed, but it made me reconsider just how much I&#x27;m <i>really</i> implicitly learning - turns out that more often than not, those are irrelevant minutiae instead of more fundamental facts. I favor more explicit, focused learning now.<p>Most notes were obviously about code (Java, JavaFX), some about my mental state while coding. Some more interesting ones:<p>-<p>There are some serious reasons[0] for Java not to have Pair&lt;K,V&gt; or Tuple classes in its standard libraries. They mostly boil down to avoiding people using Pairs as cons cells to avoid creating classes that would properly name and give meaning to what is being composed and why.<p>-<p>TabPane in JavaFX has a division-by-zero exception in the arrow keys handler when you have 0 tabs in the pane. Note, modulo op (%) can cause division by zero too. Obviously.<p>-<p>Storing trees (hierarchical data) in a database -- closure tables. Explanation: [1], HN thread: [2].<p>-<p>Thread.setDefaultUncaughtExceptionHandler FTW.<p>-<p>Switch-case has lexical scoping on the entire switch block. Example:<p><pre><code> switch(something) { case foo: String abc = &quot;xyz&quot;; break; case bar: &#x2F;&#x2F;String abc = &quot;uvw&quot;; &#x2F;&#x2F;wrong - abc already exists; it&#x27;s scoped for the entire switch &#x2F;&#x2F;System.out.println(abc); &#x2F;&#x2F;wrong - though abc exists, it won&#x27;t be initialized in this case block } </code></pre> For per-case scoping, we need explicit blocks.<p>Nice trick question for an interview, lol.<p>-<p>Stress is bad.<p>--<p>[0] - <a href="http:&#x2F;&#x2F;stackoverflow.com&#x2F;questions&#x2F;24328679&#x2F;does-java-se-8-have-pairs-or-tuples" rel="nofollow">http:&#x2F;&#x2F;stackoverflow.com&#x2F;questions&#x2F;24328679&#x2F;does-java-se-8-h...</a><p>[1] - <a href="http:&#x2F;&#x2F;www.slideshare.net&#x2F;billkarwin&#x2F;models-for-hierarchical-data" rel="nofollow">http:&#x2F;&#x2F;www.slideshare.net&#x2F;billkarwin&#x2F;models-for-hierarchical...</a>.<p>[2] - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=13127938" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=13127938</a>
评论 #16359187 未加载
lukewritesover 7 years ago
When I started my current position (my first as a developer), I was given a company notebook that I use as a learning log. For each PR I write a bullet point or two of things I learned&#x2F;mistakes I made in creating the PR.<p>I go through it every so often to look for patterns, and use them to focus my learning. It helps avoid repeating mistakes, and makes my professional development much more directed&#x2F;intentional.<p>I prefer keeping the learning log in a notebook than on the computer, as looking for patterns requires me to review everything I&#x27;ve written. I&#x27;ve found that unexpected connections pop out at me when I do that.
infomofoover 7 years ago
I&#x27;ve been doing something similar using jrnl. I use hashtags so I could theoretically look up stuff in the past.<p>I.e.<p>&gt; jrnl &quot;@vim type _:noh_ to remove the last search&#x27;s highlighting&quot;<p>And then a week later when I can&#x27;t remember, I could use<p>&gt; jrnl -n 10 -and @vim
评论 #16360180 未加载
JoshMnemover 7 years ago
Looks great. I would try it if I didn&#x27;t already use Org Mode capture templates. In Emacs you can hit `C-c c` and then choose a template (`n` for &quot;note template&quot; in my system). Then write your note in the box that appears (with Vim keybindings available if Evil is installed). `C-c C-q` to add tags, then `C-c C-c` to save and close the note. Each capture template files the notes away in locations and formats that you designate with short lisp snippets. I have 12 different capture templates for various kinds of information that I want to save.
cloverichover 7 years ago
Personally I&#x27;ve found in multiple fields its often harder to quantify, categorize, and explicitly memorize things than it is to just learn them. Usually the most important items are semi abstract (how to organize, when to optimize) or just keep coming up so frequently, you don&#x27;t really need to plan around it. The repetition that comes from regular work cements a _ton_ of knowledge you don&#x27;t even realize you are picking up -- its just part of the job. I do take regular notes (on a notes app I&#x27;ll finish one day, <a href="https:&#x2F;&#x2F;www.striatum.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.striatum.io&#x2F;</a>) but I use them more for reference, reflection, and to just off-load my mind when I have too many thoughts floating about.
PaulRobinsonover 7 years ago
I am a fan of being able to take notes, log your own behaviour (and track time) and do other things off the command line. I like the approach.<p>Pedagogically speaking, I&#x27;m curious if this will actually help. It seems to me that note taking and review is definitely an important part of learning, but I&#x27;ve found that writing out in long-hand and being able to draw diagrams helps considerably. None of it useful without regular review, and application too. I&#x27;d be curious to hear other people&#x27;s thoughts on this approach from a retention&#x2F;review perspective.
评论 #16359903 未加载
Azareusover 7 years ago
I wrote something[1] for taking notes while programming in particular, and it&#x27;s been incredibly helpful. I use a script to roll up a week&#x27;s worth of notes and review them, and filter &quot;the good parts&quot; into my personal wiki and Anki to review.<p>[1]: <a href="https:&#x2F;&#x2F;github.com&#x2F;Az4reus&#x2F;logrs" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;Az4reus&#x2F;logrs</a>
mangatmodiover 7 years ago
Starting doing same. Learned a lot, as when you write -&gt; you read to plug the gaps. Plus these notes help me to revise my work. Also share toy codes on Github to experiment.
solarizedover 7 years ago
I usually use mediaWiki for doing things like this. Thanks for remind me to start the notes again.