Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I’ve a few different approaches I take depending on the task (and if I’m honest, my mood or levels of motivation):

- a new programming language, especially something closer to a systems language, I have a standard set of things I’ll try to implement. Read/write a file. Turn a structured object into JSON, parse JSON to an object. Basic script that can be run from CLI, parses flags/args, reads stdin. Send a HTTP request. Implement the most basic web server. An embarrassing amount of my career has been just building on those fundamentals in various ways. So if I can get those under my belt with a new language it becomes feasible to make an informed decision on whether I might incorporate it into my day-to-day vs just leave it languish as a hobby on the side. - read read read until I find something that just doesn’t make sense. I mean in not just a “I’m a bit confused” but a more “I don’t understand how this even works. It violates my very understanding of how the world is meant to work”. That happens surprisingly quickly in fields I’ve absolutely no idea about. And then I just focus on understanding how that one particular thing could be true. I’ll often find it forces me to correct some previously held incorrect assumptions, which may have blocked my ability to learn more productively because of the subconscious second guessing and the baby steps not matching my world view. - I write notes, and then rewrite them in what is kinda like a blog post to myself. If this is interesting info that I’d like to retain, but am unlikely to be applying regularly or immediately, I’m likely to forget. So I write the post I wish I’d originally found. As brief as possible. In a style that makes sense to me. To try and short cut the time it takes to relearn this topic in the future.



I follow this pattern as well along with one caveat: I refuse to cut and paste code while learning.

I require myself to retype any examples, stack overflows, and so on in the process of learning. Along the way, I get a handle on the patterns of the language. And if I'm learning in an IDE, the autocomplete suggestions start to hint at the other functions within libraries, etc.


Definitely. I feel like I force myself to ask the more fundamental questions relevant I am writing (i.e. why is it this way, alternatives, etc.) than if I were to cut-and-paste. Saw significant differences in learning new languages by forcing myself to do this.

And, my mentality in going through examples has changed. Larger blocks of code shouldn't seen as more of a pain to write, but larger sources of information (usually) for learning.


Yes, I love this suggestion. Building the literal muscle memory of how to write, I dunno, a for loop, is so critical -- it means you don't have to think for even a second about how to use that tool in the future.


This is a wonderful response. Love the notion of reading until something violates your understanding of the world, I’m definitely going to try this. Is there any more satisfying feeling than ingesting a new, worldview-changing idea? I can almost feel my neural pathways being required when it happens.


It's Paiget - cognitive disequilibrium - it's how all learning is achieved - nice article https://teacherlearnstocode.com/2015/03/31/what-to-do-with-d...


Thank you! It’s so great to finally have a label to put on this. Much appreciated.


For me its always a website with access to a database and templating. It is insanely easy in Go to do it by only needing to import Gorm as your only external package. I really wish Rust would adopt a standard library HTTP server OOTB it just makes things so much nicer. People will always use other packages as they need to for example dot net has Sinatra, and Java has Spring and company despite both having JSP / ASP.

I do like your list and I agree, some bits that deal with CLI, web and parsing / making HTTP requests is the gist of what you need. I have debated making a project roadmap on GitHub that you can work on in any language and having a Swagger spec for an API so frontend people can implement multiple frontends and backend people can implement multiple backends.


Ruby has Sinatra, .NET has Nancy (which preceded Microsoft’s WEB API framework IIRC)


Do you have a blog where you write about the stuff you learning or your notes ?:)


I like the programming exercises :) I'll take a page from your book when I start programming in a new language!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: