I have spent the past two months looking for a new job. I’ve been fortunate to have the personal runway that I get to be picky about where I work next, but I have still found it difficult to not just settle for a job.
24 job applications. Interviews with 10 companies. Two explicit rejections. Two job offers.
Happily, my job search is over! Before I announce where I’m joining, I want to reflect generally about my experiences searching for a new job. Part of this is me learning about the job market, and part of this is me learning about myself.
Normally, my job searches are quite passive. I’ll have a chance encounter with someone at a conference, or I’ll hear about an opportunity from a friend. The opportunities just kind of… I dunno, they find me. I haven’t had to look for a new job in years.
Not this time.
This time, I had to actively use my professional network. This has led me to realize that I haven’t really been maintaining that network. Blame it on covid, or moving home to Canada, or full-time remote work, whatever. The point is, I had to rebuild that network a bit and re-train myself on how to cultivate a professional network.
Most of the companies that I sent applications to never got back to me, unless I knew someone who could put in a good word. This would make the difference between silence and a response, or between waiting four weeks for a response or waiting four hours.
A lot of what was humane about my job search process has been what hasn’t happened. That is to say, on average companies were a lot more humane than I expected.
When I began preparing, I started practicing leetcode challenges because that’s what I thought companies would test me against. (These challenges aren’t good predictors of skill, but my expectation was that companies would use them anyway.) However, I didn’t experience a single one. Every pairing interview and take-home assessment was a fair test of my skills; each was representative of the actual kind of work that I would actually be doing at that actual job. I was always allowed to use whatever tools and resources I normally would. It was a pleasant surprise.
One of the take-home assessments was paid. Another company used a take-home assessment that would be used in the following interview, as a code review interview. Neat! I had interviews where I was given code projects and asked to assess them, like sight-reading musical adjudications.
On the whole, I had pleasant and fair experiences with technical assessments. No one asked me to build an anagram-checker or invert a binary tree. I’ve heard that leetcode-style challenges are still commonly used as a filter for more junior roles, but I was still happy to not encounter them.
For me, the most inhumane part of my experience was the silence. I put a lot of effort into job applications. I spend hours researching the company, its products, and goals. I spend time spent writing up compelling pitches for why I’m a good fit. Putting all that effort in attaches me to the application. Silence feels like the worse possible outcome because at least an explicit rejection comes with a sense of closure. But anyway.
While I liked a lot of my experiences with pair-programming interviews and take-home assessments, I also had a few negative experiences. I’m going to avoid getting into specifics, but they happened early in the process and I learned from them.
Only one of the half dozen take-home assessments I completed was paid. I am not a caregiver and I was unemployed at the time, so I could give whatever time I needed to these assessments. Not everyone can.
Two companies sent me rejections after putting me into their interview pipeline. That’s fine, rejections happen. But in both cases, the rejection came in response to my take-home assessment. I want to know specifically why I got rejected. This feedback exists. Someone assessed me and their notes exist somewhere, and I’d like to know what they say so I can learn and do better next time. I feel like… after putting hours into these take-home assessments that I am owed this feedback.
I asked for specific feedback from both companies.
Throughout this whole process, I’ve been oscillating between brave confidence and fearful anxiety. I knew I would find a job, but would it be a good job? My first blog post this summer described how wide a net I was casting, but my recent follow-up post alludes to how my goals had narrowed significantly. I want to take some time to go into more detail on that narrowing.
First: the technology. In my original post, I was on the fence about what technical direction to go in. At the time, I thought that I was agnostic to the technology altogether – that I could be happy building with any technology. I was wrong.
I really, really enjoy React Native development. I’m more productive in TypeScript now than I have been in any other language in my career. And I like being productive. WWDC was upcoming when I wrote that first post, and I was hoping Apple’s conference would get me excited about doing exclusively native development again. But it just didn’t happen.
I want to work in React Native. But I also want to make amazing user experiences – that’s what got me into mobile software back in 2009. Why “but” in that last sentence? Surely, one can make great user experiences in React Native? My original post describes the tension delicately:
When I zoom out and look at apps built with React Native, I often see software that fails to delight. It is entirely possible to build delightful apps with React Native. But I must admit that it doesn’t seem to happen as often as with apps written in native technology.
When I interviewed at companies who wanted my help using React Native, I saw that different companies were interested in the technology for different reasons. There are companies out there who appreciate the importance of a good user experience and who want to use React Native. They understand that pure React Native can only get you so far. They want my help diving into the native host operating systems to make truly great apps.
Next up: company size. In my original blog post, I said that I was more concerned with a company’s culture than its number of employees. But that perspective fails to consider the connection between culture and company size. The number of employees changes how culture changes, how it grows, how it gets changed by leadership, and how all those changes propagate throughout a company.
The value I bring to a company is more than my technical skills and acumen; it’s my ability to build up context and form relationships, and then to act on that context and leverage those relationships. In one of the best pieces of advice I’ve gotten, my former manager told me that “not every company values what [you] have to offer, but the ones who do value it… they value it a lot.”
I’m not sure that large companies actually can value what I have to offer.
To date in my career, I’ve joined companies at orders of magnitude of 10, 100, and 10 000. 10 employees feels like too few people to me. But 10 000 is too many. I’m looking to join a team where it would be possible to get to know every person in the company. So, under about 150 people.
Summing all this up, then. The technical niche I find myself in is building highly-polished React Native user experiences. The cultural niche I find myself in is compassionate technical leadership. The company size niche I find myself in is not too big, not too small, but juuuuuust right.
These niches, they compound.
I wanted to be picky in my job search, but I need to find a job. This is why I kept oscillating. Confidence, then anxiety. I would get really excited about a company before I would realize it wasn’t going to be a good fit.
I needed to be sure.