I spent about 6 months doing my very first job hunting, after working as a full-time data engineer. In the end, I think it is worthy for me to come up with an post to share some of my personal experience (like I’ve always been doing :p). I will try to break down the content into multiple pieces, including what type of roles I looked, how did I prepared for interviews and some other miscellaneous thoughts and feedback I collected in general.
Roles
There were mainly two types of roles that I targeted — Software Development Engineer (Data Platform) and Data Engineer. I’ve been working as a data engineer for 3–4 years, and according to my own experience, I do feel Data Engineer, as a job function, really lies between the Software Development Engineer and Data Scientist. To enlarge my potential success rate in the job hunting, I applied for both Data Engineer and Software Development Engineer.
Interview Preparation
In general, to prepare for the interviews for SDE or DE, there are mainly three topics:
- Coding
For coding, there are many available resources, and the most famous one is probably the LeetCode. However, it depends on different people’s backgrounds, LeetCode should not be always considered as the first stop for every candidate. If you feel you may need to polish some fundamental knowledge in terms of data structure and algorithms, I do want to recommend this fucking-algorithm repo— it’s native in Chinese, but there is a branch for the English version as well. Once you feel that you’ve covered most of the topics in the repo (with this process, you could follow the articles and have already started to crack the questions on LeetCode), then it might be a better time for you to thoroughly move to LeetCode and specifically work on questions based on tags.
- SQL
For SQL, according to my own experience, I suggest only working on the hard ones on LeetCode — in general, those medium and easy ones should have been met with during daily jobs, so just save some time on this portion.
- System Design
For System Design, it actually varies between the roles — for DE, it will tend to test your design in terms of product sense and cracking the classic data warehouse schema design, such as forming STAR tables for a certain business and composing ETL processes with coding or SQL; for SDE, it will tend to evaluate a candidate’s ability on a more end-to-end design, e.g. design a music App.
For the classic data warehouse schema design, I know many people may refer to a series of books of Kimball Techniques, but to be honest, I did not get time to go through them at all, and I do think it’s not necessary and it’s not a correct way to pick up or polish your skillsets for the interview. Meanwhile, I do want to share a series of blogs from Sowmya Mupparaju, and you may read her blogs here.
Coming to SDE system design, besides the normal popular resource, such as Grokking the System Design Interview, I do feel Alex Xu’s books are very great resources.
Other Miscellaneous Thoughts
The whole process is mutual-selection-based
I think the relationship between candidate V.S. and the position (company) is equal, so there is no need to look up or look down for a certain role, if the job function of the role is interesting to you, then give the submission, or just move on. Meanwhile, cultural fit is really a BIG thing — I think no one wants to work for a company where the culture does not fit the person himself/herself, and vice versa for the company.
Sometimes it’s just about the Luck
I think this is easy to be understood, and I think it’s undeniable that luck sometimes plays a more important factor, both good luck and bad luck. This is not just for finding a job, it basically covers every aspect of the career and even life.
Practice makes perfect
As a slogan, this is easy to read, but implementing it could be hard — just make sure you (or force yourself) do cover a couple of new coding questions every day and rehearse your project introduction periodically. Turn this into a routine!
Your journey is the perfect journey
The job market has been hot, starting from 2020 or 2021, it’s common to see middle-level engineers get 400–500K TC from big tech companies (tbh, it’s one of the motivations for me as well), however, in the end, everyone could just do the selection based on what he/she has, and it’s not worthy to overthink about someone else's story.
Down-level
In my case, since I was looking for both DE and SDE, I experienced the scenario that I got down-leveled for SDE roles, e.g. I am aligned with IC4/L4 for DE positions, however, some recruiters told me that I might only get E3/L3 offer for SDE positions.
It happened, and it was also understandable, because from the company’s perspective, even though I cracked the coding questions, I might not perform that well in the system designs or lack experience in doing the end-to-end high-throughput or very complex product development.
Big companies V.S. Fast-growing startups
I believe it deserves another whole article to discuss these two entities — they are totally two different species.
I think the advantage of big companies could be summarized as below:
- Normally, it has more headcounts for a position — higher possibilities for you to get in;
- The hiring and interview processes are more standard;
- Has more clear job functions defined;
- Potentially more cashable money (sign-on bonus, perf bonus, RSUs, and refresh RSUs) on the table
Regarding the fast-growing startups, I think they have the advantages listed below:
- Fast-growing business — potentially a steeper slope for you to grow yourself;
- The hiring and interview processes are more flexible and could be done within a shorter time range;
- For most of the startups that I dealt with, they were not interested in asking typical LeetCode questions, they liked the practical ones — so it’s a good sign for LeetCode haters 😈;
- Potentially higher possibility for you to be a millionaire through one night, the IPOs :)
Grow the connection
This one was actually a bonus point for me — I found that after I met with many people and different companies, there are always people — either are recruiters or interviewers that I could share the same resonations, or they do have something for me to learn afterward, then I will try to build some more connections with them such as through LinkedIn or through emails.