-
Get That Coding Job
22 July, 2023Preface
So far during my career, I’ve designed software developer hiring processes at three different companies. I’ve personally conducted a couple hundred interviews, I’ve run teams that have conducted thousands, I’ve written staffing software, and I’ve spoken on hiring at conferences. I have also mentored people for fifteen years, am involved in several online organizations based around helping people progress or move into tech, and while CTO at Operation Spark bootcamp, I spent months helping run the job hunt phase of the program. In one form or another, I think about this stuff every day, and people ask me for job hunt advice a lot.
I’ve been meaning to write this article for a long time and I’ve got 6000 words of notes alone; so before we launch into this tome, let me just say that I very much acknowledge that my own experience is not that of someone trying to break into the industry. At this point, its not even similar to most senior developers. In addition, even expert advice on an activity which is performed relatively infrequently and with long delays for feedback, is precisely the sort flagged by researchers as being not much better than random.
Yet people keep asking me for advice on job hunt. And I do think that over the years I have developed a set of mostly common sense things that I tell people, and they do seem to find helpful.
We’re going to cover the mental model of what I’m arguing for this post, then in subsequent ones we’ll go into thoughts on resumes, interviewing, and job hunt strategy. There’s a lot and there’s a limit to how much you should listen to me, but you probably shouldn’t just have AI summarize it. I tried to have Claude write it, it did not turn out well.
Mindset
Let’s not be shy about this, Job hunt is a Sisyphean task.
Except of course it is not. Sisyphus was the ancient Greek king damned to eternally roll a boulder uphill. A thing can only be Sisyphean if it is impossible to attain your goals. Otherwise, it is just hard. And job hunting is hard. You are best served getting into the right frame of mind.
Fortunately, it is not hard because you have to push a heavy boulder. It is hard because every part of the job hunt will be all about failure. Sure, in the end you suddenly achieve your goals, but right up till then…well it sucks.
But what if job hunt is not primarily about that?
Writing code, doing projects, being a good coworker. These are all important and valuable skills. But it’s not the full set of skills needed to get the job. There is a different set. Your primary goal is to build up these job-hunt skills.
Before we launch into that list though, let’s consider the structure of a job hunt.
The Funnel
At its core, a job hunt is marketing, is it not? You are marketing yourself.
Have you ever heard marketing or sales people talk about “the funnel”? The idea is that sales opportunities pass through a series of stages. At each stage a decision is made and the opportunity either progresses or gets eliminated and falls out of the funnel. From a hiring manager’s point of view, each applicant is an opportunity and - as they move through the process - at each stage the number of remaining applicants gets smaller. From the applicant’s point of view, at each successive stage the chances of them reaching the end, and an offer, increase.
So it is really more of a sieve than a funnel, but I guess marketing folk aren’t known for their nomenclature. (Also feel free to visualize this as a video game…but like, without checkpoints and you never get a chainsaw.)
During the job hunt, with each job application, you enter a funnel. Here is a rough list of stages you have to get through:
- Your resume needs to get looked at. That means someone has to actually be manning the hiring apparatus. You’ll be shocked how often there’s simply not someone on the other side. it’s not usually insidious, but I would wager this is the case with 20-50% of all job postings.
- Alternately, they might have gotten so many resumes that they simply couldn’t review every one. I encourage hiring managers in that position to pick at random a comfortable number of resumes they actually can review and mass-reject the rest. It sucks, but it sucks less than any alternative.
- Next, your resume should stack up well enough against others to be selected for a phone screen.
- Of course you have to be able to carry on a conversation and demonstrate some competence in a phone screen and to be passed through to an interview.
- Then there’s the rounds of interview - each a stage in itself. Let’s be conservative and say there are three rounds. The details don’t matter so much for the purposes of this list. Lets say these include a technical conversation with the hiring manager, a leetcode-style coding test, and a behavioral interview panel. At each point you might get eliminated as your performance always has some chance of not matching expectations.
- Now say that you get to the end of the interview process…well that’s no guarantee you get an offer! There are other people also moving through the process. Ideally, only a couple should reach the end: the offer usually goes to just one.
- Then of course the offer has to be good enough that you’re willing to take it.
- And finally, at every point in time there’s the small, yet real possibility of the job simply disappearing, hiring being frozen, the manager or recruiter leaving, or people just plain dropping the ball.
This list is key to understand and we will revisit it throughout this series. There are things you can do to improve your odds at just about any stage, but you have to prioritize. Time spent improving in one area is time not spent on another. You have to learn how to think about these odds and how they interact. Unless you’re an ace at Bayesian probability, your intuition here is probably wrong.
Job Hunt Simulator Which is why, after the 50th time I’ve had a conversation with a mentee about how the odds don’t play out like they think, I created a tool to help! You make a Fermi estimate for your odds representing all the above stages and it interactively runs thousands of simulations to show you how that job hunt might go.
Its crude and purposefully worksheet-esque as I want people to focus on the relative impact of certain variables compared to others, but the math isn’t complex and I think it demonstrates these things well. I’ll be referring to this a lot throughout as well.
Job Hunt Skills
Lets first give a disclaimer: If you have amazing, preexisting marketing and sales skills you probably don’t need to hear any of this. If you are incredible at networking and can cold-call sell a wool coat to a sheep, you don’t need my advice and you should just go do the things you already know how to do far better than I. But for the rest, lets talk about what I mean by “job hunt skills”.
“There’s nothing to applying at all. All I need to do is tailor my resume and click submit, right?” – a mentee
Yeah, it’s not that simple. But fair question, what is this entirely different set of skills anyways? Let’s do another list.
-
Goal setting and sticking to a schedule. Including the ability to set small-yet-achievable short-term goals, set commitments, do regular accountability check-ins, and adjust as needed.
This is the key to improving at most things. Musicians and high-level athletes already know this, but now you’re in on the secret as well!
-
Ability to simply find jobs find apply to.
Ever look at a job board and dejectedly feel like none of these listings are a fit? It’s not just you. This influences the rate at which you can apply for jobs and therefore how many chances to progress through funnel do you get per week.
-
The mere act of applying is hard. You have to deal repeatedly with an emotional roller coaster. You have to put yourself out there, you get hopeful, open up yourself to dejection, and if you are lucky it all comes crashing down on you when you get a rejection (which is still better than no response).
As humans, we try to avoid these situations, yet the only way out is through. There are ways to increase your odds, but there are no magic bullets. You can desensitize yourself so that it doesn’t sting so bad or…well there are no better options. This again influences that application rate, how frequently you will need to take breaks, and the likelihood you end up giving up and walking away from the whole thing entirely. No one wants to apply to 3000 jobs and you very likely won’t have to, but wouldn’t it be nice if such a high number didn’t give you all-night indigestion?
-
You have to get to a point where it is easy to write and talk about yourself.
It’s not a natural thing for most people, yet is what much of the interview and application process consists of. Getting good at this is going to affect much of your experience. Your application, phone screen, interviews are in no small part exactly this!
-
Following up.
This is key to get people to actually pick up and look at your resume where they otherwise might not. There’s several different strategies available, how do you (tastefully) become impossible to ignore?
-
Cold reach-out.
Contacting individuals you do not know, requesting favors of connection or information can often feel socially taboo, yet it is key to several networking approaches. These can improve your odds of applying to jobs where you are likely to be considered, increase your chances of getting past the screen, and improve your ability to talk shop during interviews. It is a very worthwhile tool to have in your pocket
-
Researching companies and industries.
Most people have no idea how to do real research. It’s not ten minutes browsing the company website. Understanding how to take notes, join communities, and how to conduct informational/reverse interviews is key here and takes a decent amount of practice.
-
The ability to have engaging conversation live and asking good questions.
These are of course a must for interview, phone screen, and offer stages, as well as supporting techniques in many others. In these post-COVID pandemic days, we all need some work to improve here.
-
Ability to talk about technology.
It’s great that you know React, C++, and Kubernetes. But can you actually demonstrate that knowledge live in a conversation? Can you make it mutually enjoyable to show what a convivial coworker you would be?
-
Leetcode-style coding. Or live-coding. Or take-home-project coding.
Well you knew this would be on the list as it affects those interview stages, but you are probably surprised how small a proportion of this list these skills really are. They are important, and you should work on them (but keep in mind how many other skills are just as important).
-
Network building and maintenance
This is the core of “networking”. How do you actually “build a network”? What is one? How do you use it? How do you tend it so it doesn’t decay?
This again, affects stages at the front of your funnel directly and all others indirectly. For example in the course of networking, you might hear about un-posted roles, you might get ideas for new places to apply, you might get a referral. You will get lots of practice talking to people in industry; that seems rather useful.
This is a lot - almost an overwhelming amount! Even in this lengthy blog series I don’t think I’ll get to everything. Worse, most of it is well outside most people’s comfort zone. So how do we climb a mountain like this when it is both uncomfortable and emotionally draining?
Habit and organization are key.
You have to get organized
There’s a saying in advertising that half of all money spent on it is wasted, the problem is that you don’t know which half. The same (with some caveats) applies here. And if we’re taking lessons from advertising, then what did the industry do in the late 90s to deal with this conundrum? Well, with adtech, they started to…
Track everything
Yes, that bugbear of the modern internet - tracking - started initially as an attempt to simply understand which advertising worked and which was merely annoying! Which is actually understandable and almost noble.
If your primary goal is to build up job hunting skills, your secondary goal is to gather data that can be used to guide you further in the job hunting process.
I’ve been following recently on a forum of dozens of very high-level software engineers and managers looking for and sharing job hunting tips. Here is an example of the sort of thing they are regularly posting.
(Reprinted with permission.) A snakey diagram of someone's job hunt. Now your numbers will of course be very different, but at a bare minimum this is the sort of thing you should be able to generate at any point in time and with little effort. This does not mean “I can check my email and see where I applied” or “well Indeed has this nice tool to show you who has looked at your resume”. You have access to a lot more data than such tools offer!
Remember those weekly accountability and commitment meetings I mentioned? Well these work best if you can set goals and discuss success in terms of numbers. Ideally, all of the following are things that you should be able to give weekly updates on.
- Exactly how many places you’ve applied, in the past week? Ever?
- To the best of your knowledge, exactly which stage in the process are you with each application.
- What follow-ups have you done? When? Where will you follow-up next?
- Which cover letter and/or resume did you use for every job application? If they have a custom form with essay questions, what exactly did you write in there?
- What industry is every company in and what they do? How large is the company?
- How excited are you about the opportunity? Putting a number to this is great when you are determining how to prioritize follow-ups!
- What is the list of mistakes you have made in interviews? What is the list of feedback you have received?
-
Of the jobs you find yourself applying to, which skills are they demanding? Which are regularly nice-to-haves?
All of this presents an opportunity. If you’re a coder, you should code! Make your data work for you; play with it. Don’t just copy-paste skill lists, standardize things. If you have a category for “Javascript” and they’re asking for “ReactJs” or “Node”, then that still counts as Javascript. Are you making bar charts about this stuff? Are you using it to guide your study? Is this at least the sort of thing you’re organized enough to do in theory?
This is all starting to sound a lot like a spreadsheet, does it not? Probably a good idea to have one. Or use a markdown file. Or design a database! But be consistent and detail-oriented.
So yes, this is a lot. An awful lot. It does take the pressure off though, doesn’t it? You still want a job of course, but there are many shorter-term wins available! You are taking those job applications and converting them into a positive source of much-needed data that in turn you can use to improve your job hunt.
It’s all about cadence
Here is the general shape of the job-hunt I am proposing:
First, you find a schedule that you can stick to.
Next, you find a baseline of what sort of effort you can maintain long-term. In its most basic form, you want to be able to say something like “I have maintained it for a while and I know that I can apply to
X
amount of jobs per week without breaking a sweat.”Now,
X
is going to be different for you than for others, it can be very low or quite high, and it should not be guessed at. You need to have actual numbers on a spreadsheet of your experience that you can point to. And, yes, you absolutely need to know whatX
is; because once you do, you can start tweaking.Remember the aforementioned accountability meetings? You need those. Use a mentor, your school/bootcamp, a friend, a group of others on the job search, an AI assistant, a journal, or even a formal Job Search Council. At each meeting, review your week, go over your numbers blame-free, discuss any adjustments (eg. is
X
actually lower/higher than you previously believed?) and commit to some goals for your next week.This, is where the tweaking comes in. Say your
X
number is 25. You know that using a reasonable amount of effort, in the time available, you could consistently apply to 25 jobs each week, every week. You are working to increase the odds that your resume is actually looked at. What tools are available? Follow-ups are such a tool. However, these can be time intensive, and require their own set of skills to get working effectively; how to get better at these without overloading yourself and burning out on the process?Well, what if for next week you committed to something different? You scale back to only 15 job applications, but you commit to 5 followups to jobs you applied to over the previous two weeks. You should still be able to handle this effort, and as you improve you become more efficient. Once it becomes easy, you can try going back up to 20 job applications but maintaining the follow ups.
A cadence gives you a ratchet to improvement. Be honest with yourself and set your goals well; you will always be getting better.
I should probably stop and address the focus on job applications versus other strategies. It’s not common to hear advice after all that cold-applying is the worst thing to do, it doesn’t work! No one gets a job that way!
I emphasize with the desire to avoid an activity that is, for most, deeply ego-bruising. And yes, there are other techniques of course, you can study industries, join communities, reach out to old coworkers, and these are all things we will cover. But - when you have no process - those can be hard techniques to get started with. It so happens that the process of applying is a workout that builds some very specific and useful skills.
So yes, if you have an uncle’s brother who can get you a job super-easy you of course should do that. Do that before reading another article. But for everyone else…then what? Because ultimately, all roads lead to Rome. There is really only one thing that you must do to get pretty much any job after all: You have to apply.
Applying to jobs is the surest way to make sure that you actually do something measurable, it is an effective backstop when nothing else works, and frankly - it trains you quite well on many of the skills you’ll need to succeed in other areas of the job hunt.
To be continued
Well, we’re over 3500 words already and good lord, we’re nowhere near done. I think we’ll stop here and pick up next time with more on the view from the hiring manager’s side, resumes, interviews, and what on earth it actually means when people tell you to network.
For those who do not want to wait for the next few posts, feel free to grab my raw notes. It is an org file - similar to markdown - which you should be able to open in your text editor of choice.
-
Job Hunt 2022 Retrospective
20 November, 2022I recently took an offer as a Director of Engineering with BlocPower where I will be working on creating the Building Data Collective.
I am writing up my job search because several people have asked me about my experience of landing a job in climate tech. I am also writing it up because its the sort of thing that I just don’t see written about much. I don’t know who is interested in hearing about it, but somebody should be out there being open about their experiences with this stuff and I just happen to be somebody.
My Parameters
I want to state up front where I am coming from as it is not where 99% of job seekers are. This is important to understand for context and hopefully is not so out there as to make the rest completely unrelateable.
- I was employed while looking around. While I feel like the role I was in was a poor fit, I was not miserable and enjoyed my coworkers and the work itself. While I am well aware that I was underpaid by industry standards, I am financially comfortable so there wasn’t a lot of pressure to “make a move”.
- I do not tend to optimize for money. I had taken pay cuts for my last two jobs and I wanted to go up for this one, but my bar is still well below what someone with my experience who optimizes for salary would be getting.
- I am extremely senior and technical. My last 3 roles have been Engineering Director at Surge Consulting, CTO at Operation Spark, and Principal Engineer at findhelp (I was also for a time in an Engineering Manager and Engineering Director here as well).
- I also do not optimize for people I want to work with. While I believe that this (and money) are perfectly legitimate things to optimize for - and I have in my notes a long list of people I would love to work with - it was not my focus in this case. I was aiming largely for the industry, and a role that would use more of my abilities beyond the technical ones to make the biggest impact.
- I am extremely confident in my interviewing skills. I have personally interviewed close to 300 senior developers and led teams that interviewed thousands. I have designed interviewing processes at my last 3 companies. I have presented at conferences on interviewing developers. By now there is no impostor syndrome left; I have a very good idea of where I rank alongside others.
- I believe my resume is very strong. Resumes are a black art and different hiring managers have their own opinions but I’ve been a hiring manager in a wide range of situations and my resume is exactly what I would want to see.
- Once I make it past initial screening I very rarely get eliminated by interviewing. I far from always get the offer, but its almost always after the very last interview in the process. It has been many years since I walked out of an interview feeling like I’ve anything but nailed it.
Summary
- Total time from starting casually looking to getting hired was eight months.
- In my notes I applied to 39 companies. Because I was not always fastidious with tracking things (boo on me!), I estimate the actual number is closer to 60. I rarely one-click apply. I always put some significant effort toward each application.
- Beyond an introductory call, I got into the interviewing process with maybe 15
- I dropped out of the process purposefully of two.
- Three companies dropped me midway through the process due to the role disappearing or changing.
- One company dropped me from consideration for a manager role after the first interview and redirected me to a high level IC role (unfortunately none of those were available at the time).
- I went through 8 full interviewing processes of 4+ rounds (not counting intro calls) and got 1 offer which happened to match up to my skills and ambitions super well.
- I never received what I would consider actionable feedback. Much of the feedback I received was along the lines of “it came down to you and one other person and we just felt like they were a better fit”.
- I mostly applied to companies of 10-200 people. While I did talk to a Big Tech org (Meta), I didn’t enter their interviewing pipeline. I was willing to consider it, but my recruiter contact disappeared and this was not something I was actively pursuing so I let it go.
- I got some good leads from active and engaged recruiters initially after setting my LinkedIn profile to “casually looking”. This lasted for a month or two. Afterwards, the contacts from recruiters I received were all extremely impersonal and not even close to what my profile clearly stated I was interested in.
- Even among all-remote companies, location can still be an issue as hiring from a new state implies a whole new tax regime. Two very promising processes had to drop me early due to not having a foothold in Louisiana (I also have friends this has happened to).
- While getting an internal advocate was the best strategy for landing an interview, it was far from a sure thing. Quite a few times I had passionate advocates (even high-level internal-to-the-company advocates) making connections only to see the ball get dropped for a variety of reasons.
I am reinforced in my belief that for very experienced people (and perhaps most others), the big impediment to getting hired at most companies is not resume, skill, or even ability to demonstrate skill, so much as the fact that the vast majority of companies simply do not have their hiring sh*t together. Positions are far less solid, needs are far less thought through, and hiring processes are simply not welled tuned. I fully believe that somewhere around half of all online job applications go into a queue that no one monitors in a system rarely logged into. I suspect this is often due to turnover or confusion on the part of hiring managers. I realize that sounds like a rationalization but I have been on the other side of the table as well. I have personally taken over a hiring process that had only a trickle of candidates, only to discover a whole tab in Lever bursting with submissions that no one had known to check.
I believe that this is doubly so the case in climate tech. While I think it an incorrect stereotype that most climate tech companies are bootstrapped 5-people shops without a serious product, I do think that as an industry overall they are far less mature on the process side. As one of many indicators, consider that in a good interview process the final round should be largely a double check, not a significant filter. Every moment that you spend talking to a candidate who you do not end up hiring is a waste of both your and the candidate’s time. If a company is having 4, 5, 6 rounds of interview then with each successive round they should be less likely to eliminate someone, a final-round elimination might be necessary but should be considered a failure of process worthy of retrospective and adjustment. This seems to be rarely the way people in climate tech are thinking about things.
Similarly, I consider interviews where a large cross-section of a department/company has to meet you to be a signal of insecurity. When unsure of the effectiveness of the hiring process it is not uncommon for managers to seek consensus from the team. While understandable, and usually an attempt to de-bias, the distribution of responsibility has the opposite effect by granting everyone veto power - a situation where bias is all but guaranteed!
I think far too many people in hiring are unsure of themselves and feel a predisposition to zero-risk. However, hiring ultimately is a risk, there is only so much mitigation possible.
Strategy and Job search evolution
After applying and as I start hearing back from applications, I naturally spend more time engaging with those companies and less applying to new opportunities. Hence my job searches tend to cluster into natural rounds.
Round 1
My initial job search started in early March 2022 as a result of a few particularly despiriting months at work combined with some difficult departures, and no acknowledgment from leadership that they agreed with nor even saw the same problems I was calling out repeatedly. As this was largely about frustration, my efforts were minimal and unserious - consisting largely of asking around in a few Slacks, casually browsing TechJobsForGood listings, and toggling the “show recruiters I’m available” switch on LinkedIn. I also wrote down and made clear my criteria which, at the time, was jobs that could check multiple of the following check boxes.
- In the climate tech industry (using a loose definition)
- Building productivity tooling - especially developer productivity tooling
- Companies doing something non-trivial with AI/ML so I could work adjacent to it and get my toes wet
- Companies committed to functional programming - especially any LISP
For roles I was looking specifically for staff+/principal developer or engineering manager/director positions where I could help set technical and product direction.
This resulted in a round of interviewing that lasted until approximately mid-June. Deep into the process, one company rethought their needs. Another I dropped out of due to misalignment of expectations. Two had my initial contact leave the company and the process get abandoned. Four other companies (2 climate tech, 2 productivity tech) moved me all the way through multiple rounds only to get no offer.
Reading between the lines a bit where they did not tell me explicitly (sometimes they did), the reasons were roughly
- A misalignment when talking to the (final interview) COO between his and my expectations of how much I would work on product direction versus just heads-down coding
- Another hire was a better fit (possibly due to me having no professional experience with Clojure)
- A discomfort with my contracting background due to specific bad previous experiences within a smaller startup. To their credit, they took the time to actually call me up and talk to me about their hesitations and apologized for not previously having this as a filtering criteria.
- A last-minute change in direction for the role, orienting it toward more junior managers and a better fitting candidate for the new direction
This was of course very despiriting as I spent significant time getting to know all these companies and envisioning myself working there. As I geared up for another round I decided a shift in strategy might be appropriate.
Strategy shift
In addition to having spent many years mentoring tech job seekers, I have been a bootcamp CTO where I worked with grads seeking their first job directly. I have built up a long repository of advice for how one should conduct and strategize about a job search. As in my mind I hadn’t been “seriously looking”, I had so far been implementing very little of it.
In a conversation catching my father up on the previous round, he called me out that whatever I was doing wasn’t working. “It’s fine, I don’t think of this as a failure at all” I told him through clenched teeth. That evening I acknowledged quietly to myself that he’s probably right. If I was going to be serious about what I was doing, I should practice what I preach.
So, suggestion #1 (well, not technically #1 on everyone’s list, more the big one I wanted to try out) was to build up a series of internal advocates at companies by focusing on an industry. I would do this by joining an industry-focused community and participating within it. In my case this meant taking a first step of narrowing down my own criteria even further. Fortunately I already had a pretty good idea of what I wanted to do. Earlier that year, and wanting to be more intentional about my charitable giving, I had taken the Effective Altruism introductory course. And, while I find myself disagreeing with much of the ways in which this community construes their arguments (a whole different topic, but Doing Good Better is full of spurious correlation, lazy analysis, and some strangely colonialist thinking), I also agree wholeheartedly with many of their general points. In this particular case, the argument goes that to do the most good, you should either optimize your career for money and donate most of it, or find an important industry in a role that you can do significantly better than others. Well, I really believe that climate change is a society-level threat, I really do think that climate tech will have to be a large part of our way out of the mess, and - not sure if anyone’s noticed here - but I do have a bit of an ego. So toss everything else out the window, I should be focusing explicitly and ruthlessly on climate tech and specifically on roles where I can use my specific blend of contracting, mentoring, business-strategy, community-building, and technical experience to make the biggest impact possible.
The general idea of this join-a-community strategy is that, by becoming an active participant, you build up your visibility. Others in the community - the most active of whom are typically movers and shakers themselves - tend to take notice. You request informational interviews, chat, build up relationships and have them become advocates for you within their extended network. That - as I tell people often - is networking; it’s not just eating crappy pizza in the back of a dev meetup.
Again, in my case I already had a community in mind. In my late-night-kitchen-cleaning sessions I had listened to, and enjoyed, a couple episodes of the MyClimateJourney podcast. In these podcasts they heavily promote their exclusive (and paid) slack community. Well, $10 per month for a slack is a lot sure, but its nothing if the end result is being able to execute better on a strategic roadmap. Just a few leads from there could easily pay off. I signed up and started introducing myself.
I’ll also note that I purposefully did not pick an area of specialization within climate tech. The entire field is somewhat new but highly technical with tremendous amounts of low-hanging fruit many unproven approaches. I figured that - given the little time for research I have available - so long as I avoided the obvious scammers, one guess at what area might be highly impactful would be as good as another. We’re talking about making an impact here, I can get excited about the details later.
Rounds 2 and (spoiler alert) 3
So I joined, having made a point of being active (difficult as I am in, like…15 other slacks and an IRC, and work) and started connecting. I would monitor the Slack’s job listings for postings that seemed interesting (many in the summer, starting to thin out significantly into the fall), answer questions when I could, and just try to engage in general chat for the sake of community presence. (Pro tip for technical communities - make a technical statement that is mildly controversial and watch the engagement roll in.)
I connected with people almost immediately with a couple reaching out directly to me, and myself making the effort to reach out to others for an introductory conversation whenever I saw something that seemed interesting. In the meantime I monitored ClimateBase and - as I was now more focused on getting an insider edge - connecting to people on Slack (MCJ or Rands Leadership Slack) and LinkedIn.
So did all this work?
Well somewhat. I certainly got a great round of initial interest and quickly entered several interview processes.
- One petered out after a very enthusiastic recruiter interview. When following up, the recruiter had left the company and their replacement was unwilling to push me along without the department pulling me in. My contact within the company in the meantime kept telling me the position was open and he had no idea what counted as a “pull”…Ah, big-org problems.
- Another moved me along for about half the process with final rounds scheduled when I got word they filled the role
- A third passed me through their full process with great feedback and multiple rounds of direct engagement from their CTO only to ultimately get a rejection and no feedback whatsoever. Very disappointing for how open they had been earlier in the process.
- A fourth also passed me through their full process and multiple panel interviews with the hiring manager himself as my advocate. He did me the favor of calling me with the rejection. Apparently I had high marks throughout but the members themselves of the team I’d be managing felt like we “didn’t gel”. Yeah, not a lot I can do with that one.
And this put me into the third round. Now by this time things had gotten markedly better at work and - while my Effective Altruism-acquired logic still applied - I was no longer approaching things with the same vigor. Still, even without heavy enthusiasm, by now the process itself was humming along.
- One company I had started conversations with months ago that were slow-walked ended up taking me through the entire process only again to end in a “we found someone else” situation. (Lest I sound bitter, I think this is absolutely legitimate for a startup. For example many need a high-level person who can handle their ops. I, in the meantime, lead with “I really dislike doing ops”. Picking someone else over me here totally makes sense, I simply wish they could realize that sooner.)
- A second company, I ultimately talked to the CTO who basically explained the bulk of their needs were just some UI performance optimization - not a great fit for what I’m looking for.
- A third I was in process and heading into final rounds when I hit pause as…
- I got an offer. This was a company I had started conversations with at the very end of Round 2. It seemed scrappy and disorganized and like it will be a real pain in the ass at least for a while. But also potential for building up some fascinating connections, having some fun, making a real outsized impact, and a task that - on paper at least - I can’t think of anyone else who is more qualified for than me.
And hence where I am now.
Retrospective and Takeaways
To start with, it doesn’t matter how hot the market is. If you have something specific in mind and no pre-existing connections, its going to take longer than you think.
I am also more convinced than ever that if you are targeting high-level non-IC positions at smaller companies your best bet is one of two options:
- Start as an IC - maybe even at the risk of taking a career-step backwards - establish yourself as a power-player, and work to transition
- Build up a network of internal advocates, ideally multiple.
Without the above it is simply too common that you get lost among the shuffle. A company might know they need a Head of Engineering, but they likely have very little idea of how to filter resumes for one. Unless you’re rolling in with a resume that happens to hit their preconceived notions of the role directly on the head it’s going to be hard to even open a conversation.
I also think that I spent more time chasing companies than I needed to. A few places that seemed extremely exciting to me in the digital-twin modeling space, I could never get a hold of anyone either via applying, follow-ups, cold reach-out on LinkedIn, or even occasional referrals. If a place is giving you complete radio silence, there might just not be anyone on the other end to pick up the phone.
I do wish I had identified and focused on what I wanted earlier. I also think I could have taken time to investigate other climate tech communities, participated even more, and reached out to others even more than I did. At another time (read: pre-kids) I might have even done significant research into the area on my own time, doing literature reviews and building up strong opinions on what seemed the most exciting. That said, the process of interviewing was very educational in itself. “What questions do you have for us” usually translated into me learning something about the state of the industry.
Having switched jobs 3 times in 6 years (2 layoffs and this), I hope I’ve found a great long-term home and to be done with it for a while, but if I find myself in the position in the future I might try to apply to enough places so that I can run some hypothesis testing. Does a custom cover letter actually reliably get me the best results? What is the best response rate I can get just by cold-applying with a really strong resume? Do connections made via an individual that vouches for me (even if we met relatively recently) work better than ones I made myself by a cold approach? All interesting stuff that I have opinions on and would love to gather some data on.
-
What is Dependency Injection?
31 January, 2020Recently I was asked in the Operation Code Slack to help someone understand dependency injection. What follows is my answer - as always, editted for clarity and to make me seem like a better writer.
This is also in the context of javascript, though the concepts apply regardless.
So what is Dependency Injection?
This is one of those terms that feels complex but is really so simple it is almost silly there exists a term for it. At it’s core, dependency injection is really just a certain way of having your code use other bits of code. The term exists not as an academic topic, but simply make it easier for developers to talk to each other about how their code is structured.
-
TDD With No More Tears
2 December, 2019This is a writeup of Talk of the same title, exploring what I consider to be an approach to test driven development that is both more practical and easier to apply on a non-toy project.
Let’s begin.
Test driven development (TDD) is important, it is useful, it results in better structured code; and - for experienced practitioners - lower development times with fewer bugs. So of course we want to scream:
Amirite? As a rapid aside, let’s consider the source of this meme. It comes originally from Hyperbole and a Half - a fantastic, hilarious, and insightful blog largely about the author Allie Brosh’s struggle with depression and mania. The original text was “Clean all the things” and - rather than a call to arms - was in part a statement on the frivolity of fleeting excitation.
The irony of this image as an expression of enthusiasm is…palpable.
So no, I do not actually believe that you should use TDD all of the time and for everything. Of course and definitively not! Test driven development is a technique and - like all techniques - is useful only so long as it is useful and when it is not, it is useless. I have no idea why this is seen as a difficult concept.
-
Understanding Domino's v Robles
4 November, 2019This is about the web accessibility-related Domino’s v Robles court case in the US court system. If you don’t care to read through a big long article and want to skip to the end, head on to the conclusion.
I found myself with some time on my hands earlier this month and thought that it might be nice to dive into a high profile and controversial current events in tech issue as - in my experience - the facts rarely match the hype. Letting the ravings of friends and acquaintances guide me, I picked up the Domino’s Pizza LLC v Robles case to see if I could make heads or tails of what actually went down. What follows is a writeup of a talk I gave on the subject.
Now before I go much further, I should clarify that I am definitely and 100% NOT A LAWYER. I am sure that I got at least some of the following wrong and I stand to be corrected.
I can read ok though, and went through and read the various opinions issued and some of the more in-depth articles on what went on. I also ran my understanding past a friend who is a very good lawyer, so I believe that I’m on as firm ground as a non-lawyer can reasonably be.
I am also not someone who particularly specializes in web accessibility. It is important and I know the basics, but I do not claim to be an expert. I quite possibly misspell the word accessibility as well.
Finally, I’ll note that in the following narrative I occasionally reference but omit a lot of discussion of previous case law and finer points of order. This article is long enough and if you’re interested in diving down to that level just read the opinion itself.
The Story
So before we get too far into it, what are the basics of the story here?
It is this: Domino’s Pizza lost a court case having to do with the accessibility of their website and mobile app.
The details of this were of course poorly reported and even worse understood. In fact, judging by the reaction of many, you’d think this decision was the end of the world.
Honestly, I can sympathize. Being sued is scary, accessibility is ambiguous, and accessibility compliance is not even a binary yes or no thing. What do they even expect from us!?
And then of course there is the economic argument. How many small businesses might go out of business because they cannot afford the extra cost?! The degree to which you are concerned with that will probably depend on your political inclinations, but surely everyone would agree that we want to keep the amount of red tape that small businesses trying to bootstrap themselves deal with to an absolute minimum.
And then there’s the other side of the coin. Fire off the 21-gun-salute, it is the dawning of the Accessibility Age of Aquarius! The good guys have won and everything will be great forever!
Neither of those is exactly true, and telling the wrong story both spreads FUD (Fear Uncertainty and Doubt) and sets people up for disappointment.
But first, let’s review…
The Timeline
So let’s review the basic timeline
- September 2016 - Guillermo Robles files Robles v. Domino’s Pizza LLC in the Central Distrinct of California
- March 2017 - case is dismissed without prejudice by the district
- October 2018 - appeal of the dismissal is argued in front of the 9th Circuit Court of Appeals
- January 2019 - dismissal is overruled by the 9th Circuit
- March 2019 - appeal of the 9th Circuit decision is filed with the Supreme Court
- October 2019 - Supreme Court declines to review the decision
If you are unaware of how dismissal works; essentially a judge may be asked to block a case for a variety of reasons. If granted, the case stops right there and then. For the most part, a motion to dismiss being granted means that the court agrees that some point of law clearly renders the plantiff’s argument moot (and typically that the plantiff has not addressed this).
If you are unaware of how appeals work; there is a hierarchy of federal courts. If you lose, you can petition an upper court of appeals to review the decision and they are free to take it up or turn down your appeal.
So note that what happened here did not include a ruling over Domino’s website.
- Instead, the district court granted a motion to dismiss, meaning they did not hear the case and rule on it.
- The 9th Circuit court overruled the dismissal, saying that yes, you do have to hear the case.
- The Supreme Court refused to review the 9th Circuit’s decision, in effect agreeing that yes, the case can continue.
Again, I want to emphasize that there was no actual decision on anything other than that a specific lawsuit can continue and be argued. Keep that in mind as we walk through this stuff.
So this past October, there was a wide level of outcry and confusion about this decision. Everything from legitimate business concerns to wild-eyed conspiracies.
Most of it was fairly uninformed over what exactly was ruled.
So just from the timeline we can already say a few things.
- No major new law or ruling has been issued.
- Domino’s didn’t actually argue a lawsuit about what was required for accessibility.
So most of these headlines are at least wrong on some level.
The 9th Circuit’s Opinion
So now let’s look at the 9th Circuit’s actual decision and the opinion they issued. I will say that you don’t have to read my recitation, you can go through this stuff yourself. It is quite readable and discussion starts on page 10.
In reviewing the lower court’s decision, they broke it down into three questions to be addressed.
- Does the ADA Title III apply to Domino’s website and mobile app?
- Does applying Title III here violate Domino’s right to due process?
- Should the court invoke the Primary Jurisdiction Doctrine here?
We’ll dive into their reasoning on all three, but first, some background.
The ADA and Title III
The Americans with Disabilities Act passed by an overwhelming bipartisan majority in 1990 and went into effect in 1992.
The purpose of the ADA is:
“To provide a clear and comprehensive national mandate for the elimination of discrimination against individuals with disabilities.”
It is described as similar in scope and intent to the Civil Rights Act of 1964 and imposes obligations to accomodate people with disabilities on employers, public entities, and other organizations. Title III specifically brings them to bear on places of public accommodation.
What exactly is a place of public accommodation? It gets a bit complex but think restaurants, hotels, stores, schools, hospitals; but not private clubs or churches and you’ll be in the right ballpark.
Fellow programmers and other armchair lawyers - I feel you - that sort of ambiguity sounds unacceptable! How would we even code that as a Python function?! However, the legal term has existed since at least 1964 and I have not seen anyone seriously arguing that they do not know if their organization is a place of public accommodation or not. I’m sure there’s some edge cases, but for the most part, no one seems terribly confused by this.
So Title III specifically says that a public accommodation must:
“…take those steps that may be necessary to ensure that no individual with a disability is excluded, denied services, segregated or otherwise treated differently than other individuals because of the absence of auxiliary aids and services, unless the public accommodation can demonstrate that taking those steps would fundamentally alter the nature of the goods, services, facilities, privileges, advantages, or accommodations being offered or would result in an undue burden”
In other words, you have to legitimately try to accommodate disabled people in such a way so that they can use your services to get the same benefits and in the same manner as anyone else.
It is worth mentioning that this is not the opinion of a court or regulation issued by a bureaucratic body. This is the actual law and carries a significantly higher precedence. In general courts have tried to be fair about applying things but yes, it is now and has been legal since 1992 to sue over violations.
So now let’s get back to the meat of the case at hand.
Does the ADA Apply to Websites?
Domino’s argues that no, the ADA does not apply to their or any website. See the language of the ADA - which passed in the same year as the Web was born - is largely over physical locations and there are indeed a smattering of rulings that may support this.
The court here points out that the issue is over services of a place not services in a place. Does that sound like weird, pedantic minutiae? Sure. But it is not limited to this case as I’ve seen that exact phrasing referenced over and over. It seems more a cutesy manner of highlighting responsibilities than some sort of verbal gymnastics to get the law to fit. What the court does in practice is administer what they refer to as a Nexus Test - basically is there some resonable connection between services of a physical place of public accomodation and those offerred online?
Now granted - there can be some ambiguity here. Just not in this case. The court points out that in this case, things are completely unambiguous. Not only does the Domino’s website offer services such as their Pizza Tracker, but it is heavily advertised as the main way offered by Domino’s to find a location near you. This alone creates a clear and unambiguous nexus between their physical and online services.
Additionally, the court points out that yes indeed, the Department of Justice and the courts have held over and over since the mid-90s that the ADA can apply to websites. There have been plenty of similar lawsuits and ink spilled on who has and who doesn’t have to be compliant. None of this should come as a surprise to anyone.
And on a personal note - watching the actual arguments in front of the 9th circuit it seems to me that even the Domino’s lawyer is unclear on what argument they’re making here. It is even pointed out by a judge that they seem to have previously conceded the point that yes, websites can be public accommodations and therefore the law applies.
The court therefore concludes that on this point they have no reason and questionable ability to overturn decades of precedent. Yes, Title III has always and currently continues to apply to many websites in general and very much to the Domino’s website in particular.
This Lawsuit is a Violation of Domino’s Due Process
This is the main thread of Domino’s argument and is the one the lower court’s ruling was primarily based upon.
To start with, due process is the idea that - among other things - the court and judges should try to structure things so as to comply with basic fairness as accorded by the law. Yes, unfair outcomes happen all the time, but courts will at least attempt to apply the basic process of the law evenly and judiciously.
And as far as basic fairness goes, Domino’s seems to have a point. Yes, ignorance is no excuse when going 35mph in a 50, but there are after all hundreds of thousands of laws and regulations that a business might have to abide by. Courts therefore tend to be flexible here and give businesses the benefit of the doubt.
Unfortunately, as noted above, the court states that this is not a matter where Domino’s can reasonably claim ignorance as this has been a well known ruling by the DOJ as early as 1996, and confirmed in multiple court cases. It is far from a niche issue, as Domino’s own arguments make clear and either way, this isn’t really the case that they’re making.
Instead, their argument is twofold.
The No Guidelines Argument
The Department of Justice - Domino’s argues - has not issued guidelines on what exactly constitutes an accessible website in the eyes of the law. As this is the case, Domino’s cannot possibly try to comply as they do not know what they are supposed to be complying with.
This is the main thrust of Domino’s entire argument and one we can all be sympathetic to. You tell me that I can get in trouble but not how to avoid it? What nonsense is this?!
However, the court points out that this is how the law already works in a myriad of cited instances. The law in this case creates a set of obligations, it does not specify how specifically they are to be met. An agency such as the DOJ might choose to issue further guidance, but it is in no way a necessity. In fact, they might purposefully choose to stay silent on a matter (as seems to be the case here) to provide businesses with a maximum degree of flexibility to decide how the law can apply to their specific situation.
In fact, the corollary here would be absurd. If lack of agency guidance was enough to exempt someone from legal obligations, then a law enacted by Congress could effectively be voided simply by an agency refusing to issue any. Worse, you could assert a right to ignore the law simply by claiming any available guidance was not issued by the correct agency or not specific enough to your given situation!
This is simply not how the law works.
The Imposing-WCAG 2.0 Violates Due Process Argument
Domino’s argues further that the assertion in the lawsuit that they should follow the WCAG 2.0 (Web Content Accessibilty Guidelines) is a violation of their due process. The WCAG are issued by the W3C (Word Wide Web Consortium) which is an open but private organization and these guidelines have no standing in the law. The court is sympathetic here but points out that this is based on a misreading of the original complaint. The lawsuit doesn’t say they have to follow WCAG, that is not something a lawsuit can legally assert. Instead it says that Domino’s is violating rights granted to Robles by not living up to their obligations under the ADA. It further suggests that the court might order compliance with WCAG, but - the 9th points out - this is not the issue at stake at all but a potential remediation to be hashed out during the actual suit. It certainly cannot form a basis for dismissing the case outright.
Look - the court is arguing - the way the law works is that you have these obligations under the ADA. It is left up to you how to fulfill them but someone can certainly sue you for not doing so properly. You can then make the case that yes indeed, you were complying with the law and win the lawsuit. You can point to your compliance to WCAG, another standard, or just specific accommodations that you have made, but you actually have to make that argument!
You can even argue that the lawsuit be dismissed because your compliance is so obvious that the suit lacks any merit at all. However, this is not what Domino’s is saying here. They are claiming that no official standard exists for them to follow and therefore no lawsuit is possible as their obligations are ambiguous. This the court is having none of - no, they say, your obligations are flexible but not ambiguous. To rule in agreement would fly in the face of a great deal of case law that determines the exact opposite. So while yes, Domino’s can reasonably argue that their website is already accessible, they cannot argue that the issue of accessibility itself does not apply - and that is what their motion do dismiss is all about.
Primary Jurisdiction Doctrine
The final thrust of the argument is that the court should defer to accessibility and legal experts employed by the Department of Justice to render guidelines or a decision that will either clarify the points at issue in this case or even render it moot. This is referred to as the Primary Jursidication Doctrine, is occasionally applied by courts in similar cases, and was cited in the lower court’s decision to dismiss the lawsuit without prejudice (meaning a similar suit can be refiled at a later date).
The 9th Circuit points out here that nothing actually obligates the court to apply this doctrine and that either way the intent is as a short-term delay while a government agency provides clarity. While this might have been a reasonable position when the district court issued its ruling, the ground had since shifted. You see, in July 2010, the DOJ had issued an ANPRM (Advanced Notice of Proposed Rule Making) stating that they were indeed exploring how they might issue web accessibility guidelines. This project lingered on with little to show for it but nevertheless, when the district court ruled on this in March 2017, the ANPRM was still active and it was possible, if not realistic, to believe that rules clarifying web accessibility standards would be forthcoming. On December 2017 however, the DOJ withdrew the ANPRM, effectively saying that they are no longer working on such guidelines.
The appeals court reasons that, as any further guidance from the DOJ will certainly not be forthcoming, the original logic that deferred primary jurisdiction certainly does not apply. In any case - as the DOJ clearly does believe that websites should be held to accessibility standards - it is possible to imagine guidance that might affect a judgment of wither a website is accessible, but difficult to imagine any that would affect the outcome of a motion to dismiss.
Conclusion
The above is the logic the 9th Circuit court of appeals used to overrule the district court’s motion to dismiss and honestly…it’s pretty solid.
To reiterate what happened:
- This particular ruling was not about what is and isn’t accessible on the web. It was simply about whether the lawsuit filed by Guillermo Robles against Domino’s Pizza LLC may proceed rather than being dismissed out of hand.
- No law or interpretation of the law therefore changed. Everything is the same as it was since at least 1996 and people continue to be able to sue certain websites for lack of ADA compliance. The only difference is that for a twenty two month period, the district court opinion was available to be cited in some motions to dismiss and it now no longer is.
- The court can only rule on what was argued and Domino’s did not argue that their website is accessible or that a certain standard be or not be adopted, instead they argued that lack of guidance from the DOJ specific to their situation meant they didn’t have to follow the law, and the court - while sympathetic to the awkward lack of guidance - pointed out that this is not something unique to the web and either way is simply not how the law works.
- Domino’s did not lose a lawsuit, they simply have to actually argue the lawsuit. This lawsuit is no different than hundreds of others that have been filed over the years. These lawsuits can also still be dismissed, they simply cannot be dismissed automatically. The Americans with Disabilities Act applies.
- The Supreme Court did not rule on anything. They simply declined to take up further appeals indicating that they find no flaw in the 9th Circuit court’s logic.
What happens now? Well…Domino’s has to actually defend themselves in the lawsuit or settle. Personally (and I can’t say this enough, I am not a lawyer) - unless something really incriminating emerges in discovery - it doesn’t seem to me like Guillermo Robles’ case is all that strong. He might well lose the suit, but he does get his chance to argue it, and there is nothing here so obvious or in violation of Domino’s rights as for the suit to be dismissed out of hand.
And what about what you - the web developer or product owner? What should you do with respect to web accessibility to eliminate the possibility of being sued?
Well we don’t concretely know. But we can say the following will improve your chances:
- If your site provides a service to the public you should have accessibilty in mind.
- If the services offerred on your site tie in with a physical place of public accommodation then you certainly should consider accessibility as you have obligations under the ADA. If in doubt, ask a lawyer.
- How exactly you fulfill your obligations is up to you, but you do want to be able to make an argument over how you are accommodating people with disabilities. So long as you are making a legitimate attempt here, the courts are likely to be lenient.
- When in doubt, consider WCAG 2.0. There are lots of different levels of compliance and tips and tricks to choose from and no one is expecting businesses to be 100% with this stuff. This might also be a factor if your company is ever bought as evaluating your exposure to a potential ADA lawsuit is one of the factors taken into account in conducting due diligence.
Also, consult a lawyer. I don’t know if I’ve mentioned it, but I am not one.
OLDER
- 23 Sep Announcing Tech Terms for Memorization
- 05 Jun The Problem With Repositories
- 03 Nov Take Home Programming Interviews Suck
- 07 Oct The Absurdly Underestimated Dangers of CSV Injection
- 03 Aug On `this` in Javascript
- 17 Apr On Javascript vs C# and the importance of community
- 25 Nov Understanding the State of Javascript Modules
- 29 Oct Why You Don't Get React
- 07 Aug Predictions: XHTML
- 15 Jul CSS Only Tabs
- 14 Jul You don't need to learn map/reduce
- 14 Feb This can easily be the most important OSS thing I've done
- 18 Oct Why width 50% inline-blocks don't display side-by-side
- 12 Sep Talk Roundup - Be the Es6iest
- 27 Aug Automated Testing Venn Diagram
- 03 Jul Learn reduce
- 08 Jun Color Mixing Demo App
- 06 May Some self-indulgence from the nolatech chat
- 01 May Why Not MsTest
- 20 Apr Stop teaching h tags
- 19 Feb node-gyp won't install on Windows
- 10 Nov Don't Teach Object Oriented Javascript
- 31 Oct Use Simple Modules To Fix Up Your Ugly Brownfield App 1
- 02 Aug Talk Roundup - Be the Javascriptiest
- 29 Apr On this and new
- 09 Oct Open IIS Express to the Network
- 26 Sep Setting Up RequireJs
- 29 Apr Stop that = this'ing
- 16 Jan Error Handling and the Message Repackaging Anti-Pattern
- 12 May QuickTime and a TIFF (Uncompressed) decompressor are needed to see this picture