The two most popular words and definitely one of the most confusing decision to be made; whether to focus more on Competitive programming or Projects.
Fear no more, in this article we will be discussing this comprehensively and jot down the pros and cons of each and it should help you to take your decision.
Why Competitive Programming & what is it about?
Like any other sports/games competitive programming is a mind sport incidentally more like chess and other mind sports. It’s more of a problem-solving game given a problem faster efficient and more classical ways. It is all about understanding a problem and finding a solution to it along with it to optimise it for the most efficient solution.
It might not have a large application in development but having efficient algorithms and problem-solving skills in your pocket is always a plus for a great software developer. It’s always a good practice to have your confidence in problem-solving and this is the most important thing for any entry-level software developer.
FAANG – the most popular keyword nowadays identifies such companies which will require a stronghold on data structures and algorithms which can again be made strong by competitive programming.
Projects in Competitive Programming
Projects can include anything that you have developed on your own or have contributed to some organisation during some internships. Having experience in development is always a plus point as it will also help you understand what is done inside a company. This will surely give you an edge over others. Projects can include web development, android application development, Machine Learning and AI projects or even developing some application. There are always a lot of tracks that can be done in Projects including Data Science, Machine Learning, full-stack application development etc.
Points to consider for Competitive Programming
- Having a strong Competitive Programming profile helps you get interview calls much easier. Referrals are given on basis of your resume and having recognition in CP in various platforms always gives you an upper edge.
- It helps you to build strong concepts, problem-solving skills, logical thinking ability.
- It helps to write efficient and optimised code; you start thinking like an actual developer who is working to making the application experience smoother and efficient.
- Definitely help you to clear interview rounds, along with machine coding rounds. Getting comfortable with CP gives you an upper hand in passing the coding round and pair programming round.
- Winning CP contests over various sites give a boost to your confidence like Codechef, Codeforces, Hackerrank, Top Coder, etc. and you can also win prizes and interview opportunities with leading companies and even PPI opportunities.
Points to consider for Projects
- Projects like web development, application development or Machine Learning etc teaches you how stuff workaround in a software company.
- The design pattern is an important topic, building projects help in developing design concepts which might be an edge in interviews.
- For a fresher, this might not be the best an interview will be looking for and hence if you have a good development project then you can surely expect some tables to turn.
- Getting in open-source development and participating in GSOC, etc. open-source development competitions will provide you recognition in this field and hence also in the industry.
- Real projects give you experience with diverse technologies. Real projects will not help to get past the placement interviews because most interviews concentrate on data structures and algorithms. But they will help you in building your resume.
- Participating in Hackathons will always add value to your resume.
Which one to go for?
Well now we have seen which thing helps for what. If you are someone in your college years and want to get placed in some good company then personally, I would suggest to work side by side on both giving slightly more focus on developing problem solving skills, learning about data structures and algorithms. If you are an experienced individual then I would suggest to make your data structure and algorithms strong using Leetcode and various other sites as you already have a good amount of project exposure.
Having both of them side by side will not only help you understand Software development cycle but also you can experiment by adding your optimized codes in your projects for solving a design problem.
To be straight forward Competitive Programming will help you increase your problem-solving skills, getting your confidence high in coding rounds and technical rounds whereas projects will help you thereafter in the technical rounds to demonstrate your ability to build something. So, it’s always a better idea to keep both sides by side and work for your passion.
If you are doing both for getting placed into some company, it is better to not continue any as both will require quite of dedication and patience. But if you are already passionate about creating something, or getting excited about your solutions getting accepted in online judges in contests then it will be a blessing for you. It will not only help you as a developer but also as an efficient engineer.
I am also attaching few sites for competitive coding and development contests.
Competitive Programming sites:
Either you can choose any or both. It’s more about the interest. Being good at whatever you choose as your domain. Hope this article helps aspiring programmers and developers.
By Aniruddha Guin