Recently I got an opportunity to interview Abhinav Pandey, a developer at one of the biggest startups in the country. Abhinav likes to write Node.js APIs and wrangle with databases all day long. Read this article to find his opinions on questions that I hope are very relevant to young developers wanting to hone their skills and get jobs at great companies.
Disclaimer- This is not a financial advice from the startup referred above.
I consider myself lucky to be working with such a phenomenal team. Our engineering manager is very helpful and we can work with great coordination. My team members are highly experienced and because of an open culture, we can freely communicate with each other. Everyone is always ready to help each other out. No one hesitates to ask for help when they get stuck.
That’s an interesting one! So the company had organized Pool Campus Placements in which many students from Delhi NCR region applied. The first round was an online round on HackerEarth. We had to solve 3 questions in 45 minutes. The questions were very diverse in concepts and difficulty. I remember in one question we had to reverse a matrix and in another, we had to add very large numbers. There was a question on BST too but I don’t remember the specifics.
Even though many students were saying they performed good, only 2 students from our college got shortlisted for the next round. I remember feeling so happy and lucky that I was one of the people who got selected out of 200 students.
The next round was full of Data Structure questions and after that round, I was challenged with two questions which could be optimally solved with Dynamic Programming. The tech-lead of the company was sitting in front of me so I was nervous but I had brushed up my concepts properly. Because of that, I was able to write pseudo-codes for both the questions while taking into account all the possible corner cases.
The parameters for recruitment vary from company to company. Some test your knowledge of data structures and algorithms, while some test your grasp on core CS concepts like Operating System, Parallel Computing etc. and others are product focused and tests a person’s development skills.
I suggest that to increase your chances you should know one language from C, Java and Python for solving algorithm questions and then gain knowledge of the languages used in your specific domain. In Web Development that would be HTML, CSS, Javascript. In ML that could be Python. So pick domains rather than the technologies or languages.
Hmm, the thing I like most about is the sheer scale at which we operate. I don’t know the exact numbers but you can assume we have to serve more than 1000 requests every second. Just looking at the server logs and fixing stuff to keep everything working smoothly is highly motivating for me. I find writing SQL scripts to migrate millions of entries from one table to another quite amusing too.
Code from WTFJS
I won’t say it was a hurdle but I did struggle in understanding the asynchronous nature of JavaScript at first. But once it clicked, it felt like a huge achievement. It changed my way of thinking. I realized how much potential this has and that’s the same reason I find Node.js amazing to work with.
Thanks for asking this, this is one of the questions I get asked a lot. This would be a great medium to answer that once and for all.
One thing everyone should understand is that they are not in a race to know everything, no one can and there are no major benefits in doing so. Pick a domain and try to get a good grasp on the core concepts of that domain. You can keep an eye on all the new stuff that’s coming in and you can try them if you get time but there is no obligation.
What matters most is getting work done. If you know React then great, you can build Single Page Applications, it is not necessary to know Angular too. You can delegate some stuff for the future also. When you get a problem then you can look around to find the solution that is best for you. You don’t need to learn Kubernetes right now if all you do is deploy a single server node application.
I think there is no one right way to judge a candidate. There are so many factors that have to be considered and currently there is no one process which is perfect for everyone. The great thing is that many companies are actively researching new processes that can be suitable for many people. So let’s be optimistic about that.
The thing about Data Structures and Algorithms is that they are a good way to find if a person is logically sound and knows how to write basic programs. Development skills can be acquired while working also. Also, companies need a common ground for testing all of the applicants and DS-Algo questions are a great tool for that.
Thanks Abhinav for taking out time to answer my questions. Your insights are really helpful.
If you like the article please like, share and clap. If you’d like to read more awesome articles, follow me on Twitter and Medium or subscribe to my newsletter!