←back to thread

Learning to Learn

(kevin.the.li)
320 points jklm | 1 comments | | HN request time: 0.253s | source
Show context
keeptrying ◴[] No.41911188[source]
A big hole in this article is that you need to find the very best learning resource there is. This is a must.

Eg: For RL it would be Barto&Sutton book.

Sometimes the best source is not intuitive. Eg: The best way to become a safe driver is to go to performance drivign school - its a bit expensive but they tell you how to sit and stay alert in a car which I have never seen outside of these schools.

One of my most common things nowadays is to ask ChatGPT is to ask to build a curriculum. Creating and understanding what a great curriculum looks like is 20% of the work of understanding a field.

You can LEARN ANYTHING now if you have the time and inclination and elbow grease. Truly nothing is beyond your grasp - NOTHING. Its a magical time.

I'm actually building a tool that will do all this for you and get you started down the learning path faster than what we have now.

And for the curious - the best way to learn medicine is not a textbook. There are solutions out there like Skethcy which work much better for anatomy.

My own learning project - learn Medicine "on the side". It seems ludcirous that we give up the keys to our health to doctors just so we don't have to learn 2 years of courses. Am going to fix that!

replies(7): >>41911226 #>>41911300 #>>41911448 #>>41911837 #>>41913612 #>>41914030 #>>41916683 #
johnnyanmac ◴[] No.41911837[source]
>you need to find the very best learning resource there is. This is a must.

I think there's a line around "good enough", unless your goal of course is to be on the road to "become the very best". I think the better metric is making sure you have a accurate resource over a quality one. The 15-20 hour "sprint hard" methodology isn't stopping after that first sprint, just slowing down.

So if you find/can now access a better resource later, just start the sprint again on that. I know from experience (in real time, unfortunately) how easily "find the best resource" can end up becoming "spend weeks collecting resources but not consuming them".

replies(2): >>41912327 #>>41916562 #
Arisaka1 ◴[] No.41912327[source]
The other problem is: How do you recognize what is "good enough" if you lack the skills/competence required to be able to say "this is good enough"?

For example, I'm a frontend developer who wants to learn backend. And let's say that I chose C# and .NET for this. I can either do tutorials in Microsoft docs and then reach out to Reddit or some other community for resources, to receive the commonsense advice "just build something", and we're back to zero because now the goal is to build something for learning's sake therefore what is "good enough project" to build to maximize gains?

replies(6): >>41912347 #>>41912406 #>>41912719 #>>41912861 #>>41913853 #>>41917461 #
1. neonsunset ◴[] No.41912406[source]
I understand the struggle but may not be able to offer an exact solution. People usually expect you to just throw something together without structure, but if you don't have preliminary experience with doing anything similar at all, you are stuck with a blank piece of paper and no ideas, and it feels absolutely terrible.

I don't know what works for you, but what worked for me was finding open-source projects in a domain I'm looking to write an application or a library in and using them as a reference. With time, you become able to determine which ones are of high quality and are a good example, and which ones are not. You could also ask Claude/ChatGPT for references to starting point.

On C# specifically, I can recommend looking at https://github.com/bitwarden/server which is more "traditional" style but does not have much nonsense/bloat you would usually see in an enterprise codebase. That's what I always reference as a style and project layout guide for newcomers that don't already know how they want the project to look. And then as you go through the code, you can always dump the snippets into a chatbot and then cross-reference the replies with documentation if needed. Chatbots also great at quickly sketching up project structure - it can be a terrible one but it's easier to do "hey, I don't like this, let's change it to X" than trying to come up with everything from the scratch.

If you already have experience with writing TS-based applications with e.g. React components, base router, etc., you can more or less translate this onto structuring an ASP.NET Core application with controller/api handlers, model classes, services, ORM layer and similar. There really is no true right or wrong singular way of doing it, and people who claim there is are dogmatics from a cargo cult.

In general, a lot of C# code out there that you will encounter will take more steps to solve its task than strictly necessary, as the generational trauma of ungodly horrors of 666-layer "Clean" architecture DDD-done-badly monoliths still haunts many, manifesting in a milder form of "write a small three file microservice as a 40-file three-project solution". It is highly useful to approach new patterns and anything that seems ceremoneous with "is this abstraction strictly required or can this piece be removed and done in a few lines of code or maybe a method?".

On tooling - can strongly recommend using .NET CLI which will be very familiar after using NPM and co.:

Create new projects/solutions with 'dotnet new {template name}' (e.g. console, classlib, sln, gitignore).

Add/remove projects to/from a solution with dotnet sln add/remove

Add dependencies with 'dotnet add package PackageName' or 'dotnet add reference path/to/project' if you want to combine multiple projects.

Run projects with 'dotnet run' (-C release). Hot-reload for most scenarios is possible with 'dotnet watch'. Publish into a final complete application with 'dotnet publish -o {path}'. There are many ways to do the last one, but for simple back-ends doing the default output and then copying it to a "runtime" image in a dockerfile will suffice.