Retail Me Not – 2015

Got this email from a recruiter:

We’re growing our Engineering team and I thought you’d be a great person to speak with. Would you be interested in hearing about new opportunities?
Let me know if that’s of interest to you or brings to mind anyone who might be good for me to speak with, I’d be glad to sync up on the phone and discuss further at your convenience. I’ve also included our link so you can check out the company. Thanks!

That’s funny. The guy that fired me from Lombardi was VP of Engineering at Retail Me Not.
I emailed back:

Your VP of Engineering fired me from Lombardi. I don’t think I would be good fit. You are welcome to submit my resume, but I doubt he would bite.

I got this response:

I spoke with him and he agreed that he didn’t think it would be a good match. He had positive things to say about you but didn’t see a fit between your experience and what we’re ideally looking for.

Let’s definitely stay in touch. I’d love to reconnect when we have something come up that is a better match.

He had positive things to say about me? That’s actually nice. I was happy with that.

As for staying in touch, I am still (kinda) waiting…

Oh, and that VP was let go after a couple of more years. I don’t wish him ill, but I am sure he landed on his feet anyway.

 

Apple – 2015

apple maps
This image is from later than 2015, but you get the idea.

I randomly got a message one day on LinkedIn:

Want to re-join Apple 🙂 ?

We have some awesome challenges ahead in Apple Maps and I’m looking for key talent to join my organization – when I went through my connections on LinkedIn I found your profile – and you look like a potentially great fit.

Maps is a big data problem that is dynamically changing underneath a service and client architecture delivered across multiple platforms. Its a fantastic challenge. My team is looking for great engineering leaders who are interested in building intelligent automated systems to help streamline the content delivery process.

The organization is growing rapidly so there is a lot of opportunity for growth and a chance to play with all sorts of interesting technology with the smartest people on the planet.

If you are interested please shoot me an email and we can set some time up to talk and I will rope in my recruiting team.

Thanks!

Apple Maps had had a very rough introduction. Somebody who I worked with on the Mac OS X Program Team had been promoted to VP of Software, and he was let go after Maps had so many problems. That was 2-3 years earlier, but I had heard through the podcasts I listened to about the industry that Apple was doing a lot of hiring in this area.

So when, this Apple manager reached out to me, I listened. I still missed Apple. I did not miss California, but this opportunity sounded fantastic.

It just so happened that I was going to be a work trip to CA the next week anyway. After some back and forth, we setup a time to talk.

And I had a blast talking to him. We talked about front-end challenges (app vs. browser; ios vs. android), and we talked about the large amount of backend hardware necessary. We talked about getting map data from a vendor vs. collecting it organically. We both left the meeting amped up, and I was looking forward to hearing from him.

And the day after, I did:

Thanks a lot for your time and your insights – very appreciated. I was excited, but unfortunately we have decided to go a different direction with this position.

Initially, I thought that perhaps he had talked to somebody on campus about me and heard something he did not like, but that’s my own paranoia and imposter syndrome showing.

“We have decided to go a different direction” is code for “we were going to hire a manager from outside, but my bosses decided to re-org the department instead”. It looks like they decided to buy some tech to cover the gaps soon after I talked to this guy. So I was right; they no longer needed another manager because they bought a company.

 

 

Kansas City Royals – 2014

1280px-Kansas_City_Royals.svg
Your 2014 American League Champions!

 

I have talked about my interest in working in baseball throughout this blog (like Project Scoresheet – 1989). There is a website called TeamWork Online that is a place where the vast majority of teams in baseball post all of their jobs. I have an alert for jobs I might be interested in.

The Royals had just been to their first World Series in 19 years, and right after that, I got notified that they had a job opening called “Systems Architect/Deverloper, Baseball Analytics – Kansas City Royals (Kansas City, MO)“. The job listing talked about maintaining internal websites, working on databases, capturing statistics real time, etc. Right up my alley!

I was fairly happy at Mozilla, but, really, baseball!

This time, I got a response:

Thank you for completing the teamwork application. Just to give you a little background, the position we are looking to fill in the past was in charge of everything from managing our data imports to developing web/mobile applications for wider us through the organization. Our existing architecture mostly uses MySQL and Ruby on Rails, and we are looking for the new hire to take over a great deal of code a varying stages of completion along with moving forward into new areas. As this position will for the short term at least be our only dedicated developer they will work with autonomy in this area in terms of how they choose to execute projects. Based on your resume it looks like you are proficient in those technologies and many more, does our specific opportunity or are you more comfortable starting from scratch and/or working with a team of developers?

Our goal is to fill the position ASAP to get ready for next season but we will continue our search as long as necessary to find the right candidate. Because the baseball season is long and the commitment by employees significant the personality fit is as important as the skill-set in our search. As for next steps in our interview process we would like to see an example of work product if possible. A web app you have developed that is accessible publically would be great (or access to relevant code on GitHub). If not we can send along a self-contained project to accomplish the same. Thanks very much for your time and interest.

I could hardly believe it when I read this. I was doing a little happy dance inside. This sounded great!

I replied:

Thanks for getting back to me so promptly.

I am comfortable however things need to proceed. My vision is working alone on the code while developing a long-term strategy for where the system needs to be. Once the strategy is articulated, I can then build a team to build the new or overhauled system.

As for an example of my coding, you are going to have to send me a self-contained project. The only part of this entire stack that I really have little experience on is building the actual web apps. My development experience is with client-side or standalone app development. The rest of my experience is with the rest of project development – building of systems, deployment of web apps, testing, managing the product cycle, building teams, etc.. I hope this is not a hurdle, but I hope I can prove my ability to learn quickly by completing your self-contained project.

Let me know; I am looking forward to us talking more. Thanks!

We then talked on the phone for a while. He told me he was going to send me a task to do, a programming test. I told him the truth; we were travelling for the Thanksgiving holiday. And then, I had to go to Portland for Mozilla’s All Hands Meeting for another week, so it was going to be a while before I could tackle the problem.

And then I came back from Portland with the Mozflu, and I was laid out for several more days.

I finally got started on the project. It had sample anonymized data from PitchFX, a system which tracks every pitch. I was told I needed to present this data in an interesting way using Ruby-on-Rails, which I did not know at all.

I bought an online course and spent a few hours reading and playing with sample code, and the I wrote something which presented a histogram of average velocities of a given pitcher for the first 10 pitches, the next 10, etc.

I was quick and dirty and it was ugly, but I had something to turn in.

A couple of days later, the manager called me. He told me that they had narrowed it down to two. They liked my general experience a lot, but that the other candidate had more direct experience with Ruby-on-Rails, so they were going to go with him.

Still, I almost got a job in baseball!

It was hard to be disappointed.

Evernote – 2014

evernote
If you have to sync with Windows or Android, it’s still a great product. Highly recommended.

 

The second Wednesday after I started at Mozilla, while I was still in the Bay Area for orientation and training, I got this note:

I came across your profile today and was very impressed with your background and projects!  I’m not sure if you’re familiar with Evernote, but our goal is to help the world remember everything, communicate effectively, and get things done. We’re now nearing 100 million users worldwide!
We currently have a Mac OS opportunity available and your background looks like a great match! To tell you a bit more, our core team will always stay small (we say no larger than you’d invite to your house for dinner), but at Evernote, a lot of our initiatives are cross-platform so we often have other engineers cycle on and off as needed for various bits of functionality. We currently have a lot of these initiatives going so there are probably another 8-10 engineers in our codebase right now located around the US, Germany, and Switzerland. Our Design and QA also sit right next to us. We’re like a big family.
With regards to our projects, we are in the midst of a complete redesign of our existing Evernote Mac application. It will include sweeping architectural changes that will allow us to take advantage of more recent OS X technologies as well as share more code with our other Evernote clients. Our goal is to produce a much more light-weight client that feels quick, responsive and modern.
If this sounds interesting to you, please let me know a good time to chat further!

Argh! Where were they 3 weeks earlier? Or better yet, two months earlier?

I responded that I had just started a new job, and that I wasn’t interested in moving to the Bay Area anyway, and they responded:

Thanks for getting back to me! We are open to remote work for this role if the skill set is suiting for what we are looking for. I don’t want to waste your time so please let me know if you are wanting to learn more and I will definitely set up some time for you. However, congrats on your new role with Mozilla!
Looking forward to hearing back!

Now I was in a quandary.

I took the job at Mozilla for three reasons.

  1. I needed to work, and it was the only offer I had. It was a QA job, and I had been hoping to be rid of QA forever, but what can you do?
  2. One of my best friends recommended me, one of my favorite managers was the VP, and another acquaintance was a former coworker of mine, all from Cygnus.
  3. It was work on open-source, which I had missed since leaving Cygnus/Red Hat.

So, I knew nobody at Evernote. It was certainly not open source.

But, I loved the product and used it. It would have meant staying as a software developer, rather than being in QA. And, I could have worked remotely.

I should have interviewed. I was already in CA; they and I could have got the interview process to work. And then, if I got an offer, considered it on its merits. If I accepted an offer, it would have meant telling 3 friends that their recommendations and interviewing were a big waste of time.

So I said no.

Postscripts:

  • I loved Evernote, but their pricing started being pretty high. And then Apple introduced Notes with iCloud syncing. Since I did not have to sync my notes with Android or Windows anyway, I ditched Evernote at that point. It’s a shame when Apple Sherlocks you.
  • You have to take care of yourself. Disappointing my friends was the primary reason I did not interview. I will never know if that position would have worked out, but I knew it was in development which is what I wanted. I should have taken care of myself; true friends would have understood.

 

 

Google Again – 2014

On my third day on the job at Mozilla, I got an email from Google (see Google – 2014 and War of Attrition – 2014 for my previous encounter with them in 2014):

I came across your background from a previous application and I’d like to know if you’re open to exploring roles at Google again. If you are, I’d be happy to set up a time to speak with you about roles in the Software Engineering department. Let me know a good day and time for us to chat privately, best contact number and I’ll set something up at your convenience.

Also, if you could forward me a copy of your resume. Thanks and I look forward to hearing from you!

I replied:

David, thanks for contacting me. I just interviewed at Google in February, and was not extended an offer. I just started a job at Mozilla this week. Not only that, but Mozilla is allowing me to work at home in Austin. I am not likely to want to move to the Bay Area.

That being said, I am open to talking to you. I am available at 9:00 tomorrow if you want to call me. I am in town this week training at Mozilla.

I don’t think you would convince me to move at this point.

He did call, and we talked. Turns out, Google had two separate files on me, so he did not know that I had talked to them in the previous few weeks. He promised to consolidate those files. He was still willing to start the process if I wanted to interview again. I still really wanted to get back in to software development instead of QA, but there were several strikes against it:

  • I would have to move to California again, instead of working at home.
  • One of my best friends started me on this job. One of the best managers I had worked with was now my grandboss. I had another friend in the same department. I would have screwed all of them somewhat if I had left after only a few weeks/months.
  • I just did not feel right about interviewing for another job the first week on a new job.

So I said, No Thank You.

That being said, I already saw problems at Mozilla.

  • There had been a CEO controversy that sprang up between the time I accepted the job and the time I had shown up. My first day was the first day of the new, second-choice CEO.
  • The Desktop browser division, of which I was now a part, was not being funded anymore; we were on maintenance mode. All of the energy and money was going towards Firefox OS, a new mobile phone OS designed to go onto phones in developing countries. Walt Mossberg has an excellent history of this process.
  • There was no energy in the people in the office. Everybody was depressed. There was a feeling of despair in the air.

So, on the 3rd day, I knew something wasn’t great about Mozilla. Which is a shame, since I was so excited to be in open source again.

 

War of Attrition – 2014

Late 2013 – mid 2014 was a busy busy time. I was employed full-time, but was not happy with pay or benefits. I interviewed at several high-powered places, and a startup. It was a lot to keep up with. I made this table to keep track of everything.

Date Apple Klink Mozilla Google Amazon Golden Frog New York Yankees
2013-12-02 Interviewed in Cupertino Friend says I should apply
2013-12-04 Applied
2013-12-05 Keep me happy email received
2013-12-09 Another keep me happy email
2013-12-11 Friend refers me to VP who is another friend
2013-12-13 Told me that they would make permanent offer
2013-12-20 Sent email to hiring manager for several positions
2014-01-03 Accepted permanent offer Contacted me via LinkedIn
2014-01-06 Turned down Phone screen
2014-01-08 Hiring manager sends me email
2014-01-09 Applied and immediately turned down
2014-01-10 Talked to manager of one team
2014-01-13 Email received
2014-01-14 Talked to friend from Google
2014-01-21 Contact from LinkedIn
2014-01-23 Another phone screen
2014-01-27 Technical Phone Screen Phone Interview
2014-01-28 Technical Phone Screen
2014-01-29 Technical Phone Screen Technical Phone Screen Turned down
2014-02-10 Onsite Interview – Seattle
2014-02-18 Onsite Interview – Mountain View
2014-02-20 Onsite Interview – Mountain View
2014-02-21 Turned down
2014-03-03 Offer made Turned down
2014-03-07 Offer accepted
2014-03-10 Announcement that Klink was shutting down
2014-04-08 Mozilla CEO scandal – manager reconfirming acceptance
2014-04-10 Last day at Klink
2014-04-21 First day at Mozilla

So, at the end of this process, the company I had been working at disappeared, and I got only one offer rom the other places I interviewed at. The real bummer is that all of the other opportunities were software developer or software manager positions, but the offer was for a QA job. That was disappointing. Nonetheless, I needed the work.

Welcome to Mozilla.

Google – 2014

Right after the new year, I got a message on LinkedIn:

How are you? I see you are at Klink, is that still correct? We know there is awesome talent coming from that company so naturally I wanted to reach out to you.

I’d love to have a chat with you about some of our confidential projects at our headquarters in Mountain View, California and ultimately see if your interests align with things we have going on over here at Google right now, or in the future. I’m available most days, what time and day would work best for you?

Look forward to hearing from you!

Thanks!

So, the last time I had interviewed with them was in 2000, which was before they went public, and before they became “Google” and started interviewing “the Google Way”. I also applied to them in 2008 when they had their first Austin office, but they turned me down. In the 14 years since I first interviewed there, they had become one of the most famous companies for software engineers. The thing that Google did from the very beginning is: They got rid of schedules.

There is a lot of literature out there about scheduling and managing software projects, starting with https://en.wikipedia.org/wiki/The_Mythical_Man-Month written about the OS 360 project at IBM in the late 1960’s. The conclusion that all of them have reached is that scheduling software is hard/impossible. There is a lot of literature that hard dates are one of the most destabilizing constraints on a software project. So Google got rid of them. They embraced software management methodologies such as Agile are a way to promise small, discrete deliverables. They had started writing books and giving talks about how they did things.

In 2000, they were just another startup, with all of their engineers on a death match towards an IPO. In 2014, they sounded like a software paradise.

And they were recruiting me. Wow!

I was star-struck. I knew that if I was hired by them, I would have to work in California, but from what I understood, it would have been worth it.

I replied that I was interested, and the recruiter wrote back:

Thank you for getting back to me so quickly and I am glad to hear you think so highly of Google and that you are interested in possibly exploring opportunities. I am looking forward to chatting with you soon.

How does your schedule look next week? Does Monday, January 6th work for you at 9:30am PST? Let me know if that works for you.

An updated copy of your resume along with the names of any current Google employees you know will definitely help us to streamline our conversation and the process as a whole.

Looking forward to chatting with you soon and happy new year!

I sent her a list of 19 people I knew were currently working there, and my updated resume. And we talked. She talked about their organic product model. She also mentioned that if they did make an offer, I would have 90(!) days to report. The next step was a technical phone screen.

And they sent me an email with all kinds of information in it, such as the following links:

And then, they sent me a tome on interview preparation. The first part:

Interview Prep:

First off, don’t be intimidated.  A lot of candidates find the interview process to be challenging, yet fun! That being said, candidates who spend ample time preparing using the below guidelines tend to do far better than those who do not.

There were then pointers on planning ahead, what to expect, how to succeed, what Google is looking for, further reading, and technical preparation tips, including studying complexity, sorting, hashtables, graphs, math, operating systems, coding. Coding could include constructing/traversing data structures, implementing system routines, distilling large data sets into single values, data transformations, …

And it finished with:

I know this was a lot to read, but I wanted you to be prepared.

It was very long email with a lot of detail, and despite the admonishment not be intimidated, it was totally intimidating. So I started reading my old algorithms book, but realized that a book where the pseudo-code was written with Pascal might be a hindrance. I bought the more modern version in Java, Algorithms, 4th Ed (Sedgewick/Wayne)

Then, one of my old friends from Apple who was working at Google got in touch with me, and chatted with me about the interview process at Google. It was good to hear from him, but he basically repeated what that long email had said.

So I did the phone screen. A man from Singapore called me(!). The problem was a reasonably simple graph algorithm problem. I thought I did well on it.

They took quite a while to decide on next steps. I told them truthfully that I had two onsite interviews scheduled in the next couple of weeks (one at Amazon, and one at Mozilla). She acknowledged that, and said that she would “try and speed up our process on my end as much as possible.”

A couple of days later, I was informed that they wanted to interview me onsite! That was exciting.

The logistics were fun; I was already interviewing at Mozilla in Mountain View on the Tuesday after President’s Day. Working with both companies, we agreed that they would split my travel costs, and that I would interview at Google Thursday after President’s Day.

I got yet another copy of the long email about preparing for the Google interview, except they told to expect 5 45-minute technical interviews with a Google Engineer.

The day finally came. I arrived at the GooglePlex to discover that it was really different than when I went in 2000.

Googleplex Google Headquarters Aerial
The Google campus reminds me of the home screen on Android. There is all kinds of stuff their, but it is kind of just thrown together. Apple’s campuses are like the iPhone home screen. Tight, neat, and all of the pieces are designed to work together.

Looking back on it now, I can see that I did not do particularly well.

Session 1 was some kind of string processing problem. I remember doing well on this one.

Session 2 was about what it he minimum number of squares/moves that a bishop would need to move on a chessboard. I tried to solve it with math; probably would have done better using a graph.

Session 3 was an architecture session. I never know how to gauge these; I still don’t really have enough experience in this area to do super well on these.

Had lunch with an engineer. They were totally boring. Gave one or two word answers to all of my questions.

Session 4 was all about figuring out how many regions a given point touched. I had a brain fart on the exact terminology for exponential complexity, but this seemed fine.

Session 5 was a disaster. The interviewer’s English was really hard to understand. The problem seemed really really basic, but required a large amount of code. I kept trying to find clever ways to avoid writing all of that code, but the interviewer was having none of it. I wrote and wrote and wrote, and I still feel I missed some point somewhere that would have made the problem easier…

And that was that.


The next post will wrap up the late-2013/early 2014 job search, with a timeline, and what actually ended up happening.