San Francisco Engineer Moved To Chicago – How The Job Search Went

This post is part of a three-parter:

  1. How The Job Search Went (you’re reading it!)
  2. What Helped The Job Search Work So Well
  3. Differences Between The Two Tech Scenes

I’ve met quite a number of people who were interested in the move along the way, driven out of the Bay Area by the beyond-excessive cost of life, and I thought I’d share what I learned going through it, in case it could turn useful to someone else. In a nutshell, the job search went insanely better than I would have thought, so I hope you can reuse some of this for yourself.

What I mean by the cost of life difference: $500k in SF will currently get you an OK studio in an OK part of town:

Screen Shot 2016-05-29 at 10.29.16 PM

Or probably less, since properties in SF typically go for ~120% of their listed price.

And the same $500k in Chicago will get you a stellar 3-br 3-bath duplex (so, 2 living rooms) in the best part of town, with some exterior space and 2 heated garage spots.

Screen Shot 2016-05-29 at 10.38.14 PM

Or, probably better, because properties in Chicago typically go for ~90% of their listed price.

With that same amount of money in Chicago, you have a lot of choice, and therefore could have different priorities, and end up going with the not-as-luxurious, not-as-well-located 4-br single-family house. Or typically, you may spend much less and get an awesome 2-br for $350k, which most small families do (I had to pick a higher price comparison, because there’s basically nothing at $350k in SF).

These are NOT overstatements, but real, typical examples. Also, tech salaries are almost the same (I actually got a significant pay increase in the process).

My personal preparation and my result numbers

First, I marketed myself as a “Senior Full-Stack Software Engineer with engineering management experience“. I did not study or prepare for the interviews, because I was not interested in companies that have “CS algorithmic” challenges, only in those who wanted to test the skills they needed from me for real, and that I do have for them.

Note that given the stakes, I took a pessimistic approach, and opened contacts aggressively at first, which turned out to be overkill, but had the invaluable outcome to make me meet countless fascinating people in the Chicago tech scene.

Now the numbers:

  • I opened conversations with 17 companies (only counting those I had at least once on the phone; many many more immediately replied to me that they weren’t hiring for my kind of position or weren’t interested to talk to me; but they didn’t cost me any real time, so that’s very much ok).
  • I was formally rejected by ONLY ONE! That was right after their take-home mini-project, I asked if they’d be willing to share their thinking, and in true startup fashion, they didn’t reply. It bummed me out because the company had a great product, and I thought “well, first of many, moving on”; but obviously I turned out to be surprisingly wrong!
  • About half of the companies had take-home projects (most of them took 1 to 2 hours; one of them took 2 actual full days!), the other half had pairing sessions (remote or on site). Pleasantly, about 80% of them had relations with what the company actually does; the others were just fun cool projects (“build an MVP for the clone of a social network of your choice”, …)
  • Only one tech interview was a CS algorithmic quiz with silly algorithmic questions (“how would you write a function that would check if an integer is a palindrome integer”; are you really going to ask me to do that on the job??). I passed the interview, but gave the lead up quickly thereafter, but it was a bummer, because the role was about self-driving cars (cool factor!).
  • I passed all 16 other phone screens and tech challenges. Next step: the on-site interviews.

Problem was: I had planned only 1 week in Chicago for on-sites, therefore 5 business days, therefore time for 10 Chicago companies, each for half a day. I had no idea that so many companies would be interested to see me when I started, so I hadn’t anticipated that “good” problem.

Two of the companies were based in San Francisco (including Salesforce that I ended up joining), but they both needed to have phone interviews with me that week, so I dedicated half a day for them. Therefore, to end up with 9 local companies, I had to pick 5 companies to give up without even going on site and giving them an opportunity to talk about it, which didn’t feel very cool of me at all, but I really had no choice… Obviously I picked the “CS algorithm quiz” company first, plus one that never got back to me after my tech challenge (if they’re not reactive, they probably don’t want to work with you that much), and 3 other ones that felt at highest risk to be a culture mismatch, and/or at highest risk not to close.

  • Back on numbers! If you’ve been following, I ditched 5 companies, and went on on-site interviews with 11 companies (9 in Chicago, 2 in SF).
  • I was starting to get very decent offers, so after meeting them, I interrupted conversation with 3 of them after they said they wanted to make an offer, but before they made it, because I knew I preferred to proceed with other employers no matter what their offers may have been.
  • 2 of them dragged their feet towards the end, and still had steps they wanted me to unlock (both cases, talking to executives who had difficulties making time) when the deadline I had set up got passed (it could have taken weeks more, and I had enough interesting offers that it wasn’t a problem on my end; plus, I had shared my time constraints with everyone, so it shouldn’t have taken them by surprise). They both said they were leaning towards making offers, which makes sense when you’ve talked to everyone but executives.
  • If you’ve been counting, 6 companies made me firm offers.

This was more than I was expecting when I started, so I had to thin out again. I rejected one offer because it was somewhat dishonest because of some shady VC deals (more on that in part 3!); I rejected another one because there would have been some pretty obvious culture misfit.

I was left with 4 offers, all absolutely great and in 4 companies I could easily picture myself working at, but which were also all amazingly different and incomparable. It took me a few days of thinking to try to come up with a good way to make a decision; but I eventually accepted that there was no good way to make a decision.

In the end, I went on a mix of logic and gut feeling, even though the latter is not the way I like to make important life decisions…

More details about how I marketed myself

My positioning on the job market (“senior full-stack software engineer with engineering management experience”) was definitely a key factor that got to that outcome. Of course, “software engineer” is what everybody is looking for in the tech industry (and outside), but what about the other words?

  • Senior: well, I didn’t bullshit there, I could prove a track record of seniority in front-end stuff, in back-end stuff, and even more stuff, separately. I’m aware not everyone is so lucky. By contrast, a friend of mine graduated from a bootcamp last year and was positioned as a junior engineer in SF on stacks that are pretty common with me; but the market is pretty saturated with bootcamp juniors by now, and people with real-life real-industry project experience are all the more interesting and seeked after. After 9 months struggling, he went back to his previous job.
  • Full-Stack: I made it explicit right away with all employers that I meant “front-end + back-end”, but that’s what they all understood in the phrase too anyway. That’s kinda the focuses everybody needs right now. I’m aware not everyone is so lucky. By contrast, a senior engineer friend of mine builds lower-level firmware at Apple, and has been trying to leave for about a year. But those skills don’t recruit much at all anywhere (even less so outside of South Bay), so he gave up trying about 2 months ago. The combination of senior + full-stack definitely positioned me as quite interesting to talk to, for a lot of needs. (EDIT: After a year of searching in vain, that friend took on learning node.js, and quickly found a full-stack engineering job at Netflix, for, and I’m not kidding, exactly DOUBLE the latest salary he had at Apple. Positioning, positioning!)
  • Management experience: notice that I didn’t present myself as an “Engineering manager” right away, because I didn’t want to close the door to the people who didn’t need to hire directly engineering managers. The question came up very often: “Do you want to be an engineer, or a manager?”; and I’d answer “If you take me on as an engineer, we’ll take it from there”, and I think people appreciated the flexibility. Also, some project managers with weak tech experience present themselves as engineering managers, and I wanted to put it front and center that I was an engineer first, manager second.

Also, people seemed to appreciate a lot that I truly knew a lot about startups, healthy VC deals, typical startup lifecycle, … Even the big companies seemed to appreciate it and had questions around it.

How did I do it?

Honestly, I’m not entirely sure, but this whole phase was very intense in energy and tight organization. I go into details about what I think made a difference in part 2 of this three-parter post.