Site icon AndroidVille

Software Development vs Competitive Programming – What to choose ?

development vs competitive programming

Development vs competitive programming, this is a question that must have come into your head when you were in college, or while preparing for interviews.

This is a tricky one to get right and the main aim is to balance the two. But it’s easier said than done. If you want to be good at something, you’ve to go all in with it.

I was presented with the same question while in my college. And I think I made the right choice for myself and the place that I’m at right now, definitely reinforces that belief. 

So in this tutorial, I’ll try to give my take on the development vs competitive programming debate. What I chose in college, and what you can do to make this decision a bit easier. Let’s dive in!

If you’re comfortable in Hindi, you can watch this video on the same topic:

 

 

First things first, what’s your current situation ?

This debate depends on two different points:

  1. Whether you’re a student.
  2. You’re a working professional

A lot rides on the fact whether you’re a student or a working professional. If you’re a student, you have a lot of time to figure this out. But if you’re working, then you might not have the time for it.

Let’s look at both of these situations and figure out what’s the best one can do. 

 

Development vs Competitive Programming for Students

I often tell people, the only way to learn something is by doing it! Trying it out yourself. Because there’s no one size fits all.

If you’re in college you have loads of time to figure this out. In fact, you’re the best placed to end this debate for yourself.

Go ahead and try out development and competitive coding, both. Give each of them 3 – 4 months and see what you feel. 

 

Competitive Programming

Competitive coding is a very interesting field and one which’d benefit you a lot if you aim to work at Google, Facebook, Amazon etc.. (FAANG). These companies rely heavily on questions related to Data Structures and Algorithms and majority of their interview rounds focus on that.

Moreover, some startups such as Uber, AirBnb, Flipkart, Directi also rely heavily on DSA. Directi’s interviews are one of the toughest to crack and are termed even more difficult than Google’s.

There are many resources out there that can help you prepare for competitive coding. Some of my favourites, and which I use all the time are: 

  1. LeetCode
  2. InterviewBit

The thing that I like about interviewbit is that they have a clear roadmap outlined, that one can follow in their journey to learn Data Structures and Algorithms:

They have all the questions layed out topic wise in each card. 

Check out our two article series on how to prepare for android developer interviews.

 

But I do not recommend diving into their questions first hand. If you’re well versed with the topic, then sure go ahead. But if you want to learn, let’s say, arrays, strings, trees, then go with LeetCode.

They have much better structure to these topics. Each topic is divided into a card and that card contains study resources and 2-3 questions. Aim will be to complete each card entirely.

They have some questions which can be unlocked if you pay, but I believe the free material is sufficient for learning. You can do questions on interviewbit.

 

Development

For me, I find software development much more enticing than competitive programming. This is because I like to see a visual result of what my code is doing. 

I like to build products which people can use. This factor is missing in competitive programming. This alone was enough for me to focus more on development than competitive. 

If you’re good at software development, and by good, I mean that you really stand out! Then it’s ok to lag a bit in competitive coding. During your interviews, you should try to highlight your software development expertise as much as possible to steer the conversation in that direction.

Many times people believe that you cannot get into a good startup with competitive programming. But I’m a proof that it’s not true. I’m not very good at competitive programming, but when it comes to Android Development, I believe I can answer most of the conceptual android dev questions.

I love android dev so much that I’ve dived into how the OS boots up, what happens when your application starts. How’s DVM different from ART and how it’s initialized!

So you can see that I like software development a lot and have also gotten jobs at the best startups in the country. 

You can learn software development for free on YouTube, I’ll recommend some channels here:

  1. TheNewBoston
  2. DesiCoder (for Hindi Tutorials)
  3. CodeWithHarry
  4. Academind

Although TheNewBoston hasn’t posted in about 3 years, most of his tutorials are still relevant. And his way of teaching is the best I’ve encountered on the internet. 

You can check out our channel DesiCoder for tutorials in hindi. It has an ongoing series on Flutter Development for Beginners in Hindi.

That being said, development should not be an excuse for being bad at DSA basics. Data Structures and Algorithms have stood the test of time for interviewing software engineers.

They’ll be asked for the foreseeable future in the interviews. So you should have basic knowledge of how an array works, linked list, strings and sorting.

You don’t need to be a 6 starer on codechef. You can very well prepare these basics, be extremely good at Software Development and get a good job 🙂

 

Opportunities in Competitive Programming and Development

There are varying opportunities in competitive programming and development.

If you decide to finally dive deep into competitive, then if you get good rankings on CodeChef, topcoder, hackerrank or any one of these, companies approach you directly (on of my friend who got 1st place in a long challenge on CodeChef was called by Google).

This is a great way to secure internships which can eventually convert to PPO. Nothing gets better than this!

As for Development, the opportunities are again limitless. You can:

  1. Create your own products which the world can use. If it does well, you’ve no idea what it can turn into. It could be life changing. 
  2. Do freelance projects: Freelance clients don’t ask for DSA. They just want their website/app to be built in the best way possible. Once you start getting good reviews you start getting more work. 

You can even build a company out of freelancing. Many such companies exist already!

  1. You can opt for nascent stage startups or remote jobs: Very early stage startups also don’t focus much on DSA. They’re looking for Product Market fit and want to iterate on their ideas as fast as possible. Hence, development skills are preferred.

But such startups can also be risky to join as there’s no surety they’d succeed. 

 

Development vs Competitive Programming for working professionals

If you’re a working professional, it’s somewhat complicated. Your work experience is also a factor that counts. 

If you’ve been working since > 3 years, you’re more likely to be grilled on System Design Questions. 

And by system design I don’t just mean design a TinyUrl, Twitter etc. You can be asked to create an SDK in Android (or any other tech stack that you’ve worked on) to handle push notifications.

Design questions in Development are a real thing and have very real use cases. You can be asked to create a library that handles Persistent Storage for your app. This would include many design choices as to what APIs to expose, what libraries to depend on internally etc. 

For working professionals, the question of development vs coding comes up mostly at the time of an interview. 

You generally have an interview coming up for some startup and you’re wondering what to focus more upon. Should you do competitive coding or development? Which aspect is focused upon in this organisation.

You can very well figure this out from two sources:

  1. Glassdoor
  2. Talking to their employees on linkedin.

Go to the interviews section of glassdoor and you’ll find people who’ve listed their interview experience and questions.

Have a look at some of the interview experiences and after you’ve read about 10 – 15 you’ll have an idea which way the company swings. 

Next, search for the employees of that organisation and connect with them. If they do connect with you, you can go to them and ask about the interview process and what they focus on. Don’t forget to mention your experience level and post you’re interviewing for.

These are some of the ways you can find out what to focus more upon. And that’s it for this tutorial. 

 

Summary

So if you’re a college student, you should start by trying out development and coding for 3 months each and figure out which one is the best for you.

But if you’re a working professional and have already made that choice, you’ll have to answer the development vs competitive programming question during the interview preparation.

I’ve posted a 2 article series on how to prepare for android developer interviews. You might wanna check that out here:

  1. How to get an interview?
  2. How to prepare for Android Developer Interview?

Let me know if you want to know something more on this topic in the comments section below and I’ll be happy to share my thoughts!

 

Want to be a better developer ?!

AndroidVille is a community of Mobile Developers where we share knowledge related to Android Development, Flutter Development, React Native Tutorials, Java, Kotlin and much more.

If you’re comfortable in Hindi, then you should Subscribe to our channel DesiCoder: Click Here

We have a SLACK workspace where we share updates related to new job opportunities, articles on Mobile Development/updates from the industry. We also have channels to help you with any questions, dev-help that you require. Just post a question and people would be ready to help you out 🙂

Click on this link to join the AndroidVille SLACK workspace. It’s absolutely free!

If you like any article, do give it a share on Facebook, Linkedin. You can follow me on LinkedIn, Twitter, Quora, and Medium where I answer questions related to Mobile Development, especially Android and Flutter.

If you want to stay updated with all the latest articles, subscribe to the weekly newsletter by entering your email address in the form on the top right section of this page.

Exit mobile version