How to prepare for losing your programming job
codewithoutrules.com
codewithoutrules.com
They also gave everybody a month to accept or decline that offer.
In practice, that meant that everybody at the remote office spent a month getting paid to look for a job. It was a bit like the job center in The Full Monty, but folks were actively supporting each other: helping each other practice whiteboard questions, going over each others' resumes, etc.
If you can get current on some new technology on company time or raise your profile, do it. Folks who didn't get a relocation offer got to clean out their desks the day the bigwigs showed up.
I don't have numbers from the group of people formerly of that office, but from my experience it's a hell of a lot easier to find a job if you have one than if you don't. If your company seems shaky, the time to start looking is now.
[1] Edited per suggestion here: https://news.ycombinator.com/item?id=23181222 originally read "remote".
The question of paying remote employees the same as "regular" employees is complex. Switching to the hypothetical:
If a company is headquartered in Louisville, KY, and somebody wants to work from e.g. Los Angeles, it would be ludicrous for the remote employee to accept the same salary in LA as in Louisville because the cost of living is much higher in LA. Considering the opposite situation, I find it unlikely that a company headquartered in LA is going to jump at the chance to pay an LA salary to somebody in Louisville.
Society seems to want to cram people into as small a space as possible near work places, optimizing for business progress. Seems to me to make sense in the short term and fail in the long term. Here's to hoping a silver lining of the pandemic is better utilization of space towards human happiness and the health of the global ecology. :)
Right now, LCoL area employees complain about getting paid less in absolute terms. If they get bumped up to HQ payscales, the HCoL-area employees will (rightly) complain that they're now being paid less in relative terms than the LCoL-area folks, despite producing the same value as them. So there's no winning, no "fair" answer.
In the long run I imagine this affects the cost of living in an area for people that work for companies in that area. Ex. what happens to smalltown Iowa when people get remote jobs and drives up prices for housing and food?
One exception I can see is if the company would pay a premium for remote employees living in a city where they have an office, so that they can be asked to come in if there is an emergency.
E.g., California's WARN layoff notice requirements:
Per Chapter 4, Part 4, Sections 1400-1408 of the Labor Code, WARN protects employees, their families, and communities by requiring that employers give a 60-day notice to the affected employees and both state and local representatives prior to a plant closing or mass layoff. Advance notice provides employees and their families time to transition and adjust to the prospective loss of employment, time to seek alternative jobs and, if necessary, time to obtain skills training or retraining to successfully compete in the job market. For more information, visit WARN Frequently Asked Questions. ...
https://www.edd.ca.gov/Jobs_and_Training/Layoff_Services_WAR...
My principle point was to make known that immediate layoffs without notice or compensation are not something all employees are required to immediately and unconditionally accept. Know and assert your rights.
Searching "warn notice layoffs bankruptcy" gives some additional information.
https://duckduckgo.com/?q=warn+notice+layoffs+bankruptcy&ia=...
A bankrupt firm virtually always has assets. The question is how these are distributed amongst creditors. Inclusive of employees.
The fact is the MO of most companies is to deny anything is wrong right up until the moment everyone gets fired. One needs look no further than the Telltale games saga.
Seems the best way to avoid long term unemployment in this day and age is to be "coding interview ready" constantly.
My best friend at a FAANG always tells me he dreads having to look for a job ever again - whether voluntarily or involuntarily, as he is in no way shape or form ready for coding interviews.
leets are good for FAANGs but not so useful at mid tier.
The only exception might be more recent front end interviews, which seem to do "code X in JS" questions more. But ironically the more prestigious companies like FAANG seem to do this more, while the lower tier companies are still leetcode for front end engineers.
Coinbase and Stripe both have programming tasks that are clearly condensed versions of the actual work you'll be doing there. Google does too if you get a good interviewer, though it can vary a lot between interviewers. Snap, Lyft, and Facebook were all leetcode exercises - but they're ones that have been hurting more from the coronavirus recession.
Leetcode is popular now because there're a bunch of tools (CoderPad/Karat for interviews and Leetcode/HackerRank for practice) that make it easy. I'm already seeing the pendulum start to swing the other way though - many of the best companies are building hiring processes tailored to their own business because they get a competitive advantage from doing so, both because they get more signal on prospective applicants and because it means interviewing does not become a transferrable skill that you can use to get multiple competing offers.
As one example, a "mid-tier" company gave me homework to do, which I spent a lot of time and effort to do a good job. The team apparently was impressed - supposedly I had one of the best solutions, and I got to the onsite. Then the onsite had two leetcode rounds, one of which I struggled with. I got rejected. I don't know the exact reasons of course, but considering I felt the rest of the interview seemed to go great, I suspect it's the leetcode problem I failed to get the superoptimal solutino for that killed me.
Nowadays my policy is to just reject any company that gives me homework to do as part of their interview loop. More often than not it's a waste of time. The exception would be companies like FAANG or other "top" companies. I'd definitely still do homework for Coinbase or Stripe.
Some company I've never heard of or some non-tech company? Nope. At least studying leetcode scales horizontally across many companies.
I got asked leetcode in stripe interview.
(Similarly, the Coinbase interviewer said that if I had interviewed a year ago it would've been leetcode but they've redone their process significantly since.)
(BTW, does that mean homework? Just want to clarify. Something like "build this feature or write a function that does this" kind of thing?)
How about the on-site? What do they make you do there?
Personally, I interview at another company every 6-12 months. It's not so often as to be a significant burden, but it is frequent enough to be a reality check if I'm getting rusty or if employers are starting to expect more of me (because my seniority is increasing). Recruiters are so busy trying to find bodies you're unlikely to burn any bridges by just going through the motions to see if you're a fit. Hell, I have an ongoing relationship with a Google recruiter that I talk to every other year or so just to see what's up--I've never worked for Google, but I have interviewed there a few times, a few times with success and others without it. Worst case, they don't give you an offer and you walk away with an understanding of what your weaknesses are. Best case, you get an offer and maybe it's a better one, you now have a better job.
Disclaimer: Am FAANG employee :)
I resonate to this, coding interviews significantly annoy me. I'm a significantly better developer than I was 5 years ago, but I would have passed so many interviews 5 years ago that now I wouldn't remember where to begin, and that's because I studied relentlessly for interviews. My second to last semester of college I focused so much more on studying for interviews than my own classes, that I had the spreadsheets to make sure I would just get my C's just to ensure I could nail interviews. I did well in almost all of my interviews, and my grades completely stopped mattering.
Right now, if I practiced leetcode daily, I'd think it would interfere with my work. I don't want to do it on my free time as I actually enjoy a work/life balance.
I love my job, I'll study when I have to, but until that day comes I'm going to focus on becoming the best engineer I can be and continue bringing value where I'm at.
Tech interviews need to change - they just reward people who studied for the points, not a true representation of who would be a great engineer for their company/team. Similar to how high school overwhelmingly rewards "passing the test" more than active learning.
I don't understand why people complain about leetcode so much when it's such a low bar to clear. A lot of people want $400k/year jobs at Goldman, but Goldman won't hire you unless you went to Harvard or Wharton. Shouldn't people be glad that they work in an industry where the only barrier standing between them and a $400k/year Facebook job is a few hours of interview practice?
I am thankful that there is a "meritocratic" way of getting into these top companies. But I don't agree grinding leetcode is the way to measure such merit. I definitely don't agree that it's "just a few (or even a few dozen) hours" to prepare or that it's a low bar.
That said, I've come to terms with leetcode and coding interviews in general. If I ran a company or if I was a hiring manager with clout, I'd never hire people in such a way. But that's the current state of the game, and short of becoming the 99% shareholder of Google overnight, there is nothing I nor most people can do to change a thing. So might as well play the game and try to win it, instead of just whining about it.
The irony is, I enjoy solving leetcode problems now. It's actually become my hobby - since all my free time outside of family is consumed by studying for interviews. But I don't enjoy whiteboarding hyperoptimal leetcode solutions under 45-minute interview pressure.
I think it's a much better way of measuring merit than people give it credit for. It measures a mix of problem solving ability and work ethic (it's not purely about innate skill, you can get much better at it through practice so it's also a test of whether you're willing to work for career advancement), both of which are probably things you want to hire for. You can also easily ratchet the difficulty of these things up or down depending on how selective you want to be when hiring. People complain about how "unrealistic" leetcode problems are but there's no intrinsic reason why the interview has to exactly replicate the job, it just has to be correlated with traits that are useful for the job.
But then - why do anything more than the bare minimum at your job to get by while devoting the rest of your time (including any downtime during your job's working hours) to study leetcode for interviews instead? At least until you get into an "endgame company" - FAANG or otherwise, where you feel comfortable staying a while.
Disclaimer: I actually do this to a certain extent - and I am not proud of it. In fact I am downright ashamed of it and angry at myself. It completely goes against my ethos of being the best engineer and best professional I can be. Which is how I worked when I was younger and more naive. But excelling above and beyond at my real, actual, work, will not get me anywhere, at least where I am now. I want to get into such an "endgame company" so that I can do my best work again.
That sounds pretty healthy to me. If other companies want you to do work instead of leetcode, they should pay competitively.
I think a lot of small and mid size companies are cargo culting on it too.
I can't imagine a lawyer having to grind LeetLaw for months every time he wanted to do a job change.
The lawyer probably doesn't have to refresh the fundamentals of law and grind legal cases constantly, but then again, the lawyer in the small unimpressive law firm likely has no chance, ever, to get into a top law firm.
The line of business .NET developer at some unimpressive non-tech company can grind leetcode and get into top companies.
I hate the means to which makes this possible (grind leetcode) but I would pick the option of having upward mobility any day.
I have only once in the course of my 18-year career received a six-figure (barely) pay raise. It was one of the few occasions where I did not need to cram dozens of hours of Leetcode.
> the only barrier standing between them and a $400k/year Facebook job is a few hours of interview practice
There is a hell of a lot more than a few hours of practice standing between a candidate and a $400k job at Facebook. A $200k job, sure.
Also, you went from "a few dozen" to "a few" here.
> being willing to put in effort into interviewing to progress in your career and being willing to put in effort into doing your job to progress in your career,
I don't think many of the skills I've picked up in my career apply to interviews. I think they would be great skills that carry over to other companies, but I'd have to exclusively practice leetcode to feel comfortable with interviews. That's a problem in my book, because I have a lot more to offer than "Yeah, I can do leetcode problems all day."
Also wouldn't be surprised if quite a few people are leetcoding on the side during their day job's working hours.
Disclaimer (as per my other comment): I'm guilty of it too.
Hard for introverts like me, I am better at computers than people which means I am at a disadvantage even in the computer field it seems.
Worried if I ever have to look for a new job especially getting older.
Dangerous advice in the Covid era :-P
Alternatively compose a "Thanks, not now" template that you send to all recruiters when they email. Then later on hit them with a "How about now?"
Its definitely good to keep in touch with a list of people like this. I think you'd be better off to ask your friends for recommended people. Most recruiters that randomly contact you are crap.
A lot of software companies will continue to generate income as well, due to having recurring income like subscriptions and licenses.
Sure, talks and blogs can be useful, but in the same way that companies are harmed by resume driven development, there are community downsides to resume driven blogging if just that things trend towards whatever is new at the time rather than a diverse range of topics. It also is not helpful if a lot of them are geared towards impressing recruiters rather than informing.
We want tutorials by people who actually enjoy creating good tutorials.
I say this as someone who spent a couple weeks on Stack Overflow answering trivial questions after graduating so that I had more of a public profile. I would answer anything and everything easy as I wanted to get over 200 rep points (so I could say I was "ranked"). Anything challenging was skipped simply because if it took more than half an hour to answer, I might not get 200 points that day.
I knew nobody would see me as an expert due to inexperience (so nobody would really read by Stack Overflow answers), so I was trying to generate proof of enthusiasm.
That isn't desirable for the programming community as a whole as it meant that niche questions I had the answer to never got answered as I had points to earn.
EDIT: Leetcode is for passing the interview. Resumes. blogs, and tutorial writing are about getting the interview. Leetcode doesn't attempt to solve this problem.
If you're unaware, you can search google for "HackerRank Codility Devskiller leetcode"[0]
If you're already aware of those, do you have something in mind that the existing skill evaluators don't do?
[0] https://www.google.com/search?q=HackerRank+Codility+Devskill...
I am thinking more about how one might demonstrate expertise in the kinds of things one shows off in blogs, such as expertise in Spring with respect to financial systems.
No ideas presently, just something I would like to see.
I think most developers find their jobs interesting and have a lot to talk about, even if simultaneously they don't believe what they do is much to talk about.
Note to self: Do some writing again. i started a portfolio site on Github years ago and started to just word vomit about my earlier projects and jobs (internships, school projects). It adds up over time.
I've long been in finance tech (i-banks, hedge funds) and still am in the industry (though trying desperately to get out). At the start of my career, I made some effort to learn the business domain. After a while, it became apparent that very few people (including hiring managers) cared, and that it was a total waste of time as far as furthering my career - even if I wanted to stay in finance tech. Better to just study leetcode.
All the leetcode in the world doesn't make them call you in, but it certainly helps you pass.
I do suspect there exists a category of higher-end headhunter agencies with a stable of high-quality, proofed candidates that those agencies can more successfully place than other attempts. Just an anecdote, but I have seen in my area some things that look more like a "small team" placements where that team has some history of helping companies radically improve their software quickly. I am specifically thinking about an actual team that gets hired as a group but into fulltime roles at a company as a unit. This seems to be a prequel to an acquisition of the company that hired them being the end goal. Then that entire team seems to repeat the process elsewhere . . .
Now that I'm a programmer I rarely find the itch to dive into things like this again. Every now and then, I'll want to create some silly website with a game or something and again I'd find myself spending late nights just working on it. I've realized that the fact that I "know something" isn't what drives me, it's that I'm interested in what I want so much that I'll learn anything just to get to do it.
Lately, I've been starting to feel the itch for doing something related to baseball (again, something I love), like data analytics or amateur scouting or something. I have no idea how to get started, but I just know I want to. I hope I find tutorials from people who are just as excited to share information as I am to absorb it.
I know next to nothing about the players and my typical sources are not putting much out except "the broadcasts are pretty watchable, great circle change." Would love to see more scouting reports on the players who have been very much overlooked in all this.
That completely dismisses the fact that the majority of businesses don't want good coders. They want adequate coders who aren't assholes. You can't create an online test that judges whether someone is enthusiastic, kind, honest, cooperative, and reliable. Nobody wants to work with a "10x developer" who passed coding challenges with flying colors but is unpleasant to work with. I'd much prefer to be judged based on my personality and my willingness to learn.
What you're suggesting would not solve any problems, and at worst could harm people's ability to have a job if employers buy into such poppycock.
What does that have to do with screening out assholes?
In its best light, its discriminatory. How is someone with a life, such as children or other things going on, supposed to take huge amounts of time away from their personal life to practice skills that are unrelated to the thing they actually want to do?
one of my biggest regrets when doing my masters degree was spending my extra time learning things a data scientist would do. Like learning how to go through huge amounts of data, pull NFL data to see which yard lines on the field have the most injuries (1 and 2 yard line because of % of runs), learning NLP techniques like LDA, etc. Only none of this mattered, the guardian at the gate was asking me how to build and balance binary trees, etc.
The fact that I regret spending my time learning how to do the things the job requires is a travesty of the system. It exposes how asinine the whole system is.
There are so many things I want to learn and do - both technical and non technical. Including many things that will make me a better engineer for employers current and future.
But all of that is put on hold so that I can grind leetcode on my way into a better job first. Because nothing else matters.
Everyone's afraid of that rogue false-positive developer though.
Also consider gathering "knowledge" resources from your current job. Silly stuff like your dotfiles, but also things like config files from the hosts, parts lists for physical systems, phone directories, etc.
Getting an interview is maybe 10% of the overall process.
To make it through the interviews, you need to study an algorithms textbook and practice coding exercises. At the very least, you should be able to solve any of the Easy-rated problems listed on Leetcode without issue. You need to know what things ike "dynamic programming" are, etc.
I'm not saying that this is the way things should be. Just that this is the reality of what you will need to do to procure a job offer.
Edit: I see my advice has proven controversial. If you have better idaes about how to prepare for whiteboard interviews -- which many of us are statistically likely to encounter should we be thrust into the job market -- please share your suggestions!
With 20+ years in the industry I can say that I never encountered this kind of thing until fairly recently. I know it was out there, especially with the BigCorps, just not that common when I was looking for work 10ish years ago.
It would be hard for me to stomach an interview like that without just walking out. I do not code on whiteboards.
This whole subthread reads like it's escaped from r/cscareerquestions.
I think it mainly involves focusing on non-tech companies (who, BTW, are also starting to join the leetcode cargo cult).
I got my current job at a non-tech company (bank) several years ago. I did not get leetcoded back then. The interview was mainly language and framework trivia. Nowadays, we have to subject candidates to leetcode.
https://www.airbnb.com/d/talent?location=&uuid=&relocation=&...