I employ a simple version of the bullet journaling method. I maintain an index at the beginning of the book where I add topics and the page numbers that I have information about it on. Still not ctrl-f speed of course, but I am not flipping through my notebook trying to find the right page. For your situation, I'll probably right down the job reference on the page of the day, and then add a `Job References` entry in the index and add the current page number beside it. At the end of each year, I'll digitize everything important for archival purposes (usually very little), and move over ongoing collections (like book list), to the next notebook.
I finished reading Elixir in Action a few days ago. This was probably the best part of that book. It takes you through building a primitive GenServer with basic processes before moving onto actually using GenServer. It specifically goes over tail recursion optimization before it introduces the receive do loop, which seems like a very important part of the whole thing.