Ask HN: How Do You Remember How a Complex System Works?

1 points by idontwantthis ↗ HN
I’ve been on the same team for a few years now, and I’ve contributed all over the project, but I still struggle to explain how things work in parts I haven’t touched recently. I can work on them, but I always need time to refresh myself and I struggle to give good answers about them until I’ve started working.

A senior colleague of mine is the go to guy all over the company because he remembers and understands everything on the fly. I asked him how he does it and he says it’s just natural.

Is there anything I can learn or study to retain knowledge about our very complex system so that I can answer questions more readily and be productive faster?

Are there any books on the subject?

4 comments

[ 5.0 ms ] story [ 20.8 ms ] thread
Take notes. Draw up an overview architectural diagram.

Divide your notes into major sections for each area of the project and use it to jot down weird and interesting bits as you encounter them.

This not only gives you a handy reference so that you're not relearning the same stuff all the time, but writing things down gives your memories more resilience, so you'll remember more on the spot.

This. Also, quiz yourself about the system, maybe allocate 15mins just for that a day. Why do we need X? How are these parts connected? Are there connections that are different? Why?

Additionally, try to deeply understand the business logic. As a former dev who currently works on product, I'm often surprised how long it takes for developers to come up with solutions, which I can generate on the spot. I tend to believe there's no difference in technical skill, I just have a lot more context knowledge about what the system is supposed to do, making me more confident and thus faster in making technical decisions, despite having spent only a comparatively tiny fraction of time in the code base.

Yes, the exercise of “teaching” it helps retention even if you’re teaching yourself or a rubber duck. Model it, draw it, make a dashboard with servos that measure important metrics, any way to abstract it or reshape the information. Take on the onboarding presentations to help other people understand it and talk about it. It will help you to dig deeper and know it more by putting the information into a different context.

Or in other words, that guy knows it because everyone asks him.

Documentation. You can only keep so much in your head at any time. Get the rest down in a wiki or similar.