My Time at Snap

Marko Tupper
Oct 1 · 36 min read

I spent the last year and a half working as a software engineer for Snap, Inc.. The experience was…unique, if nothing else. I was tempted to write a series of short stories about my more interesting experiences there, but I decided to write something a little lengthier to give the full context around everything that happened while I was there. I realize you likely didn’t come here to read a novel, so I’m going to try to break things up as best I can, and I’ll throw a tl;dr at the end of each section for your skimming pleasure.

The Offer

Let’s start at the very beginning, how I ended up there in the first place. I started my career at Facebook back in 2012, and after five and a half years there I was looking for somewhere new to work in the LA area. I had toyed with the idea of leaving about six months earlier, and actually completed a phone screen with Snap.

The employee who interviewed me over the phone told me when I asked that they thought work-life balance at the office was pretty okay, because they had been consistently working weekends but now that some of the rush was over they were only doing so frequently, instead of always. That scared me right off, and I told the recruiter at the time that I appreciated the request for an onsite but I’d decided that it wasn’t the right time for me to make a move.

Fast forward about half a year, and I was actively looking for a new place to work. I still remembered what I’d heard from my interviewer at Snap, but the company’s stock at the time had fallen well off of its IPO price, and I decided it would be worth taking another look at. Maybe I could get a high equity offer, and if the stock turned around I’d stand to make a large sum of money. If it didn’t, I could quit in a year or two and go somewhere more stable.

So I emailed the recruiter back, set up onsites, and went through with a full round of interviews. I ended up getting an offer with an absolutely jaw-dropping equity component. It was almost twice as much as what Google was offering. An amount that, if the stock managed to maintain its price at the time, would have been life-changing. If the stock turned around and climbed significantly, I’d be looking at more money than I’d ever imagined making.

So I decided to make this the one big gamble of my career. I’d never been one for startups, and when else would I get a chance to vest this kind of an equity grant at a publicly traded company? The stock vested on a 10–20–30–40 schedule (you get 10% of it after your first year, then 20% the second, and so on), so I figured however unpleasant the environment might be, I could stick it out for four years to vest my stock before moving on to something less stressful.

tl;dr — I knew what I was getting myself into. There were red flags, but I chose to ignore them for the sake of a huge equity offer.

Council

Like most companies, Snap started my tenure with scheduled onboarding. Unlike most companies, the first day of that onboarding consisted solely of “council,” an unusual practice that you may have heard rumors about before. Let me try to explain it in some detail.

First of all, I should distinguish that “council,” the thing that Snap employees are invited to on a regular basis, is not the same as the “council trip” that employees start their tenure with. This was a one-off event, where they put all the new hires for that particular week on a bus and shipped us up to Malibu to a very lush, very well-furnished, and, I can only assume, very expensive “foundation” for the day.

For this first day, try to imagine a film you’ve seen where they make fun of a corporate team-building retreat. What you’ve just imagined should be very close in spirit to what we experienced. We opened up with a round of council-the-activity (the thing that employees are invited to do regularly in the office), wherein everyone sat in a big circle on these sort of pseudo-chairs, the kind of not-quite-furniture that’s carefully designed to fill the telling-you-where-to-sit role of a chair, but not the providing-support-for-your-back role.

We would pass an object around the circle, and as the object came to each person in turn we’d answer some kind of prompt. Basic information about ourselves, our hobbies, foundational experiences, that sort of thing. The kind of activity that starts out simple and straightforward, and gradually draws you into divulging more intimate and sensitive details about yourself. Throughout the day we went through several of these sessions, sometimes in one large group, other times broken up into smaller groups.

They filled the rest of the day with other generic team-building exercises, but always with a vaguely spiritual vibe. They broke us up into pairs and sent us on walks to learn about each other’s lives. They had us gather in a circle and carry out an improv with an imaginary ball. We painted small circles that apparently got collected into some giant composite art piece at HQ. And eventually, once we were deemed sufficiently bonded, they sent us back to the office (a bit late, I might add) and finally let us go home.

The next day we had a more traditional set of onboarding sessions. We set up our computers and phones and our accounts with all the company services and learned what we were and weren’t supposed to do, and somehow the bizarre semi-spiritual experience we’d all been made to share the day before just sort of faded into the background. Council (just the sitting-in-a-circle and talking activity) is offered on a regular cadence for all Snap employees, but I never went back to it.

tl:dr — Snap starts every employee’s onboarding off with some real hippy type of shit. The aforementioned hippy shit can continue into your regular employment if you so desire, which I did not.

The First Months

After onboarding, I met my new manager and team. I was joining the developer tools team, but that team was huge: my manager had over 20 direct reports. So of course there were multiple sub-teams, and the one I got assigned to had, when I started, two other engineers on it.

Our sub-team didn’t really have a clear focus. The main thrust of our work was related to support tools (which, even though they didn’t really fit the team charter, fell to our team for historical reasons), handling bug reports and debugging. Unfortunately, we had far more projects to work on than we had people to work on them, so each of us ended up working on multiple projects, mostly just keeping things running in maintenance mode.

One of the engineers on the team was the author of and essentially the only maintainer of the support site, so my first tasks moved me gradually towards becoming the new sole maintainer of that site. Later on, I would take over the support chat system from its original author as well.

The other engineers on the team were nice people, but unfortunately the workload we had mostly kept us working separately on our own tasks with little room for interaction. It wasn’t uncommon, for the first part of my time at Snap, to get up in the morning, drive to the office, go through the work-day in the same room as two other people but rarely speaking to each other, and then drive home without having done anything I couldn’t have done from my home office. Half the time when I did have meetings they were with other buildings over video conference anyways.

While the work wasn’t overly stressful, it wasn’t particularly engaging either, and the everyone-in-their-own-lane approach that our sub-team took made for a profoundly isolating experience. It didn’t help that our manager was overloaded with other team members and projects, and nothing I worked on garnered much in the way of attention from management. For the most part, I only saw my manager for weekly one-on-one meetings, and in between those I found it difficult to even get responses to questions.

tl;dr — For the first ~1/2 year at Snap, I was mostly isolated on a handful of projects where I became the sole maintainer, and rarely got to interact much with other engineers or my manager.

The Phantom Resident

When I first started at Snap, one big detail stood out to me: the odd physical layout of the office. The back-story is that Snap started out in a house on Venice Beach. As the company grew, the house couldn’t hold the ever-increasing number of employees, so they started buying offices…and houses…and condos. Venice Beach is decidedly not cut out for a large-scale tech office, and so Snap found itself essentially buying any piece of real estate it could lay hands on to maintain its growth.

At the time I joined, the headquarters building in Venice was about a half of a mile away from the office where I worked. If you knew where all of Snap’s buildings were (and most people, even most employees, didn’t), you could walk around miles of Venice Beach streets pointing out unmarked office after unmarked office as you went along. A seemingly empty storefront here, a nondescript house there, the top level of an apartment building over that way.

The particular building I worked in was a set of beach-front condos on Speedway. The condo my sub-team worked out of had originally held us on the second floor and a larger team on the first floor. However, at the time Snap was in the process of moving its offices to Santa Monica, and the team on the first floor had already moved out shortly before I arrived. That left just the three of us working on the second floor of an otherwise empty luxury condominium.

The empty space contributed to the sense of isolation from the rest of the company, but it was also just bizarre to work in. I found myself spending eight or more hours a day in this excessively luxurious building that I could never in my life afford to live in. The kitchen was spacious, decked out in high-end appliances and beautifully done tile, and completely unused aside from the fridge. The upstairs bathroom was bigger than most bedrooms, and came complete with a shower that could spray water from at least five nozzles, one of which was mounted in the ceiling.

This condo, of course, was not zoned for commercial use. It was in some kind of mixed zone, intended for professionals who lived in and worked out of the units, which led to what I called the phantom resident. Our building, as well as the other condos in the complex, had a single “conference room” in it, which was in fact a bedroom. When I say that it was a bedroom, I don’t just mean that it would be identified as a bedroom on the condo’s floor plan, I mean that this room had a fully made up bed crammed into it next to the conference table and video conferencing unit.

For months I assumed this was some kind of weird left-over from the previous occupant, but I later found out that the bed was there to convince building inspectors that someone lived in the unit, which was a requirement of the mixed-use zoning. I still don’t know for certain whether this supposed resident existed, but I came into work fairly early and other members of my team worked fairly late, and none of us had ever seen a non-employee enter the building. I later heard from a coworker that there were designated employees who would show up as “residents” for inspections, but that may or may not have been a joke.

tl;dr — When I worked for Snap in Venice, we occupied a beach-front condominium with a likely fictitious resident who supposedly slept in our “conference room” to meet zoning requirements.

Moving to Santa Monica and ADA Semi-Compliance

The situation in Venice was unsustainable, so Snap gradually moved most of the company to an office park in Santa Monica. Eventually my team’s turn came, and one day I showed up to our new, sprawling open-office setup. For the most part, there’s not much to say about the Santa Monica offices. They’re very much like typical big tech company offices, lots of engineers crammed in as close to each other as possible, microkitchens with snacks, mildly inadequate numbers of bathrooms. The usual.

One aspect of the new offices, however, triggered some more trouble with building inspectors. In each office, Snap installed a number of “phone booths.” These were basically what they sound like. Self-contained, insulated chambers with a seat and a small ledge to set things on where you could go to take calls or participate in video conferences without disturbing anyone. The phone booths were a hit, but they had one problem.

They were small. Very small. An able-bodied person could climb into and out of one easily enough, but they couldn’t even begin to fit a wheelchair, nor would you be able to get one in if they could given that there was no ramp to bridge the three or four inches between the floor and the bottom of the phone booth. One day, a building inspector from the city came along and informed facilities that no, you can’t simply install a bunch of wholly inaccessible miniature rooms. The phone booths needed to be closed until Snap could provide an accessible version.

In response, facilities went ahead and printed up enough copies of an “Out of Order” sign to stick to the front of each and every phone booth in every office. Sounds like a reasonable response, right? Well, almost. The signs didn’t just say that the phone booths were out of order, they said specifically that the booths were out of order because the city was requiring them to be replaced with accessible versions.

Naturally, with that detail added, no one stopped using the phone booths. Walking through the office hallways, you would see booth after booth, each one with an “out of order” sign on the front of the glass, behind which would be a person taking a phone call or using their laptop. This behavior was not discouraged in any way.

Quite the opposite, a day or two later facilities sent out an email to all Santa Monica based employees clarifying the situation. They explained that while they believed that the phone booths shouldn’t count as an ADA violation because wheel chair users could use conference rooms instead (this was a laughable excuse, given that booking a conference room on short notice was a near impossibility during the day and would often entail a 15–20 minute walk to the nearest building with an open room, if there were any at all), they had agreed to mark the booths as out of order until accessible replacements could be acquired. Notably absent was any suggestion that you shouldn’t use them, or that they would be removed until the company came into compliance. If the signs were a wink and a nudge, the email was the closest you could get to “who cares, just go ahead and use them” without actually using those words.

So the phone booths remained, with out of order signs that no one paid any attention to, for over a month. The company did finally bring in some bigger, accessible booths with ramps, but in the meantime they made no effort to enforce the “out of order” status of the existing booths.

tldr — The Snap Santa Monica offices were pretty standard big tech office fare. Miniature “phone booth” meeting rooms raised the ire of building inspectors over ADA compliance, and the company implicitly encouraged employees to continue using the non-compliant facilities while replacements were acquired.

The John Months

Not long after the Santa Monica move, my work started to turn around. Our team was trying to offload responsibilities for the support tools we were maintaining, and my manager got me to start on some actual developer tools projects where I’d be collaborating with engineers from other teams. I enjoyed this development, until about a month into working on a new project everything came screeching to a halt.

My manager’s manager was a director of engineering who we’ll call John. Up until this point, John was essentially unknown to me. I knew that he existed, but I’d never had any direct interaction with him until one day in a weekly one-on-one meeting, my manager explained to me that he was going to have to pull me off the project I’d been working on. John had one of the other engineers on our sub-team working on an important project, and it was becoming apparent that one person alone wasn’t going to be able to meet the aggressive deadline that he wanted to hit.

The project in question didn’t really have anything to do with developer tooling, so I found the request a little bit odd, but I liked the other engineer and figured it could be a fun thing to build with him if nothing else. From this point until the time I left the team about five months later John became, for all intents and purposes, my direct manager. I didn’t realize that at first, but as I got into the project it quickly became apparent that I would be hearing from John very, very regularly.

Because John Insisted

The first indications that something was amiss came from just getting introduced to the project by the other engineer already working on it. After showing me the Github repo where I could check out the code, he pointed me to an enormous design document for what was, at the end of the day, not an overly complicated project. When I asked him why he’d put so much effort writing out an extensive design document for a project whose architecture would probably change significantly by the time it wrapped up, he gave me what would become an all-too-familiar reason: John insisted.

Sure enough, on closer examination I found that John had been very involved with this design document, littering it with inline comments. Most of the comments were technical, and very few of them were well-informed. I could see where he had demanded pointless optimizations, and then gushed over having them added to the document. In other places he would ask questions that betrayed a deep misunderstanding of the subject matter he was asking about. The whole thing seemed a bit strange, but I didn’t get overly worried about it. Directors don’t necessarily need to be technical experts, and even if he was perhaps in a bit over his head, we could work around that, right?

As it turned out, we could not. The problem with John was not just that he was misinformed, but that he was misinformed and highly motivated. He didn’t have Github access to watch our PRs (thank heavens), but he dogged us daily, sometimes multiple times per day, demanding updates on features in progress, making technical judgments with no understanding of the considerations behind them, and insisting that code be pushed as quickly as possible. Not for any practical purpose (the project was brand new and didn’t have any users yet), but just so he could get a look at what we were working on. He pushed incessantly on the schedule, yet never missed an opportunity to sidle up to one of us while we were working and spend an hour musing on some oddly specific point of technical decision-making like, say, what a horrible mistake it would be to store status color codes in the database.

One day I arrive at the office in the morning, set up my laptop, and take a look at my review queue on Github. I find a PR from my fellow engineer that changes the project configuration to use MySQL for local development instea of SQLite. Technically the PR was correct, but the description didn’t really answer the “why.” Testing with SQLite had worked fine so far, and it made it a little bit easier to spin up the project.

When I asked him why he’d made the switch, he explained that he’d had to do it because SQLite didn’t have a SMALLINT type, and the ORM we were using wouldn’t support using different types per database. The field in question was the primary key for a table, so why not just use a normal INT, I asked? You can probably guess the answer.

Because John insisted.

It’s important to note that this project was not some kind of big data monstrosity. It was, in essence, a moderately complicated CRUD tool for internal business data. The two bytes that we saved for every row in that table, multiplied by the 65,535 rows that would be in the table if the address space were completely maxed out (and in reality we would never come anywhere near that many rows, even if the tool ran for decades), would have saved just over 131KB of disk space. A director of engineering felt the need to personally intervene in a project to ensure a saving of, at most, about one tenth of the capacity of a single 3.5" floppy disk.

tl;dr — John, the director personally managing the new project I got pulled onto liked to inject himself into technical decision-making in pointless and perplexing ways, to the point of dictating data types for database columns.

The Etymologist

Condescension was, perhaps, John’s greatest talent. We learned over time to avoid asking him questions whenever possible, because even something as simple as, say, “which order would you like these buttons in?” was liable to prompt an exasperated sigh, followed by upwards of a minute’s silence while he worked himself up a properly consternated expression. Eventually he would deliver a long response that, on the way to maybe answering your question (or maybe not) would include a sufficiently generous helping of basic information to rub in just how little he thought of your competence.

My favorite example comes from a meeting towards the beginning of the project, when I was working on getting the basic skeleton of the UI together quickly enough to meet the aggressive deadlines we were working under. If you’re familiar with task management tools like Jira, you’ve probably heard of an “epic,” which is agile-speak for a group of related tasks. In the designs we’d been given for this project, John had introduced a grouping of data objects in a shared time period which he referred to as an “epoch.”

Depending on pronunciation, “epic” and “epoch” are homonyms. So if you saw someone using the word “epoch” in a context that’s suspiciously similar to the contexts where other tools normally use the word “epic,” you might wonder whether that person had made a minor typo and intended to use the word “epic.”

So, in this meeting, before I started building UI components that referred to “epochs,” I decided it would be wise to ask John if that was the word he’d intended to use, or if it should be “epic.” This was not, in fact, wise.

He did tell us to use the word “epoch,” but not before explaining what the word meant and that it was not, in fact, the same word as “epic,” to a room full of native English speakers. He then proceeded to opine on what he thought the Latin roots of the word might be, which I’m convinced to this day he was making up on the spot. Like I said, it was best not to ask questions.

tl;dr — Asking John questions risked triggering a lengthy explanation of the meaning of a common English word.

The Phantom Designer

I spent most of my time on this project working on the UI, where the most important rule was to build strictly to the mockups with no deviation. The mockups struck me as somewhat odd, not only for the occasionally questionable design, but also for the way they were presented. Typically, I’ve had designers to present me with wireframes and mockups as images, which I’d take and turn into code.

These mockups, however, were some kind of a weird HTML/CSS/Javascript mashup. When loaded in a browser, you would get a semi-functional version of the site with dummy data, just enough Javascript to do things like expanding and closing different sections of the UI, and thousands of lines of very, very messy SCSS all in one file to make the whole thing look the way it was supposed to.

At some point I had to ask, “where did these come from?” It was hard for me to imagine a designer taking this much time to write a bunch of not-really-functional code. The answer I got was that John had made the mockups. More specifically, he had essentially disappeared for two weeks before the project started to cobble together these weird mockups because he hadn’t been able to procure a designer for the project.

This explained the strange state of the mockups. It also explained the weirdly personal way John reacted any time I suggested minor changes to the UI. What it left unexplained, however, was how a director of engineering could get away with spending two weeks of his time personally designing a UI for a single project outside of his team’s charter. More than anything, this single incident shook my faith in the company’s management having any meaningful degree of accountability.

tl;dr — John (who, once again, was a director of engineering) took it upon himself to not only personally design a UI for the project, but build an entire mock website with just enough HTML, JS and CSS to make it look like the real deal with dummy data and animate some of the UI elements.

The Surprise Meeting

One day, as I sat at my desk coding away, headphones on, trying my best to beat one of John’s aggressive deadlines, an arm extended into my field of view. I rocked back, briefly disoriented as I peeled off my headphones and tried to make sense of the situation. Turning to my right, I saw not my manager, but another one of the managers under John. He gave me an awkward “hi,” which I returned just about as awkwardly, since we’d never really met before.

“Sorry,” he said, “we forgot to invite you to the sprint planning meeting.”

For the uninitiated, a “sprint” is agile-speak for a recurring time interval over which you plan what you’re going to try to get done, usually two weeks. Most teams began each “sprint” with a “sprint-planning” meeting in which they’d divvy up the set of open tasks on their plate and try to work out what they could expect to get done in those two weeks. Usually those meetings lasted an hour to an hour and a half.

My first thought here was “why would I be going to his sprint planning meeting in the first place?”

My second thought was “Well, good thing I missed it.”

“Oh,” I replied, “it’s okay. Just send me an invite for the next one.”

“No,” he clarified, “it’s right now.”

Well, so much for missing the meeting.

“How long is it?” I asked.

“Two hours.”

A two hour long sprint meeting. Now I started to panic. Especially because at this point I was about an hour away from the time I would normally leave (I always came in and left early to avoid the worst of LA traffic). Time to see if I could get out of this meeting I still didn’t understand why I was invited to.

“Sorry, I’m actually kind of in the middle of this, do you think I could just make the next one?”

“John says he needs you.”

And that sealed my fate. I grudgingly gathered up my laptop and trooped off to a meeting room that I couldn’t for the life of me figure out why anyone wanted me in. When I got there I found John, the rest of this other manager’s team (which made sense, given that it was their team’s sprint planning meeting), and the other engineer working on the project with me. He briefly explained, before they got started, that John had decided to pull us into this meeting so we could plan the work on our project at the same time this other team he was involved with planned theirs, even though there was no overlap between the two groups.

The meeting begins, and it’s an absolute train wreck. The team’s preparation wasn’t great, but mostly John’s extensive questions and constant attempts to rewrite priorities that the team thought they had set beforehand caused it to drag. Thirty minutes in I was essentially ignoring the goings-on, trying to work on the thing I was working on before my afternoon took that bizarre turn.

At that point, nothing had been accomplished. There were some things written on the whiteboard, but no one could decide which order to put them in or how many of them it would be feasible to finish in the two week sprint. And, as I understood it, was only the planning for one particular subdivision of this team of a dozen or so people. Things weren’t looking great for that two hour scheduled time limit, and I was already trying to figure out the most tactful way to excuse myself and go home when John executed one of the most stunning meeting moves I’ve ever seen.

He gathered up the other manager in the room, and told everyone else that they were going to leave for twenty minutes. When they came back he expected the items on the board to be prioritized and assigned or else no one would be allowed to leave.

Well then. This was perhaps the most kindergarten teacher tactic I’d ever seen applied to adults before, and I had no intention of finding out just how John planned to make good on his threat to keep a group of grown engineers in a room against their will. Instead, I took advantage of his momentary absence to make my escape. I turned to my fellow engineer next to me, who already knew it was about time for me to leave, and gave me the go-ahead that he’d deal with whatever came up about our project later in the meeting.

What followed is, by far, the most humiliating experience of my professional life. I left the meeting room and now found myself with the delicate task of trying to get back to my desk, gather my things and exit the building without bumping into John or the other manager and dealing with the conversation that would ensue. I skulked my way the long way around to our work area, peeking around corners and keeping an eye out for John like an awkward combination of James Bond and Pac Man.

Luckily, after waiting a few minutes they were nowhere to be found in our work area, so I packed my backpack as hastily as I could before hurrying over to the stairs where I barely altered course in time to avoid being seen, as I caught the two of them heading for the same stairwell. A momentary setback, as I turned around and headed for the stairs on the other side of the building.

I climbed down, made it to the parking lot, and then walked around the corner of the building…where I found the two of them, standing and talking outside the building doors no more than twenty yards from my car. At this point, my skulking nearly graduated to crawling as I ducked below the roofs of neighboring cars while zig-zagging in between them until I finally came to mine. As I slid into the driver’s seat, I saw them turning away to walk a circuit around the building and knew I finally had my chance to make it out free and clear. I took it, and then spent the long drive home wondering just how I’d managed to get myself into this ridiculous scenario.

Later, I found out that our project had literally not come up at all in the meeting. They didn’t come anywhere near finishing the planning their team needed to do in that meeting, and ended up scheduling another follow-up sprint planning meeting, also two hours in length, for the next day. Thankfully I already had a conflict for that meeting and for the rest of my time on that project I made sure to always have one for the sprint planning meetings as well.

A few weeks later, I learned that in addition to the sprint planning marathon, at the end of the sprint they had another hour-long retrospective meeting. This made for a total of five hours of meeting overhead for a single two-week sprint. I still wonder how much of that meeting time they spent wondering why it was so hard to get things done on time.

tl;dr — I got pulled into a two hour sprint planning meeting I had no business in by John’s request. I ended up sneaking out of the meeting and skulking through the building to make my exit without being noticed. The meeting overflowed into another two-hour planning meeting the next day, and that team capped off their sprint with an hour-long sprint retrospective meeting. I began to wonder where my life choices had gone so horribly wrong.

Customer Ops

As this part of the story drags on, there’s an obvious question to ask: “If it was so awful, why didn’t you just quit?”

I asked myself that question frequently, but I always held out because of my stock vesting cliff. The way my stock compensation worked was that I’d receive 10% of it the first year, 20% the next year, then 30% and 40% in the following years. Normally I would vest a quarter of the year’s amount every three months, but the first year was an exception.

The entire first year vested all at once after a year at the company (February 15th for me), and if you left before that you got absolutely nothing. At this point (around the end of 2018) the stock was plumbing historic lows and my entire grant was now valued at less than what Google had offered me almost a year earlier, but that first 10% was still a non-trivial amount of money and I didn’t want to give up on it when just a few more months would get me to the cliff. I figured I’d suck it up until February, and try to have a new job lined up for as close as I could to that date. Still, the situation was testing my ability to hold out even that long.

Before I got sucked into that project, I spent most of my time working on the products and tools that the customer operations department used. They were the people responsible for support, mostly for advertisers but also fielding bug reports through the support site. They didn’t have any engineers on their team, so I had essentially become their go-to person for any kind of tooling or customization they needed done.

Before the ill-fated project began, Nate, the PM (product manager) I worked with in customer ops had told me that they were looking to hire an engineer for their team and asked if I would be interested in switching teams. At the time there were few things I would have been more interested in, but unfortunately we weren’t able to make it work out. My wife and I always travel back to our home town in Florida around holidays, and when we do I work from home for a few weeks. Maintaining that flexibility was critical for my personal life, and the ops team wanted someone who would always be onsite, so at the time I had to pass.

Fast forward three or four months, and I’m now in the middle of the project from hell. Customer ops, meanwhile, has been trying, unsuccessfully, to find an external hire to work on their products. I got another message from my friend Nate, informing me that while they would have preferred someone onsite 100% of the time, the ops team’s leadership had decided that they were willing to accept the occasional remote work to get me onto the team.

This was all music to my ears. I had a chance to get out from under John’s thumb and switch over to a team full of people I enjoyed working with, what wasn’t to like? So we set up the team transfer, with the expectation that I would switch over in December after finishing some key deliverables for John’s project, and that Nate would become my direct manager. This was a somewhat unusual arrangement, but overall I saw it as a positive, and it gave me the glimmer of hope I needed to keep churning out code for John until I could finally get off of his team.

tl;dr — I needed to stay until at least the following February to vest the first 10% of my stock grant, but it was proving difficult to keep going. A friend on the customer ops team, Nate, offered to have me transfer over and work on their projects full time, and after receiving assurances that I would be able to travel around the holidays and work remotely I jumped on it.

The Team Change Switcharoo

December finally came around, the team change was upon me, and for once things were looking up. I was excited for the new team, we had some impactful projects lined up and the holiday season was in full swing. Around the time HR was supposed to be finalizing the transfer, however, something odd happened.

The plan had originally been for them to hire an engineer who would join the customer ops team and report to Nate. HR, however, got cold feet at the idea of an engineer joining a team outside of the engineering organization, and they ended up coming up with a weird workaround to the whole thing. I would still work on the same projects we’d been planning on, and I would sit with the customer ops team, but I would technically report to an engineering manager on a different team that had some overlap with customer ops’ projects.

To me, this was strange but not particularly concerning. At the end of the day all I cared about was getting to work on what we had planned and getting away from John. Nate, however, was significantly less pleased with the situation, as he’d been expecting it to be his entryway into management. This would become very important in a few months, as would the seemingly unimportant detail of which particular engineering team HR shunted me onto.

At the time, however, everything was going well from my perspective. I moved over to the new team and started working with Nate just as I’d planned, and initial progress looked promising. I had a brief meeting with the person who was now technically my manager, but in general we had very little contact with each other beyond occasional one-on-one meetings. For all intents and purposes, I was acting as a member of the customer ops team and working on their projects. Even better, as the new year progressed the stock price began a nigh-well miraculous turnaround, and suddenly I found myself thinking less about leaving the company after my one year cliff and more about what I’d do with the money if the price kept going up as my vesting rate accelerated over the coming years.

tl;dr — I went through with the team change to customer ops, but for HR purposes I ended up technically reporting to an engineering manager on a different team. Nate, who was going to become my manager under the original plan, didn’t take this news well, but I didn’t mind. The work on the new team proved enjoyable and the stock price even started to recover as I began vesting my stock grant.

The Beginning of the End

That period from December of 2018 through the first few months of the year stands out in my memory as the one time that I was actually enjoying myself at Snap. I’d gone from being one engineer among my manager’s dozens and struggling to find time and direction to being the only engineer for an organization with dozens of people very interested in getting a lot of things done, with a highly motivated PM to help me sort everything out. Naturally, this situation could not last.

The first blow came in the form of my performance review from the last half, which arrived several months into the year. By all rights, I had expected some kind of reward for the exceptional and deeply unsustainable level of effort I’d put into John’s project. In the end we delivered a minimum viable product before the aggressive deadline he had set with a fuller feature set than we had initially estimated possible. However, given that I was far from John’s favorite (we never openly came into conflict, but I didn’t put the requisite amount of enthusiasm into jumping through his hoops to really get onto his good side), I was worried that I would receive a middling review despite my accomplishments for the half.

As would often be the case in the months to come, the reality exceeded my imagined worst-case scenario. When my performance review finally landed in my inbox, delayed by my previous manager having changed teams and John having (finally) been fired, I had to re-read the header a few times to make sure I’d gotten it right.

“Rating: Low Performer.”

The text of the review that followed read like a description of an entirely different person I’d never met. John had left notes — unflattering ones — and it had fallen to my manager, who barely interacted with me for the half while I was effectively working directly for John, to stitch them together into something cohesive. The result was a hatchet job that I couldn’t take anything useful away from, aside from the fact that I should avoid pissing off directors. Still, I was on a new team now, operations leadership was happy with the progress I was making, and with my vesting cycle starting to pick up I was still making good money. I just needed to make sure the same thing didn’t happen to me next half.

The next big blow came not long after I got back from my Easter trip to Florida, when I learned that Nate would be leaving the company. Since the original plan for my team change fell through, he went out and got himself an engineering manager job at another company instead. When he left, there wasn’t any single person in customer operations who clearly fit the role he’d left behind, as he was the only team member who really regularly worked with engineering.

All of a sudden, the person I technically reported to had to pick up the slack and start acting as my actual manager. Much like my previous manager, he had an absurdly large number of direct reports, so I once again found myself on a large team with an overburdened manager who didn’t have a whole lot of free time for me. This situation was doubly problematic because at this point I needed help wrangling everything that the PM had previously handled and avoiding another bad review.

My manager decided that at this point it would make more sense for me to come sit with his team and start integrating a little bit into their work, and it was hard to disagree given that it wasn’t clear at the time what direction the ongoing work on the customer ops side was going to go and I needed something to do day-to-day. So I did just that, and at first things were going well enough.

I found some meaningful things I could work on for the new team while still keeping up the projects I had going for customer ops. I got to know some of the other engineers in the sub-team I’d found myself on, and learned more about what they were working on and where I could help. The situation wasn’t where I’d expected to be, but it wasn’t the end of the world either. Not yet.

tl;dr — I got a hatchet job of a performance review from my time working for John, and Nate left the company which put me in a tricky situation. I ended up truly joining the team I was technically a member of, and began integrating more into their work alongside my own.

The End of the End

With Summer approaching, I had two things to plan. My wife and I’s anniversary trip, and our usual Summer trip to Florida when I would work remotely. I came up with some proposed dates for them both and ran them by my manager at a one-on-one meeting a few months out so I’d have plenty of time to make arrangements. He told me the time off for the anniversary trip should be fine but that he’d have to check with our director on the remote weeks.

Then next week’s one-on-one came around, and he didn’t bring it up during the course of the meeting. At the end I asked him if he had an update on the weeks I wanted to work remotely, and at that point he dropped the single biggest shock of my career on me.

“Oh yeah, sorry, the director says we don’t allow multiple weeks of remote work.”

I was caught completely flat-footed. I stammered out something about having had an agreement, and my manager told me he wasn’t aware of it but he’d look into it. And then the meeting time was up and he had to rush off to something else.

I was stunned. My manager had just flipped my personal life on its head and clearly hadn’t expected it to be a big deal to me. Cumulatively, my wife and I usually spend a few months out of the year in Florida visiting family. That routine was essentially what made it possible for me to keep working in California as long as I had, and the times we spent in Florida were highlights of the year. Since we’d planned to move back sometime in the next three or four years, in January we went ahead and closed on a house in Florida to start preparing for the move back and have a place to stay when we were in town. A plan which had made sense based on the seemingly reasonable assumption that my employer wouldn’t arbitrarily break foundational promises it had made to me. This assumption proved less reasonable than I had believed.

At this point, I did two things.

First, I walked over to the building where the customer ops teams sat and talked to the person who I had thought of as “my boss” while I was working over there. Even though I didn’t report to them and they didn’t technically hold any sway over me, they would have been fully aware of the deal we had for the team change (which, to reiterate, being able to travel and work remotely was my sole condition for joining the team) and could hopefully pull some strings in my org. Unfortunately, this person — who had been very enthusiastic and friendly when I was driving their organization’s agenda forward — suddenly seemed much less enthusiastic now that I needed something from them. They told me they’d see what they could do, but not in a tone that inspired any confidence.

Second, I went to the grocery store nearby and bought the biggest chocolate chip cookie I could lay hands on, then wandered over to a grassy area between buildings, sat down on a bench and started emailing recruiters. Once I ran out of people to contact, I just kept mindlessly browsing for another hour or so, until I finally looked up from my phone in a daze. I stood up and started to walk back towards my building, but realized that I’d lost track of which one of the grassy areas I was in (there are two of them, identical to each other, in between two separate sets of buildings) and had to simply wander around for a few minutes before I regained my bearings.

When I got back to my desk, I tried to do some semblance of work for a bit, and then I just packed up early and drove home, relieved to be out of the office but not looking forward to breaking the news to my wife. The next day I wrote a lengthy email to my manager, fully explaining the situation, the agreement that I’d made with customer ops when we had planned on me joining their team, and why it was so important to me. He told me he’d talk to our director again and get back to me as soon as he could, now that he understood the full extent of the issue.

At next week’s one-on-one I got my answer, and it was the one I’d been afraid of (at this point, my imagination had upgraded its worst-case scenarios to the point that reality was no longer exceeding them). The whole thing was very unfortunate, he explained, but their team hadn’t known about my agreement with customer ops when HR decided to send me their way, and this team had a strict prohibition against working remotely for weeks at a time. If they let me do it, what would they say to everyone else who wanted to do the same thing?

(Of course, they could have said “Work with your manager to see if you can make this work sustainably,” which would have been a far humane approach than a blanket ban. They could also quite reasonably say “That’s an agreement he negotiated as part of a team transfer, so we have to honor it,” which would have been a perfectly good explanation. Certainly not everyone on the team received the same salary and equity grant as me, but I doubt they would have tried to pull a line like “Sorry, we can’t pay you what we agreed to, it would be unfair to the more junior engineers” on me.)

tl;dr — Remember the agreement I made with customer ops about working remotely around the holidays? My new team decided they weren’t going to honor it, and didn’t let me know about that until just a few months before I was planning a trip.

Dealing With The Fallout

Over the following weeks, I double checked every avenue available to maybe change the outcome, but every lead turned into a dead end. With the vast majority of my now-very-valuable stock grant left unvested, I had no choice but to leave the company. Worse yet, I only had a few months left to find a job before our next planned trip to Florida.

At this point, of course, I could have cancelled the trip, held out for another vesting event and had time to conduct a more thorough job search. And then after that, maybe I could have convinced myself that it would be worth it to put off this year’s Christmas trip so I could vest one more quarter of a year’s equity, and before I knew it I’d find myself a bitter husk of an engineer with a fully paid off house that I hadn’t seen in years, a fat bank account and deep regrets.

No, at some point I had to say enough was enough, and this was it. I couldn’t sacrifice my personal life as I knew it for an employer who I now knew couldn’t be trusted. After all, if I couldn’t trust them to honor such an explicit and important agreement, who’s to say they wouldn’t just find another way to get rid of me as I continued to vest more and more stock over the coming years?

At work I now struggled just to keep my head above water and get enough done not to be fired before I could find a replacement job. The first three or four weeks in particular I came as close to depression as I’ve ever been in my life. Getting up out of bed in the morning turned into a struggle, and trying to figure out how to rework my long-term financial plans around the hole Snap had just blown in my projected income made me feel ill. At night I tried not to lie awake thinking about the mess I was in, and mostly failed. As someone who’s usually pretty good at chewing over a problem until I can find an acceptable solution, being trapped in a situation where there was no acceptable solution was miserable, and I still couldn’t stop chewing.

After work every day I conducted a clandestine, rushed job hunt. Trying to keep up with correspondence with recruiters and study for interviews made everything all the more draining, but I managed it because I didn’t really have a choice. I know for a fact that I wasn’t at 100% when interviewing, but in the end I made it through and managed to secure a couple of workable offers at companies I expected I could actually enjoy working for.

I left for our anniversary trip, then went to Florida and put my two weeks’ notice in. My last vesting event happened during the vacation time, so at this point I didn’t really care if they decided to fire me for breaking the prohibition against remote work before I could finish out the two weeks. In the end they decided to let this one go, and I finished out my two weeks and left.

My one hope at the very end had been that HR might agree that I had been effectively forced to resign and offer severance. They did not. And that’s how I ended up walking away from more money than I ever thought I’d see in my life with just my last paycheck to show for it.

tl;dr — I couldn’t find any way around the predicament I was in, and had to leave the company. Despite some minor depression symptoms I managed to find a new job and walked away from what would have been a life-changing amount of money.

Marko Tupper

Written by

In case it wasn’t clear, this is a pseudonym

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade