You are making a documentary at Big Tech Co.

The following is a work of fiction. Any resemblance to any persons, places, or events in the real world is purely coincidental. It is definitely not autobiographical.


You are a film director creating a documentary about life at Big Tech Co. You have a busy day ahead of you: 5 grueling on-site interviews.

Your first interview is with the CEO. The film crew sets up a camera and attaches tiny microphones to your shirt collars.

“Big Tech Co. has always been obsessed with our employees,” proudly announces the CEO. He is dressed in a black business suit, blue button down shirt, and no tie, as if to plead, “I’m a tech executive, but I’m still cool, right?”

“Internal surveys show that our employees are very happy, wonderfully collaborative, and highly productive. If we’re going to win the AI race, we need to attract and retain the best talent in the world.” The CEO’s measured confidence hints that he has given this speech many times before.

“What makes AI so important to you?” you ask.

“AI is incredibly important to Big Tech Co. In fact, I cannot think of anything that is more important. It touches everything: marketing, product development, sales, the menu at the company cafe, you name it. How did we ever think that it’s possible to serve buttered toast without AI?” The CEO smirks with the confidence of a WWE announcer.

You nod in agreement.

“In fact,” the CEO continues, “AI is transforming how everyone in the world is creating and consuming information.”

“For the better?” you inquire.

The CEO frowns for a moment, looks at the camera, looks back at you, and flatly replies, “Yes”.

You nod. You look down at your notepad.

“What’s the most difficult decision you’ve had to make in the last year?” you ask.

“That’s easy,” the CEO smiles with the tranquility of a yacht on Lake Tahoe. “We recently acquired an AI company to bolster our capabilities in the AI space. It was a massive investment: 5 billion dollars. But bringing this new AI company into Big Tech Co has truly accelerated our progress in the AI race. It has been incredibly transformative.”

You nod politely. You glance at the clock. 40 minutes until the next interview.

Photo by Pixabay on Pexels.com

Your second interview is with an engineering director.

“Good morning, film director,” he greets you with a clever smile. He is a tall man with a short, no-nonsense haircut dressed in crisp slacks and a Patagonia sweater vest.

“Good morning, engineering director,” you reply. You are the same person you always are, wearing the same things you always wear.

“Can you tell me more about a typical day at your job?” you ask.

“Of course!” the engineering director beams. “I spent the first hour of my day approving requests for office supplies. Headphones, mice, things like that. After that, I typically lead an all-hands meeting. I always give as candid answers as possible. Transparency is crucial.”

You nod, motioning him to continue.

“I typically have my ABP bring lunch to my desk while I read Harvard Business Review. Then I review feature launch requests.”

“Tell me about a launch that excited you,” you inquire.

The director thinks for a moment.

“You know, there was this fascinating feature for our flagship product. It was codenamed ‘Narwhal’. The Narwhal team worked on it for over a year. Initial feedback from users was fantastic. Narwhal was almost ready to launch, and the team just needed my approval. Then we advanced our amazing bet. The team was disappointed, but we needed to optimize our resources. It was tremendously exciting!”

“Disappointed?” You wonder aloud, incredulous. “I thought you said it was ‘advanced’. Why would the Narwhal team be disappointed that their project launched?”

“Oh!” chuckles the director. “When I said ‘advanced’, I meant ‘canceled’.”

“Why would you cancel Narwhal?” you ask, confused. “It was almost ready to launch and it sounded like users would have loved it.”

“Well, the organization had an OKR to launch 10 new AI-powered features last year,” explains the director. “Narwhal didn’t have any AI. We weren’t going to spend our time trying to satisfy user needs when there are OKRs to hit. So, Narwhal was canceled and we announced a reorg.”

“A reorg?” you ask, raising one eyebrow.

“Yeah!” exclaims the director with the excitement of a 15-year old boy who just found out that he was about to get some mozzarella sticks. “The reorg really simplified decision-making and brought teams closer together so they could execute on the highest priority workstreams in the org. Everyone is really happy with the new team structure, so I’d say things worked out pretty well.”

Photo by Darlene Alderson on Pexels.com

“How did your team take the reorg?” you ask an engineering manager in your third interview.

“It was rough,” she answers plainly and looks down at the floor. The engineering manager sits on a comfortable couch in the quiet section of the open-plan office. She is wearing blue jeans, white sneakers, and a plain blouse.

“Two of my engineers were laid off without warning. Another one quit Big Tech Co. to become a digital nomad in Southeast Asia. We had no budget for travel and no budget for raises. Imagine trying to motivate a distributed team when the best you could do is to tell them that ‘a 0% raise is a good thing’.” She stares off at the microkitchen and sighs like Jay Gatsby staring at a lantern across Long Island sound.

The engineering manager continues. “I fought hard for my team in performance reviews. I even helped one of them get promoted last year. And last year was terribly hard. That was the only case in our org that got through. I think that engineer would have left Big Tech Co. if he wasn’t promoted.” The engineering manager puts her head in her hands. She sighs, partially in relief, and partially in exasperation, like a general who won a costly battle but failed to halt the enemy’s advance. So the war continues.

“You’ve been through a lot,” you remark. “And yet you and your team are still here. What makes you and the others stay?”

“It’s all about the people,” she gestures with her hands. “Projects come and go, but the people stay. I’ve spent evenings and weekends doing everything that needs to be done for my team. I’ve cleared the path for them so they could grow in their careers, and as people.”

Your motion for her to continue.

“It’s hard to find the right project for someone: They need something that will align with their interests and skills, be challenging enough so that they have room to grow, but not so difficult that they fail and cause the team to miss our OKRs. I just want them to have enough space to develop new skills and shine. I want them to be happy and effective.”

You pause and observe the silence.

“What about you? What do you want out of your career?” you ask, gently.

“What do you mean?” The engineering manager asks.

“You do so much for other people. Are you angling to become a director or VP one day?”

You notice tears forming in the corners of the manager’s eyes.

“I don’t know,” she sniffles. “I no longer have aspirational goals.”

Photo by Anna Shvets on Pexels.com

“Hey bro,” Chad extends his arm for a fist bump. Your face scrunches as if to say “I’m not your bro” as you reluctantly give him a fist bump in return. He is wearing a crumpled company t-shirt, shorts, sandals, and sunglasses, even though you’re indoors. His biceps and quadriceps suggest that he makes liberal use of the company gym.

“I feel like I bring real masculine energy to the team,” Chad boasts. His desk is raised to the highest setting so that everyone at the office can figuratively and literally see that he is above them. He cracks open a cold one. Someone from HR hears this, walks over, recognizes that it is Chad, and turns around.

“What’s your role on this team?” you inquire.

“Bro, I’m a full stack developer,” Chad smiles proudly and gestures outward with both hands, as if it was obvious. “I think of new features, then I build them. Today, I’m L4, but I have L7-9 vision. Everyone at Big Tech Co. knows me and how smart I am. In fact, I was the only one in the org who got promoted last cycle.” Chad takes a swig from his bottle.

“Also, bro, I fix outages in my spare time. In fact, last week there was a terrible bug in prod, elevated error rates and all that, some business metrics were down, blah blah blah. It was a super tricky bug because–”

Chad’s phone chimes.

“Sorry, bro. I’m late for my ping pong match.” He gives you a fist bump and hustles down the hallway.

Photo by Life Of Pix on Pexels.com

“It’s so great to meet you!” squeals the intern. She is beaming with delight. It is your last interview of the day, and you are beginning to feel tired.

“I’ve always wanted to be in a movie,” she remarks cheerfully. You exchange pleasantries and settle into the interview.

“Why did you decide to take an internship at Big Tech Co?” you ask.

“I heard it was really cool working here! And hopefully I can get a full-time job at Big Tech Co, too. I want to change the world!” she smiles.

You nod politely.

“What’s something you’ve learned during your internship?” you ask.

“Well, my host told me to create a small service to serve 5 terabytes of data. It turns out, there’s a lot that goes into starting up a new service! I sent a changelist to my host and he didn’t approve it. I said, ‘Why can’t I serve 5 terabytes?’ and my host was like, ‘Do you think our users are scum? You need integration tests.’ and then I said, ‘What’s wrong with my SliceFoxtrot integration tests?’ and then he said, ‘The SliceFoxtrot framework is deprecated. Use Bophades instead.’ So I did some research and it turns out that Bophades won’t be in general availability until Q4. But my internship ends in 3 weeks. So in the meantime my host told me to write some unit tests in Python for Chad’s project. But I don’t have access to the project design doc and Chad is always busy.” The intern shrugs.

“That must be incredibly frustrating,” you state with the tranquility of a Buddhist monk.

“Yeah! At least it’s a learning opportunity,” the intern continues. “I was talking to someone from HR and it sounds like there aren’t that many entry level positions open in the fall. Unless you have a PhD in AI.” She shrugs again and asks, “What do you think of AI?”

You are a little surprised because it is the first question that anyone has asked you all day.

“Me? Oh, I think it’s quite interesting,” you remark and wave your hand. “But it will never fully replace human creativity.”

“You don’t think so? Creativity is just about trying new things! Computers are really good at that.”

“Let’s stay on task,” You look down at your notebook. “Tell me about the project you’re most proud of.”

“Sure!” chirps the intern. “For my PhD thesis, I created an AI agent that generates memes. I used robot accounts to submit them to different social media platforms, and used user ratings as feedback for the model. It was pretty cool. One of my robot accounts had millions of followers, enough to get monetized. I earned enough to pay off most of my student loans before my accounts got shut down for violating the terms of service,” she shrugs again. “Then one of my professors recommended I apply for an internship at Big Tech Co. With a personal project like that, it was easy to get a recruiter’s attention.”

You spend the rest of the interview pleasantly listening to fascinating stories from the intern.

Photo by AlexKrengel on Flickr

The hot sun sets on Silicon Valley. You stumble back to your hotel after a long day at Big Tech Co’s main campus. You are mentally exhausted but happy that the interviews are done.

You meet your editor in the hotel’s bar for some passion fruit LaCroix. The two of you discuss how you’re going to craft the day’s footage into a coherent narrative for your documentary.

You open your laptop. Your editor suggests asking Big Tech Co’s AI assistant to write a first draft. You remember the intern’s advice, “Creativity is just about trying new things.” You are skeptical, but you try it anyway.

Within seconds, a script is being spit out in front of your eyes.

“Hmm,” you sip a cocktail of skepticism and curiosity. You read through the AI-generated script. The narrative is perfect. Your editor agrees. There is no more work to be done for the day.

You close your laptop, return to your hotel room, and struggle to fall asleep.

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

This software engineer retired at age 30. You won’t believe how he did it.

One of my friends recently retired at age 30. I was amazed.

How did he do it?

Why did he do it?

And most importantly, what is he going to do with all his newfound time?

To be honest, his investment strategy is pretty standard. I was more interested in the psychological aspect of retiring early, so I asked him more.

And more.

And more.

And I recognized that retiring that young requires some unique life choices. Not everyone is comfortable with them, and that’s okay!

I don’t think everyone can or should copy him. I certainly didn’t. But I thought my friend’s story was so unique that it needed to be shared with the world. He agreed to write the article below anonymously.

So, here it is. The secret has been revealed: How you can retire at age 30, as written by my friend.

Photo by Johan Armang on Pexels.com

A 5 Point Plan to Retiring at 30

When I was a kid, I didn’t understand why people wanted jobs. I’d hear news stories about people fighting for jobs and wonder, “Don’t adults always complain about having to go to work? Why do they want to spend one third of their time doing it? Why don’t they fight for stuff instead?” Obviously, there’s more nuance to these questions than I understood back then, but there’s still insight to be gained in trying to answer them.

With time, that line of questioning grew to form a core tenant of my personality. I don’t see work as something people should have to do, in and of itself. There’s no virtue in being busy. To me, work is a means to an end. It’s a way to satisfy the improbable physical requirements of staying alive, in a universe that doesn’t care if you manage to. This isn’t to say that everyone is owed material comfort, only that we should invest in producing those comforts as efficiently as possible, with a minimum of ongoing work. That way, everyone could spend a lot more of their lives on whatever makes them happy.

As things stand, we’re a long way from that kind of world. But by the time I finished school, it seemed realistic that I myself could live by those ideals. With good luck, a minimalist outlook, and (yes) some work, it would be possible to recover a huge fraction of my life to spend however I wanted. The result, I hoped, would be to maximize my total happiness over time.

Years later, all those pieces fell into place, and I decided to retire at 30. This approach wasn’t really planned, so much as felt out along the way, and could definitely be optimized. It’s also not something I’d suggest to everyone, since it requires lifestyle choices that might not match your needs. Finally, this is a lifelong plan that’s less than halfway through, so I can’t promise you it’s going to succeed.

And now, to stop burying the lede, here’s my personal 5 point plan to retiring at 30, and hopefully maximizing my cumulative happiness:

  1. Be a SWE in Big Tech for 8.5 years
  2. Be a non-US-citizen willing to return home
  3. Never ever have children
  4. Live like a person with ¼ of your pay
  5. Die before age ruins your quality-of-life

Be a SWE in Big Tech for 8.5 years

Retiring takes money, ideally a lot of it. The way I happened to get that money was by joining a Big Tech company straight out of school. This wasn’t a crazy startup scheme where I got a bunch of stock options for joining and then the company had a meteoric IPO. Instead, I interviewed at an established company and was hired into an entry-level software engineer position.

Some of this story is based on skill (I’m a pretty good developer!) but it would be dishonest to ignore luck. I graduated school in 2016, which was a booming time for the industry. Fortunes were being made, demand for talent was high, and everyone was learning to code. It was, in retrospect, a relatively easy time to get an offer and start saving. This was something professors definitely tried to impress on us, but not something my foolish teenage-self took to heart.

One detail in particular really convinces me that my outcome was a product of the times: how I got the interview. During our last year of university, a friend of mine and I were chatting before a lecture. This friend mentioned he’d been contacted by a recruiter and that the recruiter had asked if there were any other classmates they should reach out to. Offhandedly, I mentioned I was interested and asked my friend to pass my name along. That was, to my recollection, all the thought I gave it, until the recruiter actually did contact me to start the formal interview process.

To this day, I wonder how my life would be different if that chance conversation had gone any other way. What if my friend hadn’t mentioned the recruiter? What if I hadn’t suggested myself? What if my suggestion had been ignored or forgotten? Given the environment, things would likely have followed a similar course regardless, considering how aggressively new-grads were being pursued. Regardless, I still pause at the possibility that my whole life-trajectory hinged on this one accident, which I would never have recognized in the moment.

But to return to the larger picture, landing a Big Tech job provided a lot of money in a relatively accessible, low stakes way. Over 8.5 years, I was able to put away about 2 million USD, following a pretty unremarkable career path. I didn’t play office politics, never had to swallow (or even face) ethical dilemmas, and was promoted exactly twice.

This point of the plan obviously changes as industries rise and fall, and I understand not everyone is cut out to do programming. However, this was a key part of my plan, and tech is more than writing code. I believe a lot of people reading this could replicate the approach.

Be a non-US-citizen willing to return home

I’m Canadian and Big Tech was in Silicon Valley. The US is an expensive place to live.

Housing, healthcare, education, and daily staples all cost an inordinate amount in the United States, especially in areas with tech jobs. Canada certainly isn’t cheap either, but it has a lot of cost advantages. Most countries are less expensive in several of these categories.

For example, in London, Ontario (a.k.a. Fake London), there are multiple neighborhoods with homes under 500k USD. These range from new construction to 19th century, high-rise to detached, 1-bedroom to 4. This is a city of nearly a half million residents, with a major university, and options for arts, culture, and recreation.

At that same university, my engineering degree (admittedly a few years ago now) cost about 35k USD. This was for a competitive program, recognized anywhere in the world. It was possible because of government support for education (and my parents’ foresight).

Similar government programs make healthcare effectively free to all residents (although the Ford provincial government is trying to undermine this). Yes, the funding comes from taxes. And yes, not every procedure is covered. But in general, medical bills are not something Canadians think about.

My point here is that, by moving to another country, you can reduce your expenses without reducing quality of life. I did this by returning to Canada. Relocating is easiest if you’re already a citizen somewhere else (as in my case), but US-citizens can pursue emigration.

Never ever have children

This one is exactly what is says on the tin. Having kids makes retirement much harder.

For starters, kids are expensive. I estimate (unverified!) each one adds 20-30% to your cost of living. Housing, food, transportation, entertainment. They’re a whole tiny human that needs most of the same stuff as you, plus a bunch of extras specifically because they’re still developing.

Children also create second-order costs. For most couples, there’s a decision between daycare vs homemaking, which pauses someone’s career and income (although if you’re following this plan, point #1 makes the choice easy). Thinking more broadly, grocery runs suddenly “need a minivan”, some neighborhoods become “too colourful”, and international moves get postponed until “next school year”. All of these are fair compromises, but they unquestionably create retirement hurdles.

For me specifically, having kids is a non-issue. I don’t have any desire to be a parent, so their absence isn’t a sacrifice. I’m also gay, so there’s no way I’m getting a kid accidentally. And as a bonus, nobody expects children or grandchildren from me; I’m already way off script.

Lots of people get incomparable joy from raising kids. My goal here isn’t to deprive anyone who wants that experience. Simply, for my plan, and anyone else following along, you’ll get a lot further without a stroller.

Live like a person with ¼ of your pay

Once you get some money, the next critical step is keeping it. It’s alarmingly easy to increase spending in proportion with income (a.k.a. lifestyle inflation). If you’re incautious, you can find yourself treading financial water, never getting closer to your retirement goal.

Fortunately, the solution is simple, at least in theory. Remember that most people never have a Big Tech income, but they’re not living in the gutter. They have healthy food, warm homes, fulfilling relationships, and the occasional luxury. Copy them! With a much higher income, you can afford all of that, and also save a huge amount for the future.

Looking at expenses over my working life, I seem to have spent about ¼ of my post-tax earnings each year. For context, this roughly matches the take home pay of a dental hygienist. Because the US income tax brackets are progressive, we can approximate the additional tax I was paying as covering a hygienist’s 401(k) contributions, which would finance a standard retirement. This is the rough calculation that provides the phrasing for point #4.

Budgeting this way was sort of like getting 4 years of living for every 1 year of work. Working at Big Tech for 8.5 years mirrors a respectable 34 year career cleaning teeth.

The approach I’m outlining here also depends on an idea I’ll call “the cost-quality curve”. Basically, it’s the observation that luxurious things are much more expensive than nice-enough things. This relationship seems to be exponential, such that a one step increase in quality entails a multiplication in price. Think of when you’ve experienced this with plane tickets, fancy restaurants, or designer clothes. The trick is to live at the “sweet spot” along the cost-quality curve, where quality is reasonable but price hasn’t exploded.

To be clear, I’m not advocating that everyone can or should save 75% of their income, or that dental hygienists are the Platonic ideal of cash flow. These are numbers and comparisons that worked for me; your standards, or timeline could be different. However, if you are able to adhere the other steps, this one makes them significantly more powerful. Remember, most people are mostly happy!

Die before age ruins your quality-of-life

This is definitely the most contentious point of the plan. Whenever I talk about it, I have to agonize over the phrasing, to prevent people from assuming I’m crazy or becoming adversarial. I think it’s because it strikes at their mortal terror: the cognitive dissonance of knowing everyone dies but not believing it will happen to you.

To be brief, I plan to die much younger than most people would expect to. This isn’t an abstract hope, but a premeditation. The particular age I have in mind isn’t important (and I think it distracts from the overall presentation), but it’s certainly less than my maximum possible age. 

The idea described here is very similar to the concept of “memento mori”, a Latin phrase that translates to something like “remember you will die”. I choose to interpret this as an invitation to “eat, drink, and be merry”, rather than a reminder to “atone for your outstanding sins”. I also think it would make a great tattoo, if I actually spoke Latin.

Here are my reasons for planning my own death, sorted by significance, and which I hope you’ll give a fair hearing.

  1. Being old seems awful. Your body fails. Your mind fails. There’s a litany of pills and tests, aches and pains. Quality-of-life goes downhill fast. I don’t especially want to live through that, and I certainly don’t want to mortgage my youth to get old-age as the reward.
  2. Becoming elderly isn’t guaranteed. Many people die young, at least younger than they expected. Anyone can be hit by a truck. Anyone can get cancer. I would prefer to plan my death, and race that deadline to accomplish my dreams, rather than be blindsided while daydreaming.
  3. When you plan your death, you control your maximum possible age. It becomes easier to predict how much money you’ll need, and the amount becomes adjustable. It’s morbid, but it’s something every financial planner asks about.
  4. Old-age is often expensive. As your body fails, medical costs can skyrocket (especially if you don’t follow point #2). Planning to die before a serious illness, rather than because of it, means you can ignore it in your budget.
  5. What will the world be like when you’re finally old? Will it be a world you want to live in? As a global civilization, we face a lot of environmental challenges, which we can’t make good predictions about. Simultaneously, we face a lot of political challenges, which based on historical evidence, won’t be resolved comfortably. I’m hesitant to stake too much on any plan that pays off decades from now.

There are some other minor considerations, like getting a living funeral, but the main ones are presented above. If you take nothing else from reading this plan, I really hope you can engage with this particular point, and think through what a “good” death means to you.

I’m not saying everyone should use euthanasia, and I’m not saying that there’s a single “correct” age for everyone to die. What I’m saying is that these things are right for me, and other people could benefit from them too. Planning how I’ll die helped me plan how to live.

Conclusion

That’s it. That’s the entire plan. If you stick to these 5 simple steps, you too can retire at 30!

With my abundant spare time, I’m not entirely sure how to spend it, but so far it’s been a lovely vacation. I’ve taken up baking, running, reading, and overall spent many evenings with old friends. If this were the rest of my days, I’m not sure I could complain.

Of course, I was told many times “you retire to something, not from something”, so I have ideas for longer term plans. In particular, I’m considering grad school and politics. My doctoral friends all say the worst thing about getting a PhD is being broke, which appears to be a non-issue. Alternatively, I feel like I could make a real difference as mayor of Fake London. Who knows!

If you’re looking for steps on what to do with your free time, I’m afraid you’re reading the wrong instructions. From here on out, this is my life, nobody else’s!


That was wonderful to hear. I wish my friend the best in the next stage of his life.

And I hope you, dear reader, take some time to contemplate your own life and career. Whether your path is conventional or not, I hope it brings you everything you wished for.


Opinions expressed in this article do not necessarily reflect the opinions of Sheldon “Don” Sandbekkhaug.

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

I thought I was about to lose my job in Google Search, and then this happened

“So, this is how I lose my team. Or my job.” I thought to myself on a cold, January night.

My team’s responsibilities had just been shipped overseas in a reorg. For the last three years, I had been leading the reliability workstream for the Google Search App on iOS. And suddenly, I wasn’t.

We had been a small crew. We were ambitious and scrappy. We had no product manager, no program manager, and no UX designer. Technically, this wasn’t even a real team. But everyone knew that we were. We were proud of having accomplished more than what any of us could do alone.

Over those years, I had organically grown into a TL (team lead). I simply started with a small problem and naturally expanded it to include new domains that we later labeled “reliability”. I was then one writing design docs, the one negotiating OKRs, and the one organizing multi-team summits. I was even promoted for leading this workstream! The team and I felt inseparable. The mechanics of it all flowed like a river through my laptop.

Without me, what would happen to the reliability team? Would they be successful? And what would *I* do afterwards? Would I still be a software engineer working on Google Search, or was this finally my time to be laid off?

It took me a year of searching to answer these questions.

The Storm

When the reorg hit, my old team was shuffled around. Everyone except me was reassigned to other projects.

My immediate responsibility was to train the new team, who worked in another country. They had little experience in this space, so leadership was unsure how they would perform.

Fortunately, while I was the TL, I had been continually removing bottlenecks in the system. I had wanted to make myself obsolete. My goal was to spend more time on strategic, big-picture ideas and less time than responding to alerts and random bugs.

Over the next few months, I met with the new team online. I answered their questions efficiently. I plugged them into the existing systems that I had carefully set up. And, I traveled to their office for 2 weeks to run some in-person training sessions and I had more fun than I expected.

The new team was enthusiastic about taking on reliability projects. No outages happened and everyone was happy.

Well, everyone except me. I wasn’t sure what was going to happen next.

“So, what do I do now?” I thought. “Am I about to be laid off?

What next?

Just to be safe, I made a list of potential teams to join (including staying with my old org). No idea was too crazy not to be considered.

After a lot of exploration, I settled on a Google.org fellowship. This was a 6-month rotation where a team of Googlers come together to solve a problem with a nonprofit.

At this point, a break from my routine sounded great. It would be an opportunity to learn more about web development, get some experience outside the Google bubble, and maybe even make society a little bit better.

Perhaps more importantly, I wanted some time to figure out what I would do long-term. 

So, I secured my manager’s approval and I was off. (Also, having this approval was a good sign that I was not about to lose my job. That was a relief.)

The Fellowship

For my fellowship, I decided to work on CiviForm. The way I explained it to friends was like this.

Me: You know how government websites suck?

My friend: Yeah

Me: What if they didn’t suck?

My friend: 😯

In other words, CiviForm is an open source project that local governments can use to let residents apply for programs online. You can watch a 90-second video about it here.

My main project in CiviForm was to revamp the applicant-facing website. The UX team was churning out mocks every week, and I needed to implement them.

Additionally, we had a technical challenge. The old frontend was written in J2HTML because the original engineers were all backend developers that had no frontend experience whatsoever. We wanted to write all the new parts in Thymeleaf. (And I can assure you that Thymeleaf is much better than J2HTML.) It was a double migration, and it introduced some extra complexity.

After 6 months, I had  I closed 78 issues and merged 130 pull requests. I was genuinely proud of what I accomplished.

I plan to write another article with more surprises from my time working on CiviForm. If you subscribe to this blog, keep an eye in your inbox. I’ll add a link here when it’s published.

Happily Ever After?

As the end of my fellowship approached, I thought a lot about what I would do next. Should I search for a new team within Google? Should I look for a new job?

With the help of a mentor, I made a list of all the things that I was looking for in a new role. And I realized, my old org had almost everything I wanted.

I decided to go back to the Google Search App on iOS. Specifically, the platform team. I like the people there, and I think the technical infrastructure is great. I really enjoy making tools for developers because, hey, I’m a developer. I know what developers want. I want to make their lives easier.

It feels a bit anticlimactic. But, I wasn’t laid off. And my current team has plenty of interesting things to work on.

Months later, I’ve settled into my new, old org. Everything is beautiful.

Well, until the next reorg.

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

8 Things I Learned During 8 Years at Google

This year marks my 8th year working at Google. Throughout that time, I’ve been on three different teams and met a ton of smart people.

I simultaneously feel like I’ve learned a ton, yet, I have so much more to learn.

The lessons I’ve learned mostly apply at large tech companies, but many of the principles apply across the tech industry.

Anyways, enough with the intro. Let’s get into it.

1. Leadership is harder than it looks

When you’re fresh out of college, you assume that everyone else knows what they’re doing, including your manager.

Wrong.

My managers have always aimed to be good at their job. But, they’re also human. They’re caught between multiple projects and a large number of people with competing interests. They have limited energy and attention. They don’t have the same information as me or any of their other reports.

So, sometimes they make mistakes.

Furthermore, I’ve learned that you don’t have to be a manager to be a leader.

Imagine proposing an API change, convincing a senior engineer to approve the change, and getting a partner team to implement one of its dependencies. That’s leadership.

In that situation, you might have only spent 20% of your time writing code. Years ago, I would have been shocked if that happened to me. That brings me to my second lesson…

2. Your job is to solve problems, not to write code

During my first year in the software industry, I thought my job was right as much code as possible. I’m a software engineer, so that’s my job, right?

My job is to solve problems. If the problem can be solved with a smaller amount of code, that solution is probably better.

If the problem can be solved with a configuration file change, that’s even better.

If we can avoid doing any work at all, that’s the best solution.

I came to realize it’s worthwhile to do other tasks like meet with other teams, write documentation, and track project statuses in spreadsheets.

I went from “How do I solve this problem in Objective-C?”

To

“How do I solve this problem?”

To

Do I need to solve this problem at all? And if so, can I do it in a generic way that requires as little effort as possible?”

I learned to tell my manager about the problems I was solving in our 1:1s. Sometimes it was a status report. Other times, I asked for his advice. This brings me to my next lesson…

3. 1:1s are useful (when done properly)

When I first started my job at Google, I thought that 1:1s were overhead where you have to talk to your manager. You provide some status updates, go through the motions, blah blah blah.

When done right, 1:1’s are actually a way to turbocharge your career development. I love using 1:1s to influence my manager and to understand how I can better serve the team.

I go into this in a lot more detail in How to Stop Having Sucky 1:1s. Check it out and tell me what you think.

In addition to one-on-ones being a waste of time, I also thought this other thing was equally useless…

Invited to another OKR sync? Boring…
Photo by Andrea Piacquadio on Pexels.com

4. OKRs are useful (when done properly)

OKRs are “Objectives and Key Results”. Basically, it’s a way of summarizing quarterly or annual planning. Here are some generic examples:

  • Foo Service has improved availability by 0.5%.
  • Foo Service has reduced latency by 10%.
  • 40% of clients have migrated from Bar Service to Foo Service.

I used to think OKRs were a waste of time. This was because my first few teams at Google had no relation to our broader organizational OKRs. (Which was part of their downfall.) So my org’s OKRs had no relation to my day-to-day work.

But when done properly, OKRs are extremely useful. OKRs are used to focus the team on the most important pieces of work. If something’s not on the OKRs, it can probably be safely dropped (which also has the side effect of making someone mad. But that’s beside my point. See lesson #8 below.)

Of course, I don’t recommend sticking to a plan for the sake of sticking to a plan. OKRs are supposed to give you enough flexibility to achieve the goal without describing exactly “how”. For instance, if your OKR is “Foo Service has reduced latency by 10%” You might make a lot of small incremental improvements. Or, you might launch one big change that improves latency by 10%.

The other problem with OKRs is that sometimes your original OKRs no longer apply halfway through the quarter. For instance, you might start by reducing latency, and then get preempted by DMA. Now, latency is no longer an issue. Such is life.

Speaking of DMA and all its logging messiness, that reminds me of my next lesson…

5. Logging, metrics, alerting, and testing are way more important than I thought 

I used to think coding was the main part of software development. But there’s a lot of stuff around feature development that’s super important, too.

Logging and metrics are important because you need to know how users are using your feature. You need to know how your future is performing (e.g. availability, latency, SLOs, resource usage).

Alerting is important because you want to know when something breaks. It’s even better when you get to know exactly what change caused the breakage.

Finally, testing is important because it prevents bugs from happening in the first place. I wish more CS programs required students to take classes on writing good tests. Blanketing the codebase in unit tests is necessary but not sufficient.

This next lesson is completely unrelated to testing.

6. Dress for Success

The common Hollywood image of a software developer is a guy with a scraggly beard wearing a sweatshirt and gym shorts.

However…

Professionals have standards.

You’ve probably heard of the study where a group of doctors were divided into two smaller groups.

The first group wore white coats. They looked like professionals.

The second group were plain clothes.

Later, patients were asked to rate the competence of their doctors. The doctors who wore white coats received higher scores than the doctors who wore plain clothes.

This is a strange quirk of human psychology. People shouldn’t care how you look, but they do. You could be the next Alan Turing, but if you dress sloppy, people might not take you seriously, especially if you’re young or from an underrepresented group in computer science

So, I regularly wear clean slacks and a button up shirt during business hours. It doesn’t take longer than putting on a wrinkly t-shirt and basketball shorts. Maybe it doesn’t make a difference. But I look good, and it helps people see me as a professional. And when they see me as a professional, we act like professionals, and we treat each other like professionals.

And, if you work at Google long enough, you become a professional at this next thing: handling reorgs.

7. Reorgs can make or break your job (in the short term)

There are two types of reorgs.

The first type doesn’t affect you at all.

The second type obliterates your team.

You have no control over when or how reorgs happen. However, you can sometimes use them to your advantage.

I used to work on a product that leadership didn’t care about. For years, I struggled to convince partner teams to build features for us. No matter how hard I pushed, the rock didn’t move.

One day, we were unexpectedly reorged into another team. The team dealt with boatloads of uncertainty for months as we struggled to find our new identity and meaningful work. Several members quit or transferred to other teams (it was also COVID times, which was just weird in general).

But after the dust settled, I made the best of my situation. The new team had opportunities for leadership, learning, and growth. I was handed one task and turned it into a larger effort. Then I created a larger workstream to find and solve an entirely new class of problems. I liked my new project and eventually, I was promoted.

In a big tech company, I don’t think you should be personally attached to what you work on. Take pride in what you do, but don’t tie your self-worth to a particular project. Large organizations only give the appearance of stability, not real stability.

It’s such a strange paradox: despite being so secretly volatile, large organizations can also be incredibly bureaucratic and unmovable. Which brings me to my last lesson…

Trying to get another team to commit to a joint project is sometimes like talking to a brick wall.

8. Organizational challenges are (often) harder to solve than technical challenges

Technical challenges are easy. You can spend time writing code. You can throw more resources at a problem. Eventually, it gets solved.

With humans, things are a bit trickier. A very common scenario is this:

  1. Imagine you use a tool called Foo.
  2. Foo is owned by another team.
  3. You have a small feature request for the Foo team. Other teams would benefit from this feature if it was implemented in a generic way.
  4. You estimate it would take 3 months of work for you to build it. But, since the Foo team knows the system well, they could add it in just 3 weeks.
  5. You ask the Foo team to add this feature. They decline because it’s not on their roadmap or OKRs.
  6. You ask how you could get the feature on their roadmap or OKRs. They say they are only accepting feature requests from P0 client teams.
  7. You are not on a P0 client team. You sigh and move on to another task or cobble together a hacky script that kinda sorta implements the feature in a very specific way.
  8. No one else gets to benefit from your work.

Of course, challenges like this are just part of life at a big tech company.


I hope this article shed some more light on career development in tech. I’ll be reducing my frequency of publishing articles through the rest of this year.

In the meantime, make it happen.

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

Layoffs at Big Tech Co. (Humor)

You are an engineer at Big Tech Co. The company is continuing its annual tradition of layoffs.

“I’m really proud of all the work that you’ve done,” the CEO writes in an email. “The last few months have seen a series of amazing launches. We’re pulling in record profits. Also, we’ve made the very difficult decision to terminate some of our colleagues.”

Your coworker comes over to your desk.

“Did you see the email?” she asks.

You nod.

“How are you feeling?”

“I’m fine,” you say. She doesn’t believe you but she doesn’t say anything else.

You open your laptop and pretend to work.

Photo by Pixabay on Pexels.com

You are on an internal infrastructure team. You meet with another internal infrastructure team. You learn that their manager lost his job. You feel sad.

You consider starting to look for a new job. You think about interview questions and feel a deep sense of imposter syndrome.

“Do you think our team will be affected by the layoffs?” asks your younger coworker. You shrug and stare into the distance like Jay Gatsby staring at a lantern across the bay, except you’re staring at the MK just down the hall.

“We are a data-driven company,” says a PM. Data-informed, you think to yourself.

Saturday morning. You are at a public cafe. You overhear some people talking about the tech layoffs. “I don’t feel bad for them,” they say. “Most of those kids have never worked a day in their lives.”

You have a 1:1 with your manager. She asks if you have any questions about the layoffs. You pause for a moment. “No,” you say. You’re not sure what to ask.

Photo by fauxels on Pexels.com

“How are you doing?” asks Jimmy. An innocuous question. “I’m fine,” you say. He does not believe you. “Great,” he smiles sheepishly. “Perhaps you can review my design doc today?”

“You should feel lucky you have a job,” says your retired neighbor. He has not been on a job hunt since the Carter administration. You nod. “I am very lucky,” you reply.

A recruiter messages you on LinkedIn. You write a response, then delete it.

You meet with another internal infrastructure team. You ask about project Zebra, one of their P0 OKRs. They say it’s canceled. “Why?” you ask. “Not enough resources,” they reply. “I understand,” you say. You do not understand.

You open your IDE. You stare at the code. You open the email website. You stare at your emails. You switch back to the IDE.

“At least it’s not like covid times,” they say. You shake your head. “It’s not.”

You message your coworker to see if he wants to get lunch today. You see that he’s been laid off. You feel sad.

You hear rumors that the office in Bangalore is expanding while hiring is frozen in California. “I am not worried,” you say. Not much, anyway.

You see a snarky meme about the layoffs in a group chat. You laugh out loud but you’re secretly crying on the inside.

You have a team meeting with your skip-level manager. He asks if you have any questions about the layoffs. You pause for a moment. You shake your head. You’re not sure what to ask.

Photo by cottonbro studio on Pexels.com

Chad calls you from Costa Rica. “How are you doing, champ?” “I’m fine,” you say. “That’s the spirit,” Chad replies.

“A 0% percent raise is a good thing,” says your manager. You sigh. As soon as you leave the meeting, you crumple the comp letter and toss it in the recycling bin.

You see an email that says, “Sign up to host interns this summer!” Excited, you start filling out the application. The form says, “What months are you available to host interns?” The smile runs away from your face. You do not know if you’ll be employed this summer. You delete your application.

You review your resume. You haven’t updated it in four years. You make a halfhearted attempt to bring it up to date.

“Want to go to Mexico for spring break?” you ask your friend. “Sure,” he says. He pauses. “But shouldn’t you wait until you know you have a job?”

You have an org-wide town hall with your director. They ask if anyone has questions about the layoffs. You pause for a moment. You do not say anything. You’re not sure what to ask.

Photo by Luis Quintero on Pexels.com

You wonder if today will be your last day in the office.

“Was anyone on your team affected by the layoffs?” your colleague asks. You nod. She sighs. “I thought we were better than this.”

The IK4 migration is blocked again. “The engineer leading the IK4 migration for my team was laid off,” says the PgM. You nod. “I understand.”

You meet with your mentor. “How can I help?” she asks. You pause for a moment and look down at your shoes. “I don’t know.”

You open your laptop. You sigh.

You have lunch with Humayun and Jesse. You discover all of you got the same, standard rating in performance reviews. “Hmm,” you all say.

Friday evening. You’re at a party. You’re talking with someone and you’re having a good time. “What do you do?” they ask. “I work at Big Tech Co,” you respond. “Oh,” they say, and excuse themselves. You stand there, alone.

The CEO takes questions from the company as a whole. Someone asks, “Why?” The CEO responds but does not answer the question.

You log into your computer, once again. You scan your email and nothing says that you’ve been laid off. Yet.

Somehow, you are still an engineer at Big Tech Co.

Posted in Other | Tagged , , | 3 Comments