Have you changed the way (and what) you learn?

There’s place for both. I just dislike it when I look for recipes and receive lectures. At my physical age and career phase, I am expected to get stuff done quickly, efficiently and up to a high standard. I’ve ingested a lot of concepts and my computer science education is still severely lacking but I don’t care. I simply don’t have the time for it in this phase of my life and career.

I am looking forward to when I catch up with a plan or two and start digging deeper – and slower – again.

It’s a bit discouraging how hard you are trying to put me in that box.

I actually have never struggled reading books. This started happening in the last 2-3 years… hugely ironically it became more and more difficult after I have learned to focus much better and stopped interrupting every single thing I do and started enjoying the deep and focused stretches of activities. Reminder for everyone else reading: I am in my 40s. I only started having trouble focusing on books relatively lately.

The true and core problem however is: a lot of books are simply low quality. I don’t always assume the positive thing (intentions / quality) – that’s myopic. It’s statistically improbable for all (or even most) books to be good. It’s also statistically near-impossible for all books to be written with pure intentions – to educate, to enrich your culture, to make you smarter, to widen your horizons. Many books are cash grabs.

So the curious thing that happened with me is this – as I have started shaking off my ADHD, I spotted that the reason for my ADHD coming into being in the first place… was actually a pretty good reason. Namely: I lost patience for ingesting bad material, but then it spiraled into something worse. The ADHD. That I eventually fought off. And here we are today.

Admittedly I haven’t read a technical book in a while either – so my anecdotal evidence is not valuable and I cannot claim anything at all about the world at large; I am mostly thinking in statistics (as pointed out above: to me it’s statistically improbable for most books to be good). So take my comments with the requisite amount of salt, obviously.

Sharp remark. I agree. But I can’t claim I know too much. I simply got tired of losing focus. I have 5-6 goals in front of me, I want to work on them, not on how to invert a binary tree or how do I construct a sparse index on a spinning drive such that the random access to the index itself is still fast, and other nice problems that I am sure OS and filesystem authors are grappling with but I’ll never ever get paid to solve.

1 Like

On the topic of focus and books, and maybe I am a minority here but…I still prefer physical books because I can focus on the topic better. Being on the computer there is a whole sleuth of distractions, so I prefer not to read digitally.

Unfortunately physical learning books (on computer topics) are on the more expensive side and often require a development environment.

I don’t learn too much with LLMs because after being gaslit far too many times I now always cross-reference what it says, so it’s a bit cumbersome.

2 Likes

For myself, the hardest part of learning something completely new with an LLM is that it’s completely self-directed; you have to know what you want to learn and how to learn it. It’s both a blessing and a curse. For example, learning a new spoken language (like French, Japanese, etc) it requires me to also have the experience of a language teacher who understands more abstractly what are the right things to focus on when learning a new language. When I’m already competent in the subject, AI has been great because I can just deep dive into something specific, but I’ve found it way more challenging when starting with a blank slate.

Working remotely and relying on LLMs/Youtube/books has only furthered my belief that: simply chatting with someone who’s farther ahead than you has always been the most insightful/reaffirming– even simply as a tuning-mechanism or a motivation-generator. It’s just so hard to find those people these days. Actual communities are so de-emphasized in favor of do-it-yourself-in-silence approaches, because the latter is a SaaS product and the former requires tremendous effort.

I worry less these days about the availability of resources for learning and instead more about the quality/value.

One thing that I’ve started doing is cloning a repo for a library I’m interested in and using an LLM to explain how parts of it work. It’s definitely been helpful for jump starting my understanding, but my personal goal is always to get myself to a competency level where I don’t need the LLM assist anymore.

3 Likes

If I may ask, do you still have a computer by your side to enter code snippets or do you finish the book first and then code?

1 Like

3 posts were split to a new topic: Ethical implications/concerns of AI

Personally almost all of my learning lately has been from reading and writing code. Books are great but often too broad and out-of-date for practical technical stuff. For example, I have been studying databases for a while now (you may have noticed) and courses (shoutout Andy Pavlo) and books were helpful in the beginning. But as you get deeper the details you need are often left out.

Blog articles from industry experts can be more helpful but are even then often hard to find (search engines suck now thanks to SEO). I have actually had some success using Marginalia (a very niche search engine) to find things but even then the signal to noise is extremely low. The best way to find good blogs is from other good blogs and the people who write them. It’s amazing how far we’ve regressed.

But I seem to have reached the point where I can only really find what I want by reading code (and sometimes internals docs). I’ll give specific examples.

Recently I was trying to figure out how Tigerbeetle manages the freelist for its storage engine (which uses a single file). In particular I was curious if they felt the need to manage fragmentation because I want to know if that will become a problem for me. Even their internals docs (which are some of the best I’ve ever seen) are not this specific. I had to track down the freelist code (their code is also some of the best I’ve ever seen btw) and then I could confirm that they just allocate the next free block each time.

As another example, I wanted to confirm the specific logic for how an LSM terminates each SST and starts the next. I had long pieced together that you target a specific size and then rotate the table (which weirdly is not a piece of information I have seen written out explicitly anywhere, everybody just implies it, but I digress). I tracked down the code in another LSM (Fjall) and confirmed that they just wait until the current table exceeds 64MB and then rotate. Simple enough, but it’s nice to actually confirm it with your own eyes!

I’ve also found it very helpful to read through a repo’s commit and PR history, a skill which I’ve honed considerably as of late. I was trying to reverse engineer the React engine and the code is very poorly documented. So instead I went to the PRs and “went back in time” to when Fiber was first implemented. A lot of the details are much more obvious when you see them implemented piece-by-piece, especially with commentary!

Unfortunately this doesn’t work everywhere. Some projects have useless commit/PR messages and discuss everything out-of-band (cough FDB cough), leaving future historians (me I guess) with nothing to go off of!

BTW, while LLMs are worthless for providing deep info like this themselves, they probably are quite good at scanning through commit history and picking out what you’re looking for. I haven’t experimented with this yet but I think an LLM as a reverse-engineering “search buddy” would be fantastic.

4 Likes

Ive also heard about the PR and commit history strat from a youtuber as the best way to learn about a big codebase, but just to clarify do you start from the beginning? Is there a UI that shows it all linearly, I cant lie the UI for that side of things is muddy for me and I dont know how to navigate around it

2 Likes

Generally if I’m doing this I have a specific goal in mind.

For example, I wanted to know more about how the React Fiber engine was implemented. The codebase as it stands today is too dense for me to get through. A lot of times it can be hard to even find the code you’re looking for because it’s all so intertwined.

So instead I went to the PR search and typed in “fiber”. Sort by oldest and start clicking through. Most of the time when you do this there’s a lot of irrelevant stuff, but eventually you find the patterns. In the case of React they actually tagged all of the WIP PRs “[Fiber]” so once I noticed that it was pretty easy to start reading through them.

It’s remarkable how much easier it is to understand something when you see it implemented in pieces. Presumably for the same reason it’s impossible to write such code in one pass it’s also very hard to read it that way.

Another trick is to make good use of blame to find out where certain parts of the code come from. Once you have a commit you can usually find a PR and some more context with it.

I’m not aware of any specialized UIs for this (other than maybe Sourcegraph). I have actually thought about building one on more than one occasion but I haven’t gotten to that yet!

They key is stuffing as much context in your brain as possible in hopes that it learns something :slight_smile: Click every commit, every PR, every related issue just in case it happens to contain what you’re looking for. A lot of the stuff you will read, think “I have no idea what that means”, and then down the road you’ll realize that piece of information was useful and know where to go back to find it.

This is also where I suspect LLMs could be helpful for doing very advanced semantic search.

3 Likes