10 Things That I Learned in 2022
Tags: personal, growth, learnings, programming
Published: 2023-07-08 18:00:23

---
title: 10 Things That I Learned in 2022
published: true
date: 2022-12-29 18:30:59 UTC
tags: personal, growth, learnings, programming
canonical_url: https://pathtosenior.substack.com/p/10-things-that-i-learned-in-2022
---

![book and brown surface](https://images.unsplash.com/photo-1512284125381-bdb1f3a77338?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwxNXx8dG9kbyUyMGxpc3R8ZW58MHx8fHwxNjcyMDQxMzU1&ixlib=rb-4.0.3&q=80&w=1080 "book and brown surface")
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewbox="0 0 24 24" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg>

**Hey there,**


I hope you are having a great holiday. This newsletter is the last one I will write to you in 2022. I want to thank you for following me throughout my software engineer and professional career journey. I realized there is more than coding best practices to navigate through a software engineer career - it consists of smart investments and a balanced mindset. For one, each software engineer is also an investor. For instance, you decide whether or not you should invest your time working at Google versus a unicorn startup by evaluating the ROI. Moreover, you want to stay sharp and focused on your main objective, and you have likely heard the term "_we are what we eat_" - thus, our health and daily habits play a big role in staying focused. Lastly, navigating your software engineer career is all about having the right mindset. Some people become discouraged when they get demoted from senior back to software engineer, but a little positivity and a mindset shift can help them prepare for their next steps.

Below is a list of ten things I learned throughout the year 2022, listed by category.

### **Career Mindset**

1. To be a pragmatic engineer, you must let go of your ego and programming opinion for the team and focus on solving customer problems instead. If you treat programming languages as a tool, you will be less likely to be sad when engineers write bad code and instead understand why such code solves customer problems. Focus on solving problems, and pick the right tool to solve those problems.

2. Iteration is much better than perfection: telling the product manager about your progress consistently and bringing up issues as early as possible is better than no updates. It is better to be late with full transparency than to downplay issues. 

3. The product manager needs to answer the question of "why?”. The engineer needs to answer the question of "how?". Thus, a good engineer always gives product choices on the problems, pros and cons, and a clear level of effort.

4. By saying no to anything that won't serve your business or your team, you can open up space to focus on better opportunities for the business. It will help if you learn how to evaluate those options quickly and determine which ones are good to pursue and which ones to say no to because your time is more valuable than the money you earn.

### **Programming Architecture (System Design)**

These are some of the highlights that I learned from reading programming and system design books and also reading hundreds of articles on the web:

1. Many databases that provide transactional safety guaranteed by the acronym [ACID](https://en.wikipedia.org/wiki/ACID) is mostly marketing. Martin Kelppman described that consistency shouldn't belong to the term ACID because a database does not control your data's invariants. The application developer's responsibility (not the database’s) is to define its transaction correctly to preserve consistency.

2. Consistency in ACID is different from consistency in the CAP theorem. Consistency in ACID is the notion of the database being in a "good state." In contrast, consistency in CAP means linearizability, meaning you treat your database like only one copy instead of multiple copies. Most of the time, when we talk about consistency in system design, we are referring to linearizability. 

3. It is misleading that [CAP theorem](https://en.wikipedia.org/wiki/CAP_theorem) often suggests that you need to choose 2 out of 3. One of the reasons is that you cannot control network faults - they will happen whether you try to prevent them or not. The system can provide consistency and availability if you have a good network. When network faults occur, the system can choose between consistency (linearizability) or availability (total availability). Thus, a better way to phrase the CAP theorem is to choose between consistency and availability when partitioning. ([link](https://martin.kleppmann.com/2015/05/11/please-stop-calling-databases-cp-or-ap.html))

### **Personal Finance/Investment **

Although my writing has focused on the software engineer career journey, I also love to read and learn about personal finance. Through life experience and by reading hundreds of online resources, these are four points that I learned in 2022:

1. Many homebuyers are laser-focused on a property's price tag that they don’t realize that a high-interest rate is more harmful than high housing prices. When home prices skyrocketed through the roof in 2020 with multiple homebuyers trying to bid over **$100K** above the asking price, many people wanted to end the bidding war. Now that we have a high-interest rate, many house prices are slowly dropping, but the monthly payments are higher. George Ratiu, Realtor's Senior Economist, mentioned that with the current interest rate, home prices would need to plummet by 45% to have the same monthly mortgage payments as they were one year ago. ([link](https://www.realtor.com/news/trends/home-prices-would-need-to-fall-this-much-for-buyers-to-get-a-break/?identityID=614c1b33048328014ce541b8&MID=2022_1111_Weekly_NL&RID=25305970742&cid=eml_promo_Marketing_NonPRSL_WeeklyNL_cons.15895022_2022_1111_Weekly_NL-article1-blogs_trends))

2. The tricky part about growing wealth is less about saving money and more about the power of leverage. Understanding leverage is a skill set that can help you increase your income in tech, regardless of the economic situation. Understanding leverage in borrowing helps you tap into 1 million much faster than slowly saving in your bank account.

3. How can you make the right move for the next jump in your career? Treat it like an investment. Think about working at that startup or big tech the same way you would buy stock from that company. You will think from an investor angle beyond the compensation and bonus numbers in your offer letter.

I hope you found this helpful. As always, let me know your thoughts and suggestions.

How about you? What are some things that you have learned in 2022? Feel free to drop an email or comment down below!

Have a great holiday,

Edward

## 💡 Want more actionable advice about Software engineering?
I’m Edward. I started writing as a Software Engineer at Disney Streaming Service, trying to document my learnings as I step into a Senior role. I write about functional programming, Scala, distributed systems, and careers-development.

Subscribe to the FREE newsletter to get actionable advice every week and topics about Scala, Functional Programming, and Distributed Systems: https://pathtosenior.substack.com/