I’m currently a 3rd year Computer Science Undergrad at NIT Rourkela and I’ve happened to see many people of my age in my field overly obsess over CP(Competitive Programming). While its no doubt that CP is one of the definitive ways to strengthen your data structures and algorithms skills, its definitely not a silver bullet to ace your coding interviews.( P.S : there is no silver bullet :) )
In fact, strong knowledge of data structures and algorithms is just one of the many skills companies look for in incoming software engineers. So...well what are the rest?
Strong communication skills is a must for interacting with your peers. Here , I don’t mean crystal clear language with proper regard to vocabulary 😝. Instead it means being able to properly articulate your thought process to your peers. I guess around 40-50% of your time as an SDE is spent in discussions, brainstorming etc ( introverts SOCIALIZE! )
2. Good knowledge of data structures and algorithms
This is of course a must, since your work primarily revolves around code. And one of the ways of getting a good knowledge of DS and Algorithms is CP( practicing on platforms such as codeforces ,topcoder , hackerrank etc) .
However , as I wanted to point out , companies don’t tend to hire candidates just based on the number of stars on their CP platform 🧐.
3. Good coding skills
Good coding skills include being able to write clean, easy to understand, reusable code. This is necessary since your code will have to be read by many other developers over the years and you don’t want them to get a shock reading it🙆.
4. Development Experience
Here, I mean having hands on experience on projects etc. While not all freshers will have had a chance to work on production level code its necessary to do some projects in college to get a gist of working with many modules, files, different tech stack, deploying them etc. Interviews usually involve a brief to detailed discussion on the projects listed in your resume, so be ready to answer questions such as why you chose this project, difficulties faced during development and so on.
5. Knowledge of CS fundamentals
CS fundamentals include DBMS,OS, Networking, Object-oriented design principles and more. A good understanding of these concepts help you to grasp the theory behind some stuff you might work on in the future. This is also one of the things interviewers check for in an interview ( throwback to the day when I didn’t remember all the indexing mechanisms in SQL databases during my interview 😐 )
Finally , a REALLY IMPORTANT necessity for any good human being as well as a SDE is to have a good personality. This is a criteria because software companies employ hundred of thousands of people and its important for you to work with others in harmony. Hence you should be able to empathize with other’s emotions and never ever ever condescend your peers!!! Life as an SDE requires you to learn throughout your career and hence you should try to learn from others around you. This is what the HR round checks for, whether you’ll be a good suit in the company atmosphere. Well think about it, no one would like to work with a egotistical/racist/misogynist no matter how knowledgeable he/she is.
Some questions I was asked in my HR round :
- How would you explain your approach to a peer with a non-coding background
2. How would you react to other developers pointing out the problems in your code? ( This is an good question since your interviewer will understand how you deal with criticism )
I’d suggest you not to memorize answers to HR questions but to rather be honest. And also even if you don’t know the answer to a question , give it an effort and if you still don’t get it then say so( the main thing is to not talk nonsense about the concept if you don’t know it since this reflects poorly on your personality).
TLDR : Give equal importance to other skills as well :)
Hopefully I’ll write an article on my interview experience next time😄.