What are some mental models, mnemonic or memory tricks that you've developed to help you through your software engineering career/journey? I'll start first:<p>When I'm working in javaScript and trying to figure out whether to use `for...in` vs `for...of` I think about this trick I found and modified (https://maximorlov.com/forof-vs-forin-memory-trick). The author uses UFOs (unidentified flying objects) but I use foreign objects for mine. If I'm looping over objects, I say they are foreign objects so I grab the `for...in` loop for objects. That means the only thing left is `for...of` for arrays.<p>This other one is less of a mnemonic and more of a concept that was like an "ah-ha" moment in my software engineering career. (I can't remember if I came up with it or read/heard it somewhere so I apologize for not being able to give credit if credit is due.) A large percentage of apps that we create as software engineers are mostly glorified forms and/or spreadsheet. You are submitting some data to a database. We are then outputting that data in some UI. That means everything we do - from design all the way to DevOps - is to support or "dress up" a form and/or a spreadsheet of data. It helped make things a little less daunting for me.<p>Curious what other's may have conjured up.
The "ABC Principle". Always Analyse (A) the problem first, only then start Building (B). Finally, don't move onto the next thing until you have Checked (C) that whatever you've built matches up with your analysis.<p>Applies to more than engineering as well.
Interfaces are like Legos<p>The concept of a n-dimensional “room” helps inform how much testing is “enough”<p>Everything in software is an abstraction for another concept