xitang
Joined 6 years ago
Joined 6 years ago
The animation stops because it gets blocked due to an issue with the table taking too long to render.
I shared the root cause in a sibling comment and am forwarding it here: Below are more details---
Issue 1. Table with a link overlay in every cell I initially used an off shelf table component to move fast and didn't take a closer look at the implementation. It turned out this component renders a link overlay in every cell to allow user to click table row to be taken to the job link. So 400 jobs with 6 rows end up rendering 2400 link overlays.
The reason it attaches a link overlay to a cell instead of a row is due to a well known bug with Safari, where you can't use `position: relative` in table row `tr` https://bugs.webkit.org/show_bug.cgi?id=240961. Attaching it to each cell works for small number of rows but causes performance issues with large number of rows.
I fixed it by rolling out my own table with css grid instead. It is not as semantic as it no longer uses table, thead, th, tr, td, but thanks to Safari, it is a tradeoff I am okay with.
Bug 2. Unnecessary re-render on Zustand store rehydrate I used Zustand store to filters preference and save it to browser's local storage. On page load, it fetches from local storage to update the state or store rehydrate . I didn't use shallow comparison initially and caused the table to render even if the prev and new state is an empty array due to comparison by reference. Using shallow comparison minimize an unnecessary render.
The animation stops because it gets blocked and appears to be locked up due to an issue with the table taking too long to render and another bug causing the table to re-render again.
Below are more details--- Issue 1. Table with a link overlay in every cell I initially used an off shelf table component to move fast and didn't take a closer look at the implementation. It turned out this component renders a link overlay in every cell to allow user to click table row to be taken to the job link. So 400 jobs with 6 rows end up rendering 2400 link overlays.
The reason it attaches a link overlay to a cell instead of a row is due to a well known bug with Safari, where you can't use `position: relative` in table row `tr` https://bugs.webkit.org/show_bug.cgi?id=240961. Attaching it to each cell works for small number of rows but causes performance issues with large number of rows.
I fixed it by rolling out my own table with css grid instead. It is not as semantic as it no longer uses table, thead, th, tr, td, but thanks to Safari, it is a tradeoff I am okay with.
Bug 2. Unnecessary re-render on Zustand store rehydrate I used Zustand store to filters preference and save it to browser's local storage. On page load, it fetches from local storage to update the state or store rehydrate . I didn't use shallow comparison initially and caused the table to render even if the prev and new state is an empty array due to comparison by reference. Using shallow comparison minimize an uncessary render.
Of course, as you said, it is more effective if you have connections or have gotten cold outreach by recruiters. But my point is that cold applying still works and quite some folks land their jobs this way.
One challenge is that WLB is more team specific than company specific as it can vary from team to team.
I have a related question and answer in the FAQ page and am attaching it here:
---
3. What does “best paying” mean?
Different types of company pay software engineer at different bands. The best paying companies are usually tech companies, where tech is the core competency of the business and software engineers are first class citizens who play a key role in building the core products, e.g. FAANG, Dropbox, Pinterest, etc. These companies pay top of market to attract top talents and build high quality software.
This differs from non-tech companies whose core competencies aren’t necessary tech but other areas. For example, a newspaper company like NY Times values editorial content over software, and an information provider like WebMD values medical expertise more.
Tech companies pay 2-3x more than non-tech companies for similar roles, and they are the focus of the RemoteSWE.fyi listing.
To learn more about compensation differences across the industry, Gergely Orosz’s Trimodal Nature of Tech Compensation is a great resource.
A key goal of the job board is to allow candidates to see which companies are hiring and which positions are open. This is the most important thing to start with.
What strategy a person use to apply would vary. An experience individual would reach out to their contacts who work in those companies for a referral or find ways to reach out the hiring recruiter or manager to increase their odds of success/interview for reasons you said due to high competitions and candidate pools. On the other hand, for companies actively hiring and with many openings, e.g. Coinbase at the moment, a simple cold apply works just fine to get you to the door of interview.