336 karma · joined March 28, 2020
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.
Some remote companies such as Atlassian, Affirm, Dropbox have different pay zones to offset the cost of living in various places.
For example, in Atlassian https://www.atlassian.com/company/careers/resources/intervie..., the 3 pay zones are - Zone A: SF - Zone B: Boston, LA, NYC, Sacramento, San Diego, Seattle, Washington D.C. - Zone C: all others Zone B is 90% of Zone A's pay and Zone C is ~82% of Zone A's pay.
Agree that company willing to accept remote work has a broader talent supply and can be an advantage in hiring talents not in the big tech cities. I am not sure if it necessarily lead to lower labor cost due to competitions with other remote companies also hiring in those regions. Competitions would help keep the labor cost up.
I have also read the LinkedIn vs. hiQ Labs lawsuit. The ruling is significant because the court finds that scraping public data did not violate the CFAA, though it violated LinkedIn's tos. LinkedIn ultimately wins at the end because hiQ was bankrupted. One of my take away is to scrape responsibly by rate limiting the requests and not overloading the server, etc
I don't know why a company might not want to partake in this, but would be happy to take it down upon their request if they like to make it more difficult for candidates to stump upon their openings.
> SWE (Software Engineer) vs. Dev (Developer)
> SWE: Typically more formal; often implies engineering discipline like system design, scalability, testing. Broader + deeper in scope
> Dev: Informal short form of “developer”; can refer to any kind of coder. More general or casual.
> "Software Engineer (SWE)" → Signals higher-quality, well-compensated roles, especially to experienced professionals. Many top-paying U.S. companies prefer this title.
For some of these reasons, it might explain why while there is remote job in US or Canada or Mexico, there is no remote job for North America, the continent for these 3 countries. This might help explain why there isn't a remote job for Europe as it is a continent.
Haven't said this, it seems to be a great advantage for companies who can overcome the challenge and offer remote for Europe if it is an appealing offer.
Sometimes, companies shift engineers whenever they can before layoffs, and sometimes, they let go folks to rehire or hire back folks that were laid off if rehire proves difficult. I am not sure why companies do this but have seem it happens.
I might have built part of a "personal knowledge base" type app by rolling up a custom editor before, so 1.5 boxes check.
What type of job board are you building btw? Does it focus on a niche?