This is a post I have been thinking about for a while now. Today is my last day at Yahoo. It has been a long time since I started, as the post title subtly hints at. My employment predates this blog, even in its previous LiveJournal form. I thought I’d spend some time to summarize my Yahoo journey as I reminisce about the only job I’ve had since graduating college. It was so long ago, I don’t even have digital photographs of my first few years there, and I haven’t scanned that particular roll yet, so…
The Santa Clara Years
When I was close to graduating college, I had started looking for work around the Bay Area. I didn’t have a car, so any time I had to go to a physical interview, I had to rent one. I only think this happened twice, and one of the times they actually put me up in a hotel and I interviewed with a bunch of candidates all at once. That was actually for a circuit design job, as I hadn’t figured out whether or not I wanted to do actual Computer Engineering or not. I ended up being referred to an opening at Yahoo by my brother (who never let me forget that fact for many years), and I don’t remember a whole lot about the in-person interview, but I do remember them asking me to code a Tic-Tac-Toe game in JavaScript as a test.
Remember, this was 1998. This was actually a pretty big deal back then.
I remember completely overthinking the problem (being relatively fresh from my upper-division AI class at Berkeley) and using a min-max algorithm instead of using a pre-canned bit of logic. I guess that either impressed them, they didn’t notice, or they didn’t care because I got the job.
I was hired late June 1998. That week was the largest group of new Yahoos (we were all Yahoos, no matter what our actual job title) that had ever started at the company. There were a whole 12 of us that week, and I was assigned employee #502. Yes, I could have been #500, but was not arbitrarily chosen. I was hired into the Gooey group by Dave Shen. He had been spread pretty thin and been helping out a bunch of folks, and I was hired to take over some of the more programming-style tasks. Particularly for the promotions team.
Back in the day, if you wanted to advertise on the front page of Yahoo, you couldn’t just book an ad. There was only one ad placement, and it was right under the Yahoo logo. You can see this with the help of the Wayback Machine. That placement was reserved for either in-house ads, or links to a promotional website, also hosted by Yahoo, that was required to be a sweepstakes for at least (but usually exactly equal to) $10,000 in prizes. In return, the advertiser got to keep all that sweet, sweet user data for all the entries to the sweepstakes.
We didn’t link random websites back then, because it was hard to overstate the overwhelming power of a link from the front page of Yahoo. This was the #1 site on the Internet, with billions of page views. Any website linked to it would likely blow up, so to keep the experience peachy-keen, we kept it in-house. For a while, the actual front page servers would host the promotional sites, but eventually it moved to promotions.yahoo.com, a set of servers I was responsible for maintaining.
When I first started, we were still at 3400 Central Expressway, where we only had the upper floor of the building. Yes, all of Yahoo (at least the Bay Area contingent) fit within one office floor. I was in with the Gooey team (what you’d call UI/UX designers nowadays) and it was dark. Part of the team had double-high cubicles (oh the days when we still had cubicles) and I was so new to the team I didn’t even have a cubicle so they literally stuck me on the end of the row where there used to be a printer. I had to bring a cord and a sheet from home to block it off to get some privacy. I have a picture of this, but due to my laziness to scanning my old analog photographs, you’ll have to use your imagination.
Eventually, the company expanded to the upper floor of 3420 Central Expressway. Then, also the lower floor. Then a couple more buildings in the neighboring area and a few down the street. Yahoo had even taken over one of the conference rooms right near us to set up a little studio where they had started filming custom video content called Finance Vision, where two anchors would summarize the financial news of the day. This was actually a pretty big deal back in the day, it was eventually nominated for a Webby.
Meanwhile, I was continuing on with a few other coworkers who were all hired on to help with the promotional websites. We all were doing the technical work — basically taking a Photoshop file from the designer and using Adobe ImageReady to chop it into smaller images and using HTML tables to lay them out, plug in the data collection form, and push them out to the servers. I was also the one who was responsible for the actual data collection scripts. What started out as a 50 line CGI-bin Perl script turned into a 10 line CGI-bin Perl script when I first got there due to some heavy optimization. But then it slowly grew as we added more and more custom logic to handle things like required fields and email validation. Eventually the Perl script was replaced with an Apache module written in C… because that’s how you had to do it back then. This was pre-PHP or anything like that, although there was an in-house bit of server-side templating called htmlforms, with a later version called hf2k, which allowed for some basic dynamism to the HTML pages. I was happily puttering around in my own little pond. An engineer in everything but in name, because I wasn’t technically in the engineering group.
Then in 2000, the dot-com bubble burst.
The New Campus
Yahoo had started building the new campus before everything went crazy in 2000. They had bought the land (which ended up being one of the better investments they made in the long run) and built the campus on top of it. There were five buildings, A-E, with C being the cafeteria. Building E had satellite dishes on the top floor and a nice big studio for the Finance Vision folks.
We were part of the first group of Yahoos to move into the new campus in 2001. We moved into the first floor of Building B, facing the parking lot. Being the first team to move in, we had the privilege of naming the conference rooms. My boss at the time chose famous prisons, which, if I remember correctly, annoyed some people later who moved into that floor.
However, because of the dot-com bubble, Yahoo went through our first major round of layoffs. I survived (spoiler: I survived every round of layoffs ever at Yahoo), but a few on our team did not. We ended up having to rent out building E to Marvell. This meant they had to rebuild the Finance Vision studios, and they did so in the first floor of Building B, facing the parking lot…. so we had to move and leave the prisons behind.
Technology had slowly moved on, CSS was now a thing, and the front page of Yahoo was now more dynamic. A team was created to help with full-page ad takeovers, which I was helping with, in addition to my responsibilities with promotions and additionally helping with promotional pages for the SBC global integration. Then, this is where stuff happens.
I never got the full story, so there is some speculation on my part here, but what had happened is that I was working for three different departments, but as a salaried employee my cost center had to be assigned to a single one. As front page ads was the most profitable, that is what was chosen. Unfortunately, at one point, I think the front page ads teams was frustrated that they were paying all of my salary, but only getting a third of my time, so they started demanding more of me.
Unfortunately, this was work that I was not well-suited to. It was meticulous, repetitive, and required me to be online at 7pm when the ad went live just in case something went wrong. Things were not going well, and despite subtle nudges from my boss to try and transfer out, I was put on a personal improvement plan. One of the contingencies of the PIP was to always be online at 7pm for the launch of one of my ads. I missed one, and was fired. (Or I quit right before that, or whatever…)
However, the other two teams still needed me… but neither could pay my full salary. So I was brought on as a contractor with the in-house contracting agency and started filing two timecards and splitting my time between the two.
The Ever Dwindling Contractor
For the next two years, I continued to work on the promotional sites, but with fewer and fewer billed hours. I started at about 30 hours a week, then started taking every Wednesday off. I was playing more and more online games, and less and less work. Eventually I hit the two year mark of being a contractor which (at the time) was the limit for how long you could be a contractor without being hired full-time or let go… and obviously with so little work, I was just let go.
Intermission
I started looking for work elsewhere. I interviewed at a bunch of online companies, some in San Francisco (a commute I would have hated), some in the south bay. I had some interesting experiences. But, if you notice in that (copied over from LiveJournal) post, someone mentioned a job posting for a position in Yahoo! Autos. I commented saying I wasn’t interested.
Yahoo! Autos
Well, I guess I changed my mind after that post, because I ended up interviewing for that contract position. They saw an engineer who already knew all the proprietary Yahoo technologies, or maybe they liked me for other reasons… or both, and two months after that previous post (and almost a year after the previous contract had ended), I was hired back as a contractor. This time, the limit was one year, as the policy had changed.
My time in Autos was eye-opening. This was my first time in an actual engineering organization, as opposed to the small-pond work I was doing before. I had peers who were competent engineers I could learn from. I was eight years into my career, and in many ways I was finally starting. At this point, engineers had finally bifurcated into front-end and back-end engineers (as opposed to when I started when front-end work wasn’t complicated enough to be a specialty). As a surprise to anyone who knows where I ended up, I was actually a back-end engineer for Autos. I wrote Perl scripts and maintained servers. I integrated with the ad systems and maintained Hotlist nodes. I got lots of experience dealing with product managers on a property.
It was also a bit disorienting, as Autos, along with a bunch of other property teams, were not on the main Yahoo campus. At this point, Yahoo was nearing its peak employee count, and we had overflowed the main campus, even after reclaiming building E and building two new buildings, F and G. So we were in Mission College 1 and 2, leased buildings next to Mission College near Great America. We had different cubicles and a much smaller cafeteria and in many ways it didn’t feel like Yahoo, but it was similar in enough ways, and I did get back to the main campus every once in a while.
But then a year had come up. This time, however, they didn’t want to let me go. However, Autos didn’t have a headcount for me, but one of the other teams in the group, Travel, did. So I was hired full time to Travel. The lease on MC1 and 2 had expired at this point and we had moved across the street to GA1 and 2. I was all set to start learning how Travel was set up and I was notified that I had been volunteered for a new project.
APT
At this point, every few years Yahoo re-wrote its ad system. The previous iteration had been rewriting the search serving system, a project internally called Panama. Because they were high priority and required a lot of temporary assistance, they put out calls for volunteers throughout the company. When not enough people volunteered, they were involuntarily recruited. This had happened to me. The Travel team was told they needed to give up two of their team to the new display ad system rewrite, and I was lowest on the totem pole, so off I went.
I don’t remember what the original code name for the project was, but it was quickly known as APT. (It was written in all caps, but it wasn’t an acronym as far as I know.) I was particularly useful to them, because the application was to be written with Java as a backend (Panama was previously written in Java because the core of the team was from another company who knew Java, and this continued from that) so very few of the team were front-end engineers. They had decided that it was easier to find engineers who knew JavaScript and had an OOP background to learn Java than to teach back-end engineers how to code front-end.
After a rocky start while we shuffled teams around, I eventually ended up on the Demand app team. There were three major app teams: Demand, Supply and Admin (I think?). They started off pretty siloed, but eventually as time went on, we managed to communicate a bit more. The entire team was gigantic. We had taken over most of MC2, then across the parking lot, a new building, MC3 was leased. It was state-of the art, with a brand new open office layout that looked really cool, but was a harbinger of standard changes to come. Gone were cubicles. We had half-open work areas with adjustable desks, but we still had shelves and a table and half-height walls. Oh, if we ever knew how much we’d miss even what we had then.
It was in APT that I finally started coming into my own as a developer. I was back in front-end engineering, and in a project large enough that it actually required real engineering. I was surrounded by other people to learn from and collaborate with (at least one of whom I actually said goodbye to today… we were still working together that long). The project went on for years, and although as front-end engineers we struggled to earn the same level of renown and seniority that the back-end engineers did (a problem which continued for quite some time) I was full-time, I had a career, I was getting promoted. Even though I felt like my career was a bit delayed, at least it was progressing.
Eventually, after many years (and quite a few managers) APT wound down. By this point, the company had shrunk a bit (through some of those layoff I mentioned earlier that I always survived) so we ended our lease on MC1-3 and we moved back to the main campus. The core functionality of APT was passed to another team, and we were spread out among other projects within the ad technologies group.
Intermission 2: The Dark Days
I actually don’t remember how long this period of Yahoo lasted for me. It feels like a year, but that might just be how long it felt. This is about the time I moved from LiveJournal to Twitter as my primary social media, so my historical record is a bit terser. I know I worked on a lot of little applications that were showing data from other systems or providing a new UI to some combination of systems and most of them never saw the light of day. It was not very fulfilling work, and I also didn’t get along well with my manger at the time. The company was losing people left and right. I even started interviewing, and got as far as a job offer, but I was about to accept it when…
The Gilded Renaissance
Marissa Mayer was brought on as CEO and immediately the spirit of the company was lifted. We had gone too long without an actual leader (the last two CEOs had been an interim CEO and one who got into a controversy about his college degree), so having someone come in and make immediate changes and give us direction breathed a life into the company that was sorely needed. It was enough to make me change my mind and not accept the other job, a decision which I have never regretted.
I actually had a minor interaction with Marissa when she was first brought on. She had asked if there was a page where she could look that listed all the Yahoo properties and how much money each of them had made the previous day. We didn’t have anything like that, and because the department I was in was all about internal dashboards, the projected ended up in my lap. So I got some instant recognition, which was nice.
However, even though morale was higher and the company as a whole was being overhauled, my day-to-day was still boring…
Moneyball
A dictate had come from on high. There should be a new type of ads, similar to what Facebook was doing: native ads within content streams. The front page of Yahoo was the test-bed, and a team was being recruited for a fast-paced, high crunch-level project to go from zero to finished product in 45 days. I was reached out to by Peter Chan, and I had to decide that day if I was going to move to the group. It did not take me the day to decide, and the next day, a group of about 20 people had been assembled and started meeting every day in the Aquaman conference room. This was such a big deal, there was an article written about it. I was one of two UI engineers in charge of creating the web application that would be used to create the native ads, but also helped out with some of the content pre-generation and other integrations. I had based the webapp off of a project I had just recently worked on in the previous group, so we had a starting point with a YUI-based application. After long hours and weekends, we managed to deliver two full days early and after 43 days, native ads were appearing in the front page of Yahoo.
As the image above and the article indicate, a reward for that original team (plus a few of the ancillary folks who helped out) was a week-long trip to Maui in December, where we went from one of the coldest weeks in the Bay Area to the tropical warmth. This was also just as we were staffing up to turn Moneyball into a full-fledged system from the quick proof-of-concept that it was. That 20 or so people turned into a hundred as we rolled into project Curveball, which was integrating search ads for more content, and eventually the project became to be known as Gemini because of the search + native aspect of the project.
Gemini
Gemini was the last project I worked on at Yahoo, and it surprises me how long it actually lasted. From Moneyball to now was almost seven years, longer than I worked on any one project. Over the course of the project, the team grew to take over the old network operations room, then eventually a whole floor of one of the buildings. The UI was re-written twice, once where we replaced the PHP servers-side code with Node.js, and again when we replaced the YUI client-side code with Angular. Most of the original team members drifted off, either returning to their original positions in the company, or leaving completely. Some of the temporary help we had early on joined us full-time, and we were also hiring more and more engineers. We had a science team in Israel, a front-end Reporting team in London (who were all sadly let go because the office was too minor) and a supplemental back-end team in Taiwan.
Yahoo was doing a lot better. We had released a new weather app for iOS that got rave reviews, then got overshadowed by the official Apple weather app that looked eerily familiar. We had weekly company-wide meetings every Friday where the senior leadership and other employees from all over the company would present genuinely interesting updates on new things throughout the company and answer questions in surprisingly honest ways. Company pride was strong enough that we managed to keep quiet for decent periods of time, so the entire company became privy to upcoming plans in a way we’d never had before.
Gemini got more and more complex, and went through multiple rebrands as the product name changed. But the biggest rebrands of all were just over the horizon.
Oath / Verizon Media
It was surprising, but in some ways not entirely surprising, when we learned that Yahoo was going to be sold to Verizon. The new renaissance that Marissa had brought had lost its momentum. The early wins we had earned weren’t followed up by any continued success, and we continued to lose users, advertisers and key employees at a rate which started to feel like the dark days again. Verizon would choose to combine us together with another ancient internet company it had acquired just prior to us, AOL. So we were now being merged with the company which was, at one point, our major competition. The new combined company was called Oath (confusing almost everyone I ever talked to).
Technically, Yahoo was not acquired by Verizon. Instead, Yahoo sold its employees, intellectual property, and most of its holdings (land, colos, etc), and held on to the large cash reserves and investments (Alibaba and Yahoo Japan). Then, the company formerly known as Yahoo, which had very few employees left, was renamed Altaba. This only further confused people, especially those of us now owned large chunks of Altaba stock. Altaba has since been dissolved, and all of the assets had been sold-off and dispersed to its shareholders, so technically, the corporate entity that started with Jerry and David in 1996 no longer exists.
Anyways, back in Verizon, most of the senior Yahoo leadership did not come along to Oath. We were instead being led by senior AOL executives. AOL was headquartered in Virginia, but Yahoo was the larger company, so the Sunnyvale campus was the “main” Oath campus. This four thousand mile and 3 timezone separation between the two major parts of the company did not provide for a smooth transition. There were also many arguments (way above my paygrade) about which internal services to standardize on. Everything felt like it ground to a halt as corporate infighting and technical integrations kept any real new development from going on. Eventually, after not too long, the Oath name was dropped and the division was known as Verizon Media. (So that was two more rebrands we’d gone through in almost as many years.)
Gemini continued on, now one of many ad systems within Verizon Media. We had started integration with the BrightRoll DSP, an application which I helped with on a very surface level. The front-end was written in Ember, a framework I did not really want to learn. Ironically, had I accepted the job offer back in 2012, I would have been working in it, another reason why I’m glad I didn’t accept that job. We just kept our heads down and kept working on new features, as we added new ad formats and new targeting and migrated to new systems once the higher-ups had decided what the company-wide direction was on various global services.
However, we had a huge blow to morale when we learned that Verizon had decided to sell the Yahoo campus to Google. Google has been expanding into all over north Sunnyvale for many years, and ours was a prime location. They announced a new campus in San Jose, near the airport and the soccer stadium, and it would be ready in a few years. However, that move would be delayed.
COVID and WFH
Things were already slowing down when COVID-19 hit us. We stated working from home, which was a pretty smooth transition. Yahoo had always been good about its global IT infrastructure, and everyone’s primary computers were always laptops already. We had been using the Google enterprise software, so virtual meetings and screensharing were things we were already accustomed to. However, it did not help the downward spiral it felt like we were falling in to. Working from home made it difficult to hire new people, not that we were hiring beforehand, so every time someone left the company, we just got… smaller.
Projects were being handed off between project managers. Engineering managers were transferring around. I can’t speak for anyone else, but I became very disconnected from senior leadership. The regular company-wide meetings were less and less frequent, and most of the time lacked any substance. Just keeping our heads down and doing our jobs was starting to feel like it wasn’t enough.
This was the flip-side of the longevity of Gemini. As APT before it, and Panama before APT, every seven or so years had seen a rewrite of the ad systems at the company, as senior product and engineering leaders could examine all of the use cases and technical needs that had evolved over time and create a new system from scratch that could address those needs in a robust way. We never got that. Even before COVID, it felt like we needed it, but it never came. The pattern had been broken, and instead we just kept slapping more and more code on an ever-fragile system as brain drain and technical obsolescence made it harder and harder to meet the needs of our customers. Long-time engineers (myself included) felt like our voices weren’t being heard, and quick-fix solutions were chosen over holistic rewrites for (I assume) short-term cost effectiveness.
Moving to the new campus was delayed. Construction was slowed because of COVID, but our lease to Google had run out. Employees had to go into the office to pick up our stuff, but only a few of a time for exposure reasons. We never got a big farewell to the campus that had been a part of my life for almost 20 years. It was just… an hour window to pack, and a quick trip around the old campus that I’d never work at again. Bay area employees were officeless, only working from home.
Everything Old is New Again
Verizon had long tried to figure out what to do with Verizon Media. Their original goal seemed to be “roll out 5G, then synergize our customer base with our media properties” but they never quite got the first part, so the second just kinda sat there. Eventually, they sold us to Apollo Investments, taking the company private and (ironically) renaming it back to Yahoo. We received platitudes about how we’d be taken care of, but we knew in the back of our minds and spoke to each other in hushed whispers that we knew what was going to happen: we’d be chopped up into pieces and sold off.
And that’s where things ended up for me. My job was becoming routine. Gemini had stopped development, but I wasn’t working much on the new ad system (which was really not a new system, but an amalgamation of other systems to try and address all the use cases). I had other small projects I was working on, but my day-to-day was mostly site-up on Gemini and other small projects. I was perfectly content to keep doing this, as it was comfortable, but I was reached out to by a former coworker about a job opportunity. I didn’t accept at first, but when another coworker of mine left the company and her responsibilities ended up on two of us, it forced me to reevaluate what I actually wanted to do with my career, and I ended up accepting the offer.
I’d never really been excited about advertising systems. As I mentioned, I was volunteered into it, and only stayed because I was lazy, and I knew that’s where the safety was. I had survived every layoff at Yahoo because I was always situated in a revenue center. But it felt like, even though my job may be safe, the entire business was at risk. I felt like we were just prepping a carcass for slaughter. Also, I was not the first to feel the drag, and over the last few years we have been losing a constant stream of employees, to the point where it was becoming harder and harder to do my job due to lack of domain knowledge and overall manpower. Yes, I know I’m contributing to this, but I still think it’s the right decision.
The Future
Two and a half weeks and ago, the San Jose campus finally opened. There was an opening event and I got to see all these people who had only been faces on a computer screen for two years. Sadly, I wasn’t quite ready to tell people I was leaving, so I said hello to everyone and said how excited I was for the new campus and “oh, I’m not sure if I’ll actually come in because the team is fine working from home.” The campus is nice, but so much of it is symbolic of the company as a whole. It was lovingly decorated with pieces of Yahoo history, but still with a modern office sensibility. It’s an amazing facility, but it was designed for a company four times the size of what we are now. We already know we aren’t going to be here for long, and it will be converted back to a generic office building as Yahoo moves to a smaller facility somewhere.
Yesterday, I actually went in to the office and worked for the day at a desk. It was surreal. In some ways it felt like the first day at a new job, in an unfamiliar environment. But it also felt familiar. It doesn’t have the same impact as if my last day had been at the Sunnyvale campus, but it still gave me closure on my almost 24 year journey.
Goodbye Yahoo. I will forever bleed purple.