Takeaways from Interviewing.
Last week, it marked the end of my journey finding the direction I want to move towards. Some takeaways I've noticed, how the interview process of many companies are. I would say that Software Engineering interviews are the toughest and most tedious, as you can expect an average of 3 - 5 rounds of interviews. To that extend, the longest interview I've had was one that had 7 rounds which ended up being a waste of my time. However, the merit was I learnt the flaws and my mistakes as I do record the conversation and review them.
What I basically do is that, every technical interview or coding test I would take screenshots of the questions and or record the conversation with the interviewer. Then after that I would write a summary and review the points which I struggled to answer, or try to finish the technical questions which I could not complete in time thereafter.
This approach allows me to learn in a short amount of time, while concurrently give me the much needed practice to handle the interview process. It is definitely tiring, but the amount of knowledge you can absorb from the experience is tremendous. Because this creates and environment whereby you are caught off guard most of the time, and you create a healthy level of pressure on yourself to remember and learn the answers.
From my experiences after going through at least 50 interviews over the past year with multiple companies (startups to big tech). Sometimes I pass the first round, then get ghosted sometimes the take home test requires so much effort that I just completely pass on it because it wasn't worth the time.
The typical rounds start with a internal HR round to understand the candidate better, and if the HR decides you are a fit you then move on to the next round.
There are 3 possibilities here:
I would prefer starting with either option 1 or 2, rather than doing a take home test because a take home test usually requires you to spend more time to build depending on the complexity of the question. And it's hard to judge because the requirements and expectations vary significantly. My experiences with take home tests usually end up with it being a waste of time, only 1 out of 10 companies I interviewed with actually reviewed the take home test and provided feedback on the next round. The rest usually don't even mention about it or have varying remarks, but I would say tests are important more specifically coverage tests.
Usually the first two rounds is sort of like an intermediary where the company decides if you have the skillset they're looking for (I don't know what that is). The third round would most likely be a live coding round depending on what the second round was, a simple data structure & algorithm question. They key takeaway for this would be to be always speaking out loud on your thought process. If you solve it good job, refactor and make it more efficient if possible. If you didn't solve in time, that's the end of the line for you.
By the time you reach the fourth round, depending on the level you are applying for. It's either a combination of Technical Knowledge + Systems Design round, or another live coding round. Systems Design rounds are sketchy, there's no right way to do this but it tests your knowledge in developing solutions for the company.
The last round is usually just a culture fit + HR round where you speak with the management/hr to discuss salary and stuff. This round is really dependent on how you negotiate your salary.
For most cases, I dislike doing any take home tests that aren't over complicated and require no more than 3 hours of work. Some companies are just lazy or they have bad hiring managers, they don't provide a scaffold structure and expect you to build everything from the ground up (imagine having to setup your own cloud service, host the frontend & backend, create tests, create ci/cd) that is on top of your existing job only to then say thank you for your time the next round. Some companies are practically brilliant, they give you a base and you work your magic from there.
In general, companies that take the extra step/effort to think through their hiring process are the better companies that you should work for. Lest the remuneration package, so long as its competitive its fine. And also, avoid fintech companies and the crypto lot unless they pay you a ridiculous amount its just not worth being the second class citizen.
As a benchmark to how SWE should be paid in Singapore. I find that the recent article written by NodeFlair is a relatively good benchmark.
The most important factor in accepting a job offer, is that you believe in the product they are building. This will give you the drive to learn and grow as a developer.