When should you buy a house?

Everyone’s parents keep asking them “So, when are you buying a house?” It may be an innocent question, but the effect is to make you feel bad about not owning real estate.

It’s the framework they grew up in. Get married, buy a house in the suburbs, have kids, and retire at age 65. Preferably, in that order.

We have to be honest: times have changed. It’s not realistic for young people, even well-paid software engineers, to follow the same timeline as our parents. In their day, a single breadwinner could afford a decently-sized house. Today, under-construction, shortsighted zoning laws, and inflation have joined forces to block the average American from affording a house at age 25. It’s simple math.

Some people feel bad about falling behind in the rat race. Our brains have subconsciously absorbed the message “you must buy a house and fill it with stuff you don’t need”. All successful people own real estate–everyone from gyrating TikTok influencers to Warren Buffett. And if you don’t own a two story house and a fancy car, you’re a loser.

Interestingly, most people don’t think about why they want to own real estate. They just blindly follow the scripts that society gives them. Yet, if you want to be better than the average person, you have to do something different.

I want to make a case:

  • Sometimes renting is a better financial decision than buying, and vice versa
  • You can consciously decide to rent
  • You should feel good about your decision, on your own timeline

I want to move away from the idea that real estate is the end-all be-all of your finances and your life. I think there are legitimately good reasons to buy a house or a condo (more on that below). But young people don’t need to rush towards real estate like Sonic speeding towards the end of the Green Hill Zone.

Besides, if given the choice, I’d rather be a millionaire renter than a poor homeowner.

Pros and Cons

Before dropping a million dollars on a house, I want to look at all the angles. I want to do a true apples to apples comparison. In this article, we’ll focus on the difference between renting and buying, not “Apartment vs Single-family house”. If you really want to avoid upstairs neighbors and have a backyard for your dog, you can rent a standalone house.

I’ll also assume that you’re taking out a home loan (aka, a mortgage). In January 2023, the median home price in the US is $428,700. Prices are higher in tech hubs like San Francisco, Seattle, NYC, and Austin. You probably don’t have that much cash lying around unless you’ve been consciously saving for years or you’re willing and able to sell your company stock. So, be prepared to take on some debt.

With that out of the way, let’s get started.

First, let’s list the advantages of owning real estate:

  • You can customize your space.
  • You don’t have to deal with a landlord.
  • You get a sense of permanence in your physical space.

And the disadvantages of buying:

  • There are a lot phantom costs to owning a home. (Some advisers recommend adding 50% to the sticker price to find the actual cost.)
  • If you take out a loan, you’re paying a bank extra money every month in the form of interest payments.
  • You have to pay property tax.
  • You have to pay mortgage insurance.
  • You have to deal with an HOA.
  • You’re responsible for maintenance, in both time and money. (Surprise maintenance is a major headache.)
  • Buying or selling a house takes months, and requires you to pay a hetfy fee to a realtor.
  • If you buy at the peak of the housing market, you end up over-paying for years.
  • If you fail to make mortgage payments, the bank could repossess your house, taking all the hard-earned money you put into it. (As a software engineer, this is unlikely.)

Let’s look at the advantages of renting:

  • There are fewer hidden costs–easier to understand.
  • Does not require a mortgage.
  • It’s easier to move in or move out at the end of the lease. This is good for short-term stays (e.g. if you only plan to live in an area for a year).
  • When the lease is up, you can negotiate rent downward or move to a cheaper place (I’ve done both of these, even in hot markets)
  • Someone else deals with maintenance issues, in both time and money.
  • Financial mistakes are smaller and easier to correct.

And the disadvantages of renting:

  • You can’t renovate your space.
  • You have to deal with a landlord or a leasing office.
  • You might have to leave at the end of your lease.
  • If you fail to make rent payments, you could be evicted. (This sucks, but at least losses are limited. And as a software engineer, this is extremely unlikely.)

You might read this list and say, “Wait, but what about <really important thing that society says>?” Let’s take a step back and look at these invisible scripts with a curious, objective attitude, like an alien from Mars visiting Earth for the first time.

Before we move on, I want point out that I did not say that buying or renting is always cheaper. That depends on a lot of factors like where you live, how long you expect to stay, etc.

In both cases, the price you pay will increase over time. With real estate, it’s property taxes based on your property value (except in California). With renting, it’s the base rent price keeping up with or exceeding inflation.

In hot markets, real estate prices have skyrocketed like Dogecoin in 2021, making both renting and buying more expensive in the long-term. In some areas, real estate prices have fallen from their peaks.

Because the bottom line is highly dependent on location and time, total price cannot be placed in the pro-buying or pro-renting camp.

With that out of the way, let’s examine some common phrases society tosses around when discussing real estate.

Things Society Says

“You’re paying someone else’s mortgage!”

The National Association of Realtors has carefully crafted this piece of propaganda and hammered it into the national consciousness. It’s designed to make you angry.

When you go to a restaurant, do you feel bad for paying the restaurant’s mortgage? Of course not! You’re spending money to receive a delicious meal.

When you rent a house or apartment, you’re spending money to have a place to live. It’s like paying for any other good or service.

“Real estate is the best investment.”

Your residence is a liability, not an asset. Every year, you’re paying money into it and get no money out of it. That is the definition of a liability! It boggles my mind when people think they’re making money by paying loans and taxes. It makes less sense than the plot of The Last Jedi.

You could speculate that an individual property will increase faster than the stock market as a whole. And you could win. But for every story of someone making a killing trading real estate, there’s someone who lost big and doesn’t talk about their loss. Speculation is gambling, not investment.

If 99% of your net worth is in your house or condo, your portfolio is very, very fragile. You deserve to lose money for deliberately putting yourself in a precarious position. A better way to invest in real estate is to buy shares in a real estate investment trust (REIT), which is much more diversified and safer than buying a single property. You can buy REIT shares as easily as stocks. In fact, reputable companies like Vanguard offer REIT funds for ultimate diversification.

And when you peel the onion, you realize real estate has consistently underperformed stocks by an insane margin.

Between 1983 and 2022, the median price of a single family house in the US increased from $62,408 to $356,866. If you had invested $100,000 back then in a typical house or hypothetical REIT with no mortgage, that house (or REIT) would now be worth $571,828 before accounting for maintenance costs. Not bad, right?

What if you had invested in a collection of stocks that represent the US economy? If you put $100,000 into the S&P500 between 1983 and 2022 and reinvested the dividends, you would have $7,794,615. You would have earned over 7 million dollars more and you would never have to worry about maintenance. You would be a literal multimillionaire!

“Well, my grandma bought her house for $100k and now it’s worth $900k, so she made $800k.”

Your grandmother did not make $800,000. There are so many phantom costs surrounding homeownership.

First, she had to take out a mortgage. She probably paid $180k over the course of the loan. Next, she had to maintain the house. Let’s say that’s a 1% cost every year. There’s also property taxes, mortgage insurance, HOA fees, and other random costs. Inflation eats into real gains. And when she sold her house, she had to pay a percentage of the price to a realtor.

Wait, does Grandma still live in that house? She does? I’m sorry to inform you she hasn’t actually made any money!

Do you think that you are going to sell the house you lived in for 40 years? If you actually downsize and buy a cheaper property, nice! But for most people, it is psychologically difficult to go from living in a 4500 SF house to a 1280 SF condo.

So if you don’t sell your house, you don’t make a profit. And if you sell your house, then immediately turn around and buy another one for the same price, you haven’t made any money. Blindly funneling money into real estate is not a retirement strategy.

Let me reiterate: if your goal is to make money, stocks have consistently outperformed real estate. And speculating that your primary residence will grow faster than the economy as a whole is more like buying a lottery ticket than investing.

Tying up huge portions of one's wealth in a single plot of land creates an incentive to preserve the land's value. In the US, groups of landowners band together in organizations that lobby municipal governments. These NIMBY groups block laws that inconvenience landowners but are good for the community as a whole. For example, wealthy suburban neighborhood organizations fear public transit, affordable housing, and three-story buildings because that would bring the "poors" in, which decreases their property values.

At the same time, young people and first-time home buyers *want* low property values. The government tries to help by creating well-intentioned but incredibly complex systems. The result is that young people buy too early and pay more money to the banks over their lifetimes, and when the banks fail, the burden falls to other taxpayers.

Housing can either be affordable or an investment. These are mutually exclusive goals. When the government pursues both at the same time, young people and taxpayers lose.

“Real estate never goes down.”

Pardon my French, but that’s a load of baloney. This graph from DQYDJ visualizes the trend well. Look at the 2008 financial crisis. Look at the slump in 2022. And regardless of the national market, individual properties can lose their attractiveness based on local laws outside your control. Real estate is not a safer investments than stocks or bonds.

And please get it straight: your home is a place to live, not an investment.

“You can deduct mortgage interest from your income taxes.”

People love saying this because it makes them feel smart.

Deducting mortgage interest from your income taxes is like paying a dollar to save 27¢. You should not be excited about paying interest to the big banks! To save money, the easiest thing to do is to not have a mortgage at all.

How about a simple, alternative model: imagine renting a house costs $2500/mo, and buying a similar dwelling would cost $4000/mo. You could rent, then save or invest the difference. That’s a net gain of $1500 every month. It’s so simple and I love it.

If you don’t care about tax law, you can skip to the next section.

I want to prove that the mortgage interest deduction is not a magic bullet to make real estate instantly affordable. For starters:

  • The deduction only applies to interest, not principal.
  • The deduction reduces taxable income, not the amount you pay in taxes. So, you’re effectively saving at most 35% of the interest payments.
  • It only applies if you itemize deductions.
  • It only applies for mortgages up to $750,000.

For people who currently take the standard deduction, the mortgage interest tax deduction might be saving debtors even less money than they think. To find the real savings, you have to compare how much you take home using an itemized deduction with a mortgage versus the standard deduction when renting.

Let’s do that right now. We’ll take the best-case scenario for taking out a mortgage: the first year. Each year after that, the interest portion of the mortgage payment goes down, which makes the deduction less effective over time.

Income/ExpenseBuying (Best Case)Renting (Equal Cost)
Income300,000300,000
Mortgage750,0000
First Year Principal10,1210
First Year Interest34,1650
Annual Payments4428644286
Deduction34,16512,950
Taxable Income265,824287,050
Federal Income Tax75,82483,745
Income After Expenses179,890171,966

Notes for nerds:

  • The mortgage is a 30-year fixed rate loan at 5% interest.
  • I used Bankrate to calculate amortization Note that the first year is when you get the best tax deduction, and it gradually decreases each year as you pay off the interest.
  • I used SmartAsset to calculate income taxes.
  • The “Buying” column uses itemized deductions. The “Renting” column uses the standard deduction for a single filer.
  • I left out other deductions (e.g. retirement contributions) for simplicity.
  • The cost to rent is equal to the first year principal and interest for simplicity. (In reality, you can probably find a similar dwelling for a cheaper monthly price.)
  • Factors like inflation, property taxes, and rent increases are left out for simplicity.

Summary: In the best case scenario, you would save $7924 in the first year, or $660 per month, by taking out a mortgage instead of renting. Sounds good, right?

But over time, the deduction’s effectiveness decreases. By year 20, principal payments have greatly overtaken interest payments. When you run the numbers again, the mortgage is only up $2,044 per year, or $170 per month.

The table also doesn’t include mortgage insurance, property tax, or home maintenance.

And if you adjust the calculations with a lower rent payment than the monthly mortgage payment, renting wins every time. The following chart shows the best mortgage interest deduction you can get versus simply renting other, normal properties, keeping all other variables the same.

Income/ExpenseMortgage (Best Case)RentingRenting (Even Cheaper)
Housing Expenses44,28636,00024,000
Income After Expenses179,890180,252192,252

In the best year for a mortgage, renting is up $362, or $30 per month. If you run the numbers again with a $24000 renting expense (equivalent to a $2000/mo apartment), renting wins by $12,362, or $1,030 per month. And every year gets better for the renter, since the mortgage interested deduction gets smaller over time.

Takeaway: Mortgage interest deductions do not automatically earn you a boatload of money. The deduction only matters if the difference between a mortgage payment and renting is small. It is much easier to save money by renting a cheaper place to live.

And now, back to our regularly scheduled program.

“You can rent out the property to someone else or use AirBnB.”

My dude, where are you going to live?

Being an AirBnB host is a part time job. And if you’re renting out the property to long-term renters, you get to deal with finding tenants, handling repairs, and all the other tedious parts about owning real estate. Sure, you might make money, but by this point, your time is spent running a small business. There is no free lunch.

If you genuinely want to become a landlord or AirBnB host, great! Just don’t conflate it with the goal of “having a place to live”.

“My realtor said now is a good time to buy.”

Realtors are not on your side! A realtor’s sole job is to sell you property so they can take the commission on the transaction. They tend to paint a picture of a glittering future. Few sit down and really talk about what you want and how much it really costs in the long term.

Here’s a hidden secret about the real estate industry: the total cost of a property doesn’t fluctuate very much based on interest rates.

When they exclaim “Prices are low!”, interest rates are high.

When they shout “Interest rates are low!”, the base price is high.

Kind of ironic, huh?

A good realtor won’t push you to make a decision. They won’t recommend you to take a huge financial risk without a rigorous analysis.

“I want a backyard (or another hard-to-find feature).”

Please don’t compare renting an apartment to owning a house. The comparison should be:

Renting an apartment vs owning a condo

Renting a house vs owning a house

Before jumping into the biggest financial decision of your life, check if you can rent a house with a backyard (or whatever thing you want) in your area. The point is to test it out in a low stakes environment before committing. Do you really want to mow the lawn, or do you like the idea of having a lawn? In either case, you’ll learn something.

How would my life improve?

Before we can answer the original question, you have to ask yourself one more important question:

“How would my life improve if I owned my apartment/house/yurt instead of renting it?”

When I asked myself this question, I couldn’t find a good answer. In my situation, buying would cost about $50,0000 per year more than renting. Furthermore, owning a house meant I would spend my weekends doing home maintenance instead of traveling, going to concerts, and playing board games with my friends. I wanted to do a lot of other things in life. My budget could afford a house, or everything else. I chose everything else.

I also didn’t like the idea of being a chained to a mortgage for the next 30 years. I have no interest in being a modern debt-slave, forced to keep working to make mortgage payments or lose your entire investment.

One of my friends bought an old house 27 miles outside the city center. Closer properties were too expensive. He’s a single man with no kids, so most of the rooms in his house are empty. My friend always complains that it takes too long to take the train downtown, it’s hard to meet up with friends, and there’s nothing to do in his quiet suburban town. And then he complains about the headaches caused by AirBnB guests, cleaning, home repairs, and contractors.

I get the sense that my friend a little bit dissatisfied with his purchase. I think he would have more fun if he lived closer to his friends and the other exciting parts of the city. If he’s intentionally making this tradeoff–great! But I have to wonder if he and other people in our generation have been misled into wanting something we don’t really need yet.

When is it the right time to buy?

So that brings us back to the question: When is it the right time to buy?

The right time to buy is when you are ready. It sounds cliché, I know. But the opposite would be “rush in and buy a property without understanding all the benefits, costs, and responsibilities.”

Personally, I think buying real estate makes sense when:

  • You’ve done a rigorous analysis of your financial situation and understand the hidden costs of owning real estate.
  • Buying will not take money away from your retirement contributions.
  • You’re confident that you’ll stay in that property for at least 10 years.
  • You have one year’s living expenses in cash (so you don’t fall behind in mortgage payments).
  • You acknowledge that your property is a place to live, not an investment or a get rich quick scheme.
  • You’re OK with doing home maintenance and yard work.
  • You’re making this decision based on your own initiative, not because you feel pressured by family, friends, or a realtor.
  • And most importantly: you like the space and the neighborhood you’re going to live in.

From a purely mathematical standpoint, you could run the numbers and answer the financial question today. There are a number of good calculators on the Internet, such as this one from the New York Times. Try plugging in some different values and seeing what happens.

You might find that buying a certain property is cheaper than renting in the long term, even after accounting for all the phantom costs. And that’s great! And in other places and times, you might find renting for 20 years is a better deal. And that’s OK, too!

The point of buying real estate is to have a place to live. You should like where you live. You should be able to say, “I understand that living here will cost X dollars per month after all the random costs, and my plan to pay for it is so solid I will never lose sleep over it.”

Maybe you value flexibility and explore a different country every three months, so you consciously choose to rent. Renting is also great if you don’t want to do all the maintenance yourself. When something breaks my apartment, I put in a maintenance request with my leasing office, and it’s fixed the next day. I love that! No taking time out of my busy schedule for an unexpected trip to Home Depot.

Or, maybe you have a dream of buying a historic Victorian house in your hometown. You consciously decide to save up to buy one, even if though it’s the option that decreases your overall net worth. And that’s okay! Sometimes buying a property is an emotional decision, and as long as you run the numbers and are realistic about your situation, go for it. You’re the captain of your own ship.

I’m not categorically opposed to buying real estate. I’m opposed to young people blinding following the messages that society gives us and then having our savings swindled away by realtors and big banks.

Critics might say, “This guy is just salty he can’t afford a house. LOL!” I can afford a house. I consciously choose to rent.

In this stage of my life, I don’t want to be chained to particular place or be forced to repeatedly make mortgage payments. I have the flexibility to quit my job and move anywhere in the world without fearing whether a bank will repossess my property.

One of personal finance rules is “Never take advice from someone with less money than you.” Lots of people love to talk–but are they in an enviable situation?

What to say when people pressure you to buy

Let’s keep an eye on practicality. People are going to pressure you to buy property. Your parents in particular will judge you for not owning real estate.

If someone asks you “Why don’t you own a house yet?” you can say “I ran the numbers and it doesn’t make financial sense for me right now.”

Let’s break that down.

“I ran the numbers” — You took the initiative and performed a rigorous analysis of practical considerations like the price of the property, phantom costs, and your ability to pay.

“and it doesn’t make financial sense for me” — You intentionally and independently chose your priorities in life right now, whether it’s your career, travel, dating, or something else. Buying real estate is not your financial priority.

“right now” — You acknowledge that things change, and you’re open to buying real estate in the future.

Some people will be shocked to hear this. They are in the cult of real estate. As soon as you suggest that buying property is not the greatest thing ever, they will launch into a monologue with all the propaganda phrases fed to them by the National Association of Realtors and chatter excitedly about mortgage interest rates. The best thing you can do is smile, nod, and change the subject. You don’t need to explain yourself to them.

At the end of the day, buying a house or condo should be something you want to do, not something you feel obligated to do. It’s possible that I’ll buy a property one day, but I’m not in a rush.


Legalese: See the About page

Posted in Psychology | Tagged , , , , | Leave a comment

100 Things I’ve Learned as a Software Engineer at Google

It’s amazing to look back over the past seven years. When I first stared this blog, I was a CS student at UT. 99 blog posts later, I’m a software engineer and tech lead at Google. I don’t have everything figured out, but I love showing people earlier in their career how to advance even farther.

Since this is my 100th blog post, here are 100 things I’ve learned while working as a software engineer at Google.

Doing Interviews

  1. No one has the exact set of skills listed in the job posting. The hiring manager is forced to go with the best candidate that shows up.
  2. The interviewer wants you to do well.
  3. The worst interviews are when the candidate struggles hard and can’t make progress.
  4. The best interviews are when the candidate performs exceptionally well.
  5. The hardest interviews are when the candidate is a borderline case, and you lean towards rejecting them.
  6. Structured interviews are necessary, but not sufficient, to remove bias from the process.
  7. Crafting good interview questions is hard.

Coding

  1. Code reviews are magic. I’ve learned so much from my code being reviewed.
  2. Small code changes are better than large ones.
  3. Lines of code written is not a good metric. You might as well judge an airplane by how much it weighs.
  4. Dependency injection is magical. Sometimes it is scary.
  5. Everything takes longer than you expect it to.
  6. If you have two dashboards for the same metric, at least one of them must be wrong. Probably both. You’ll try to deprecate one and end up creating a third dashboard.
  7. Don’t look at a dashboard unless you have to. You’ll likely find a “false positive” and waste time trying to debug it.
  8. Nothing is more permanent than a temporary solution (e.g. legacy code).
  9. Infrastructure teams exist so that they can transform O(n) units of work into O(1).
  10. Get an ergonomic keyboard and mouse to avoid wrist problems later.
  11. Programs function in strange ways. Sometimes they do not function in strange ways.
  12. Testing is more important than most people realize.
  13. At the same time, test flakiness is the bane of your existence.
  14. It’s better to prevent a bug at compile time, than runtime, than presubmit, than postsubmit, than in production.
  15. In system design, there is no right answer. This is completely unlike a unit test, which either passes or fails without ambiguity.
  16. Your job is to solve problems, not to write code.
  17. Sometimes a solution that involves no coding is the best solution.

Working at Google

  1. Everything at Google is medium-hard. Impossible tasks become possible, and trivial tasks become difficult. Want to change the color of a button? Medium hard. Want to launch to 1 billion users? Medium hard.
  2. Your experience at Google will heavily depend on what team you are on.
  3. Google’s systems interact in very weird ways.
  4. I do not envy the people who work on Android. They’re caught in a confusing network of partner teams, OEMs, and legal restrictions.
  5. Google has some of the most amazing software tools in the world.
  6. Google takes user data really seriously. Sometimes I have to wait weeks for access to anonymized logs, with all the personal data redacted. And all I wanted to do is was find common events that lead to application crashes…
  7. (Almost) all code lives in the same repository, known as “google3”. This has to be the largest code base in the world.
  8. The repo also is full of mysterious, unowned, untouchable pieces of code known as “haunted graveyards”.
  9. No one gets promoted for fixing haunted graveyards.
  10. UX is usually underfunded at Google. Meanwhile at Apple, people understand its importance and put their money where their mouth is.
  11. It’s hard to make a good UX design.
  12. iOS teams often have no UX designer, so they have to use Android mocks.
  13. (Almost) everyone at Google is highly competent.
  14. Everything must be measured.
  15. It is difficult to prove the value of your work if it cannot be measured. This discourages people from doing unmeasurable but necessary work.
  16. Most Googlers would like to help you, but their busy completing their OKRs. For the rest the quarter. And next quarter, too.
  17. Sundar Pichai is a complicated man. He seems extremely calm for someone at the helm of one the world’s largest companies.
One of Google’s food trucks.

Google’s Culture

  1. Getting a massage at work is pretty cool. I should probably fix my sitting posture.
  2. You stop being a Noogler when you start complaining about the free food in Google’s cafes.
  3. Google has changed in the past six years. Every year, there’s more bureaucracy.
  4. The quality of food at Google’s cafes has also declined over time.
  5. In my opinion, Google hired too quickly in 2020-2022. There wasn’t enough time for all the new hires to absorb Google’s culture.
  6. Memegen is one of the things that makes Google unique. It’s an internal website where employees post memes. If you post enough funny memes you will be invited into the secret Memeacademy.
  7. Google is slowly losing that magical feeling of Googliness present in its early days.
  8. When you have a company of over 170,000 people, just one idiot can make the rest of the employees look bad. Now HR has to institute new rules.
  9. No one understands everything at Google. Not even Jeff Dean.
  10. Jeff Dean is a genius, but even he makes mistakes (e.g. his conflict with Dr. Timnit Gebru)
  11. Dr. Timnit Gebru and Tanja Gupta did not deserve to be fired.
  12. Alphabet has a union.
  13. Peer bonuses are cool. You can give up to 5 to other employees each quarter to reward them for good work. The recipient gets $150.
  14. The perks really are great.
Google’s new Bay View building.

Career

  1. I used to think that technical skills alone are good enough to advance your career. I was wrong.
  2. Start thinking about promotion early. Ask your manager what you need to do. Then do it.
  3. 1:1s are an opportunity to advance your career. Use them to your advantage.
  4. Every job level is another layer of abstraction.
  5. At L3, you write code with help.
  6. At L4, you write code independently.
  7. At L5, you write design docs.
  8. At L6, you have meetings about design docs.
  9. At L7, you have meetings about meetings.
  10. At Google, you’re promoted based on your leadership, impact, and solving difficult problems. It is difficult to get promoted if your contributions are not measurable.
  11. Most of Google’s product problems can be traced to performance reviews (GRAD) and promo.

Management and Leadership

  1. You don’t have to be a manager to be a leader.
  2. Management is different from leadership. Management is about using resources efficiently. Leadership is about having a vision and followers.
  3. Being a good TL is hard. Being a good manager is also hard.
  4. Before starting a project, make sure all stakeholders are on board.
  5. Sometimes the best way to serve customers/clients/users is to make them do no work it all.
  6. Sometimes projects get canceled. It’s nothing personal.
  7. Managers want to see you succeed.
  8. Managers want to unblock you and move the project along.
  9. If a team looks like a well-oiled machine, it’s only by comparison.
  10. One of my favorite parts of my job is mentoring younger engineers.
  11. Crafting a good plan is hard.
  12. Also, nothing goes exactly according to plan.

Working with Others

  1. Scheduling a meeting is a great way to get someone to respond to your e-mail.
  2. Everyone needs to do their part to account for unconscious bias.
  3. I used to overvalue technical skills and disdain talk about team culture. I was wrong.
  4. You probably care more about your work than they do.
  5. A good program manager drives projects forward, proactively resolves dependencies, and and is a true leader.
  6. A mediocre program manager does little more than update spreadsheets.
  7. People (users, colleagues, stakeholders, etc.) will always complain.
  8. The type of complaint you get can tell you whether you’re doing good job. When your manager says the margins should be 4 pixels instead of 2 pixels, you’re doing great. When they complain that “the page is empty”, you have a serious bug to fix.
  9. Listening is an underutilized skill.
  10. Some people oppose DEI. I can understand not caring about it, but I do not understand actively opposing it.
  11. Antisocial programmers really need to improve their communication skills.
  12. Fortunately, you can Dale Carnegie your way through a lot of situations.
  13. Ask questions even when you feel embarrassed about asking. People are usually happy to explain the stuff they work on.
  14. It is important to give feedback regularly. You have to be humble enough to accept feedback, too.
  15. Googlers value feedback. They really want it.

Society

  1. We might be at or past “peak software”.
  2. Silicon Valley simultaneously understands very much and very little about its users.
  3. There’s a lot of money sloshing around in the world.
  4. Small is beautiful.
  5. Sometimes you have to slow down to go faster.
  6. It’s better to put out an MVP quickly than to delay a perfect launch forever.
  7. It is possible for a tiny group to drive huge changes. The path is often difficult and the chance of success usually low. But it is possible.
Posted in Software | Tagged , , , , , , , , , , , | Leave a comment

The One Thing You Need to Understand Before You Write a Resume

Recruiters are busy. With thousands of engineers being laid off from Twitter, Amazon, and Meta, recruiters have boatloads of candidates to choose from. It’s normal for over 200 people to apply for each software development position. A recruiter has the tough task of getting through all the resumes and deciding the small set of people to call in for an interview.

The process looks like this: Before manually reviewing resumes, the recruiter feeds the big “stack” of resumes into a program that checks for keywords. For an iOS developer job, they might select keywords like Swift, Objective-C, software, programming, test, design, iOS, UIKit, performance, reliability, and SQL. Resumes with more keywords get pushed to the top, and resumes with few keywords are automatically rejected.

Then the recruiter does a quick pass through the huge stack. Here, the recruiter spends just 10 seconds looking at each resume to categorize them,

“One down, 199 to go.”

Let me repeat that: the recruiter only has 10 seconds to scan your resume.

It’s nothing personal. Recruiters are human, and each decision requires time and mental energy.

Based on this scan, the recruiter puts your resume in the “yes”, “no”, or “maybe” pile. The people in the “yes” pile proceed to the next phase, either a deeper read, a phone screen, or maybe even an on-site whiteboard interview.

To stand out from the crowd, you need to make your resume easy to understand. Every word ought to have a purpose. The initial scan ought to give the reader a concise summary of your experience and skills and how they match the job description.

So if you’re looking for a job, do a quick scan through your resume or ask a friend to review it. What is the gist that they get? Is it accurate? And how would you improve it?

PS You may be thinking, “It’s really hard to make a memorable impression with a resume.” And I’d say, “You’re right.” If possible, meet some recruiters and managers at a career fair, or ask people in your personal network. You might be surprised at what opportunities are just around the corner.

Posted in Software | Tagged , , , , , , | Leave a comment

How to Write a Bug Report so that an Engineer Actually Fixes the Bug

If you want an engineer to act on a bug report, it needs to be easy to understand. Most importantly, the recipient needs to know how to reproduce the issue.

The worst bug reports look like this:

Weather query doesn't work

That’s it, no context. It’s impossible to understand what’s going on.

The best bug reports clearly state:

  • How reproduce the issue (“To Reproduce”)
  • The expected user experience (“Expected Behavior”)
  • What actually happened (“Actual Behavior”)

Take this fictional example about the Google Assistant and asking for the weather on the app’s main page (“chat UI”).

Title: Weather forecast ignores user location

To reproduce:
1. Open the app
2. Sign in to your account (or already be signed in)
3. Ensure that "use location" setting is turned ON
4. Type "weather tomorrow" in the query box
5. Tap "Send"

Expected behavior:
Chat UI shows weather forecast at user's location

Actual behavior:
Chat UI shows weather forecast in Santa Cruz, CA *regardless of user location*

This report is easy to understand and as a high chance of being acted on by a developer. It has step by step instructions on how to reproduce the issue. Receiving a report like this won’t be seen as a complaint–rather, this is a legitimate bug that needs to be fixed.

Bonus points: To encourage reporters to provide structured information, create a default template for your bug reports.

Posted in Software | Tagged , , , , | 1 Comment

What if Mario Characters Were Software Engineers?

Welcome to Mushroom Kingdom, Inc. Why don’t I introduce you to some of our software engineers?

Mario is a full stack developer. He has the talent of a rock star, but he’s humble. Everyone turns to him when the project runs into trouble, and Mario always saves the day. He has good relationships with his teammates, doesn’t slack off, follows all of the company’s best practices, and somehow still has good work life balance. His favorite programming language is Java.

Luigi sits next to Mario, his brother. He suffers from severe impostor syndrome despite being a solid developer. Luigi is always second in line when it comes to picking features, and he secretly resents Mario for hogging the spotlight. Luigi only writes tests because his TL told him to, not because he wants to write quality code.

Peach is the team’s manager. She had a great career as a software engineer and has since graduated to become a professional meeting attender. Every once in awhile, she gets to write some code and everyone agrees that it’s top-notch. Peach is a very empathetic leader and she always acts in the best interest of the team. Her one fatal flaw is that she often gets dragged into conflict with her rival, Bowser.

Bowser is a mean manager. He demands perfection, starting yesterday. He hides bugs and sets unreasonable expectations. If a test gets in the way of a new feature, Bowser deletes it without question. He has a backlog of 37 different design documents that will never be reviewed. He hates Peach and Mario–since they always do good work together, Bowser looks bad.

Wario is a maverick. No one is sure why he was hired. Everyone knows he arrives at the office late because he annoyingly revs his motorcycle in the parking lot. Wario regularly insults his teammates, misses deadlines, and delivers buggy code. He refuses to write comments. He claims his “my code is correct without a test” even when it’s demonstrably false. One time, he broke the office toilet and refused to admit it was his fault.

Waluigi is an interesting character. Everyone admits that he’s competent and important, but no one knows exactly what he works on these days. He’s a gregarious guy who likes to party, submits code at odd hours, and somehow hits every deadline that falls on a prime number. His favorite programming language is Haskell. Each of Waluigi’s features has exactly two bugs at any given time. Waluigi thinks that he’s Luigi’s biggest rival, but Luigi doesn’t seem to notice him. Strangely, Waluigi refuses to write unit tests, yet he single-handedly rewrote the company’s integration test framework last year, and will brag about it to anyone who asks.

Daisy is the tech lead of a forgotten internal infrastructure team. Her favorite programming language is Python. She quietly sits in the background and keeps the show running. Every year, she has to remind management why her team exists and they shouldn’t fire her. They look at the flashy numbers from Peach’s team and order Daisy to report the same metrics, even though it doesn’t make sense for an internal service. No one realizes that development would grind to a halt without Daisy and her team.

Posted in Software | Tagged , | Leave a comment