Top Learnings of 2024
12 min readDec 23, 2024
Here are a collection of learnings I have had in 2024. Some of these come from books I’ve read, others from personal-life and still others from my work-life. Some of these learnings are things I am highly confident about and others are more like theories that I am still toying with. I have broken my thoughts into a sections on career, relationships, technology and learning.
Career
- Trust Instills Ownership: Give people hard and consequential work. Then tell them you trust them and that you believe in them. People are motivated by a challenge and want to rise to the occasion when someone puts trust in them.
- Set a Super High Bar: Setting a high bar and being demanding is a gift to your team. If the bar feels comfortably achievable to your team, they will feel bored, but if the bar seems nearly impossible they will feel inspired.
- Execute Quickly: Executing on a project is expensive and risky. It is during the execution phase that you spend money and it can fall off the rails. You can make projects cheaper and reduce risk by going executing faster. Aggressively try to figure out how to narrow your expensive/vulnerable window by figuring out how to execute more quickly. The expression “cheap, fast or good — chose two” is BS.
- Leaders Have a Core: A leader stands for something that others can lean on and push against. By virtue of standing for something you are going to end up saying no a lot and upsetting people. This is a good thing! Being a people pleaser is the opposite of having a core. When you are people pleaser you say yes to too much and end up standing for whatever the consensus is. This might make teammates happy in the short term but in the long term will leave them feeling directionless because there is no coherent vision they can lean on.
- Avoid Too Much Consensus: Getting consensus on everything you do is a sign you are not pushing hard enough or taking enough risk. Most really impactful projects will have people that initially did not agree with the direction — that is a good sign. Take the lack of consensus as a sign that you are being a leader, being bold and standing for something.
- Own the P&L: Be responsible with your companies money. It’s not that fun to think about budgets or cost saving efforts but it’s necessary for the functioning of a healthy business. If every individual employee does their own little part to be responsible with the company’s money the whole company will be healthier.
- Do Less & Do It Better: You are better off signing up for less and doing it like a rock star, then you are taking on the world and barely getting by. There is a critical mass of work you need to do in order to get a good review, but beyond this threshold quality matters more than additional quantity.
- Find Your Escape: Find something that takes your mind 100% off work and do it at least once per week.
- Exercise: Exercise is one of the most important things you can do for your work performance. Treat exercise like one of your most important meetings of the work day.
- Duration of Increase is the Most Valuable Assest: One of the rarest traits of an investment is one that will continue to increase over decades. When Charlie Munger bought a company he focused on the company’s ability to grow for a long time. The power of interest over time is a powerful force. This principle also makes sense to apply to careers — having a career in which you continue to improve throughout the duration of the career without stagnating — is very rare and will make you truly exceptional by the end of your career. As Charlie Munger says, “Go to bed each night a bit wiser than you woke up.”
- Write The Press Release in Advance: Writing a mock press release before a project ships (or maybe even before it starts) is a powerful motivator. By writing a press release in advance you give your team something to aim for and to get excited about. Consider using this method as a way of leading a team and setting a vision. At your company it might not be called a press release, it might take some other form — that is fine, modify this to your own company’s culture.
- You Don’t Need to Show Your Work to be Honest: In a launch announcement I am often tempting to show my work (i.e. explain the “how” I did something) in order to prove that I am being honest. Avoid this trap. People really don’t care about the “how” (and if they do they can dig into the project further). Just be honest about your impact, focus on the “what” what rather than the “how” and have the self confidence to know that you can back up your claims if anyone wants to double click.
Relationships / Parenting
- Persuading is the Opposite of Understanding: If you are trying to persuade you are not trying to understand.
- Understanding Over Agreement: People want to be understood more than they want to be agreed with. When you are in conflict with a loved-one, your top priority should be to be able to understand their position well enough that you can explain it back to them in a way they would sign off on. This is the single best thing you can do to resolve conflict.
- It’s More About Repair: Every relationship is going to have hard moments. People are not perfect and they are going to make mistakes. This is fine and expected. Therefore, the quality of a relationship ends up having more to do with the peoples’ ability to repair from a tense times than to not have tense times.
- Give Your Child Ownership: Just like employees at a company want to feel empowered to own things, children also want to own things. They aren’t ready to own adult sized decisions, but give them ownership over little decisions that they can make safely.
- Self Care Is Necessary: As a parent making time for self care can be challenging, but its necessary. Self care is not only necessary for your own wellbeing but its also an important thing to model for your children. When children see a parent taking time to take care of themselves and setting a firm boundary around this, they will learn the importance of self care for themselves.
- Eating: A parent is responsible for what is available to eat, where it is made available and when it is available. It’s the child’s responsibility to decide what to eat of what is offered and how much to eat.
- Boundaries: A boundary is a promise to your child about something that you will do not an expectation you have of them. For example saying, “Charlie, you have to turn off the TV in 5 minutes” is an expectation you are placing on your child. Whereas saying, “Charlie, in 5 minutes I need the TV to be off and if you don’t turn it off I am going to” is personal boundary you are enforcing. Firm boundaries give children something strong they can lean on because they know it will be enforced no matter if they are strong enough to hold themselves accountable or not.
- Weekly Relationship Checkins: My wife and I moved our monthly relationship sync to a weekly relationship sync this year. We go on a date night once per week and each date night we ask each other how we are feeling about the relationship. This has been a boon to the relationship. The more frequent conversations means that tense topics have less time to build up and each conversation items feels lower stakes.
- Monthly Joint Household Planning: My wife and I started doing monthly household planning. During this we write down (in a shared Google Doc) what each of us will be taking on for the household that month and taking about future things that need to get done. This provides several benefits — (1) It gives visibility into what the other person is doing. (2) It provides a space to appreciate the other person. (3) It acts as a safe guard from taking on too much. (4) It provides accountability for doing the things you say you are doing to do.
Technology
- Create Ephemeral Dashboards: Don’t worry if a metrics dashboard is not going to be useful in three months from now. If it’s useful to you for the next month spend a few hours making a nice dashboard. Ephemeral metric dashboards that aim to provide insight into a specific / short-term problem are underrated and should be created more often.
- Launch Announcements: When you send a launch announcement it should 80% about what you did, 10% diagrams and 10% about how you did it. People tend to spend dramatically too much space on the “how.”
- Databases Should Not Handle Business Logic: It can be tempting to bake in business logic to your database system because it seems like the database is a powerful point of leverage to solve business problems in a reusable way for the whole company. Avoid this temptation! While baking business logic into the database might aid in velocity in the short term, it will eventually make both the database and application harder to iterate on because the abstraction boundary is blurry. A database should abstract out an interface to store arbitrary data and not bake in business logic. For example, this implies a database should not know which type of business entity a shard key represents, the shard key should be an opaque blob from the point of view of the database.
- Don’t Fear Complexity in Pursuit of Simplicity: When building software systems the goal is to provide your users with a powerful, flexible and simple abstraction to use. This often means owning significant complexity within your system to provide this flexible, simply abstraction. Don’t be afraid take on this complexity in pursuit of providing simplicity to your users.
- Focus on Writing Hard Code: It is important for senior and staff engineers to write code. But just writing code is not good enough because lots of code is pretty mindless and simple to write. For example if you write lots of code but its all refactoring, unit tests and config changes that is not actually going to teach you that much. As a senior engineer you have much less time to code than junior engineers so you should focus on taking on coding tasks that are going help you build your mental model of the system. Don’t just code — take on hard/important coding tasks. There is evidence that shows that working harder for a solution will improve your memory of the solution compared to if the solution was easy. Remember this fact, when you think about the coding tasks you take on.
- Take More Risk: Within infrastructure it can be easy to bias against taking risk. As a result, most infrastructure engineers do not take on enough risk. This is a mistake. Risk is an asset and you should spend your risk capital. Spending risk capital enables you to move faster and be more ambitious. We can learn something from poker bots here— they take on lots and lots of small tactical risks. Something professional poker players have learned from machines is that we humans tend to not take enough risk. More specifically, the type of risks that we should take more of are small tactical risks. Rather than taking a huge career risk, try to take very frequent small tactical risks (e.g. pushing code out a bit faster or driving a meeting you feel under-qualified for).
- Percentiles Fall Apart on Non-Normal Distributions: The P50 is meaningful if the underlying distribution is normal, but the P50 might not represent anything meaningful if the distribution is bimodal. Most distributions are not normal. This means that latency percentiles (especially when you get out to a few nines) are very often misleading. Consider using cumulative histograms to model distribution shapes instead. This can be rough because defining the bucket boundaries can take some tuning, but often you will end up with a more realistic picture into to the distribution.
- Long Lived Interactions with Databases Are Probably Bad: Databases are stateful systems and that means they are more complex than non-stateful systems. When operations can be left pending in the database for a long time (e.g. a long lived RWM transaction or a pagination cursor) it adds a whole additional layer of state to think about. I suspect it’s almost always a good idea to not allow for long lived (greater than a few seconds) interactions with your database. Long lived interacts mean things like database cutovers and deployments just get much harder. Additionally, if clients depend on long lived operations in the database it probably means they are misusing their database (e.g. using it like a queue or async engine).
- Data Movement is Super Powerful: The ability to move data from one computer to another computer than then cut access over to that new computer is super powerful. Its amazing how many problems boil down to having robust data movement primitives. The obvious ones are shard splits and vertical scale ups. But schema migrations, version upgrades, homing data in new regions can also all be reduced down to data movement problems. It’s worth investing in simple, provably-correct and flexible data movement primitives. You are going to end up building a lot on this backbone.
- The Right Amount of Noise is Not Zero: When doing a migration (or really during any release) the right amount of noise/toil is not zero. If you roll something out and cause absolutely zero negative impact it probably means you did not move fast enough or take enough risk. Operational noise and risk are budgets that you want to spend. Having an availability SLO of 99.9% means you have almost 9 hours of downtime to spend per year. If you only spend one hour of that, it means you left eight hours of opportunity to move faster on the table. Take more risk, aim to hit your SLO and don’t aim to beat your SLO (at least not by a lot).
- Bifurcation is Really Bad: Avoid bifurcation!!! Bifuraction sucks for clients of systems because it makes it hard to figure out how to correctly use a system and it sucks for the service provider because new features need to be added in 10 different ways instead of one. Focus on shipping simple, flexible powerful primitives and make that the the only usage option.
Learning
- Multidisciplinary: Learn the most important mental models from a diversity of disciplines. Being multidisciplinary will enable you to make better forecasts about the world and draw connections across domains that others cannot.
- Prediction is Really Hard: Humans underestimate how hard it is to make good predictions and overestimate our confidence in predictions. Good predictions are adjusted based on new data, are formed from a multidisciplinary view of the world, embrace the complexity of the world and have large error bars.
- Avoid Single General Models: The world is really complex. For the most part there are not single principles that govern how systems work. So avoid making predictions based on single generalizable principles and instead develop detailed mental models for how systems operate.
- Memory is Like a Tree: Memory does not operate like a set of mental flashcards. Instead memory is more like leaves on a tree where the tree represents a core understanding of how a system functions. If you try to remember a bunch of random leaves that are not attached to a tree you will fail. But if you remember things in the context of the system they are a part of you will remember them better.
- Memory is the Residue of Thought: You remember the things you think about. More specifically, you remember things when you spend lots of time thinking about the underlying systems those facts are attached to.
- Learning Is Hard: High quality learning is focused on learning how to do a new skill that is on the edge of your current capabilities. It is not fun and it should be hard. Even people that are elite in their field and have practiced for many tens of thousands of hours report that their practice sessions were not very enjoyable. Take the lack of something being hard as a warning sign that you are not actually improving.
- Good Learning is Skills Based: Good learning is focused on doing a specific task in pursuit of building up more robust mental models of a system. Its not focused on memorization or doing work for the sake of doing work. Learn by doing something something challenging with a specific learning goal in mind.
- If You Aren’t Improving You Are Regressing: You don’t get better at something by just doing it the same way over and over again. It does not matter if you have been a doctor for 5 years of 25 years if the later 20 years have not been spent improving your craft. In fact, the tendency is for skills to atrophy with time unless you engage in difficult intentional learning.
- Read Before Bed: This year I have fairly consistently read 10 pages of a book before bed and it has dramatically improved my sleep quality. My sleep being better improves my memory of the previous day’s learnings and increases my ability to learn the following day.