Live data from Hacker News

Using an engineering notebook

ntietz.com

21–30 of 161 posts

Re: Using an engineering notebook

#21

I was given this advice at university, but what I was always missing was what I was supposed to write down in them. The post here mentions hypotheses, but I don't do experiments for the most part. It mentions writing down in the notebook before writing code, but I can't test my notes, I can't really send my notes for code review. I guess you could use it for design, but you'd lose all the advantages of word processin…

I picked up bullet journaling a few years back and that’s how I track my work:

o Sales meeting with Foo Corp

- Suggested to Sam that we use PostgreSQL

- Made us $X by doing $Y (star drawing)

. Fix a thing

/ In the process of fixing a thing

X Done fixing the thing

And that’s about it. I write this in an epaper notebook (Supernote Nomad) that I take everywhere in the office. At a glance I can tell you what I’m working on, what I did, and who I told what. And when I’m writing my annual self-review, I can search it for the star drawings to know what I can brag about.

I specifically do this instead of an iPad because I found it vastly less distracting during meetings. I tend to leave it laying there while I look at the speakers and pay attention, rather than just checking Slack really quickly, and oh, better look at my email, etc.

This is salve for my ADHD-scalded mind.

Re: Using an engineering notebook

#22

One thing that has helped me keep to start keeping long-running notebooks (which I use as engineering notebooks at times, among other things) is to actually keep two: one for immediate notes that I treat as disposable, and then another for "permanent" stuff. The former is a little 3x5 pocket notebook that literally lives in my pocket (or beside my keyboard), and I can jot stuff down in whatever order or format is con…

On a side note, whenever I get a new journal (paper or electronic), my very first step is to draw a crappy cover on the first page. That’s easy for my because I lack the skill to draw a nice one. This kinda “breaks the seal” for me. It’s slightly ugly now, causing me to not feel bad about anything else I put in it afterward.

Re: Using an engineering notebook

#23
I'd have a hard time with a physical notebook. Speed and search are key.

My workspace is just a markdown file, with dates and work-in-progress (scripts, bug investigations, design notes, task lists...), by date (reversed), rolled up to month files. If something (non-code) bears remembering, it's normalized and published to others, or put into my own topic space (leaving the WIP notes).

The key feature is global search over all such files. I can find any activity and any topic in seconds, with a search-bar overview of all places where I addressed some subject. (As a result I tend to create unique names.)

As a discipline, speaking directly and constantly to future self does help establish more methodical approaches, reinforces context awareness (and avoid ratholes); I restart even small projects where I left off, and scale the number of projects I try. Somehow the act of writing provides a reflective time/instant boundary (think: clocks in a functional universe) that orients the work in time/relevance to avoid wasting time on things that matter less.

Re: Using an engineering notebook

#24

I was given this advice at university, but what I was always missing was what I was supposed to write down in them. The post here mentions hypotheses, but I don't do experiments for the most part. It mentions writing down in the notebook before writing code, but I can't test my notes, I can't really send my notes for code review. I guess you could use it for design, but you'd lose all the advantages of word processin…

I don't have a full-blown notebook, but I keep task notes in individual text files. A sample text might be:

- Fixing broken test: (full ci link)

- seems to be repo foo, target //bar:baz, subtest TestSomethingNice. Error: (30 lines of stack trace here)

- git checkout 0ead3f820da34812089

- trying locally: bazel test //bar:baz

- command failed, error: (relevant error here)

- turns out I need to set a config, reference: (wiki link here)

- trying: bazel test --config=green //bar:baz

- problem reproduces 5 times in a row, seems like 100% fail rate

- source file location: source/bar/baz.cc

- theory: baz is broken from recent dependency bump. Reverting commit 987afd

- result: the error is different now (more error text)

etc.. etc...

This is actually super handy for a complex problem. No need to wonder "did I see the error before?" or "wait, when I was trying that thing, did I see that message as well?" or "how do I reproduce a bug again?". No keeping dozens of tabs open so you can copy a few words from each of them. When later talking to someone, you can refer to your notes.

Re: Using an engineering notebook

#25

I was given this advice at university, but what I was always missing was what I was supposed to write down in them. The post here mentions hypotheses, but I don't do experiments for the most part. It mentions writing down in the notebook before writing code, but I can't test my notes, I can't really send my notes for code review. I guess you could use it for design, but you'd lose all the advantages of word processin…

> It mentions writing down in the notebook before writing code, but I can't test my notes, I can't really send my notes for code review.

I think generally it's more about sketching the high level structure of the code. I will routinely write things like :

  documents = ...
  by_client = documents.group_by(client)
  for client, doc_set in by_client:
     for doc in doc_set: csv.write(doc)

Not at all following the actual APIs I use, but I can fill in the blanks when getting the code in place.

The above is very simple, of course, usually I'm working through something where I just want to play through what pieces of data I might or might be missing

Re: Using an engineering notebook

#27
post #16

Earlier quoted context omitted.

For me, it helps to slow down my thoughts and aides deep work. I draw diagrams, connect blurbs with arrows, and “link” to other page numbers.

This is still missing the "what" for me. What do you write down about the work? Is it a plan for what you're about to work on? Is it a breakdown? Is it facts you learn as you work through something? Is it a minute by minute journal of what you've done? Is it just interesting details? Is it to-dos? Is it opinions you're trying to clarify? Diagrams I get, my desk is covered in scribbled diagrams to help me visualise so…

Every time you look up something on StackOverflow, refer to the API docs, or refer back to the ticket, use case, or requirements document, make a note of your question and the answer. Even when you stop typing to take a break for a moment, or after pushing code while you wait for the ci/cd pipeline, note down where you are and your last action or change.

Every time you start to write a TODO comment, make a note instead, or also.

Consider Kent’s Beck’s recommendation to write down every decision you make.

Post reply on HN