DSA or Dev: A beginner's guide

DISCLAIMER #

It’s all just my opinion and experience. Please don’t quote me on anything I say here.


DSA or Development - What Should You Do as a Freshman? #

I’ve been asked this question many times by friends:
What should I do as a freshman, DSA or Development?

Here’s what I think.


For Those Who Haven’t Done Any Programming Yet #

If you haven’t done any programming until now, just focus on learning the fundamentals first.

“PAR KIDHAR SE???”
(Translation: “But from where???”)

If you have a ton of time (just me being illogically hyper), I’d recommend CS50x by David Malan. It’s a great course that teaches the fundamentals of Computer Science (and no, Computer Science is not the same as programming).

But if you want to get into programming quickly, start with C++.
(And by the way, just pronounce it as “cpp”, it sounds better.)


Why C++ #

You might be thinking:

“Why C++? Why not Python, JavaScript, or C?”

Let’s go through them one by one.

Why Not C #

You can go with C if you want. It’s close to the machine and helps you understand how computers actually work.
But if I were you, I’d go with C++, because it’s basically C with:

  • Better abstraction and cleaner syntax
  • Optional Object-Oriented Programming (OOP)
  • The Standard Template Library (STL), which makes life much easier when you get into DSA or Competitive Programming
  • The same low-level control as C

Why Not Java #

You can also go with Java, but here’s why I wouldn’t:

  • Java forces you into OOP from day one. C++ gives you freedom. You can write procedural, modular, or object-oriented code as you like.
  • The C++ community for DSA and CP is much larger, and finding help or resources is easier.
  • And honestly, most people hate Java. (kidding… mostly)

Why Not Python or JavaScript #

Because they make things a bit too easy.

They’re high-level languages, far from the machine. They let you do a lot, but they hide how things actually work underneath. You don’t really get to understand why something works the way it does, and that’s something beginners should focus on.

Of course, Python and JavaScript are useful and popular, but learn them after you’re comfortable with the fundamentals in a lower-level language like C++.


Where to Learn C++ #

  • If you like reading, follow learncpp.com. It’s one of the best written resources out there.
  • If you prefer video tutorials, check out The Cherno’s C++ playlist on YouTube. It’s beginner-friendly and keeps you motivated early on.

If you’re completely new, I’d recommend starting with The Cherno’s videos. They’re practical and easy to follow.


What If You Already Know the Fundamentals #

That depends on where you are in your journey.

If You’re Just Starting College #

Spend the first month or two exploring different domains like web development, mobile apps, data science, algorithms, or AI and ML.
If you find something you genuinely like, focus on it and go deeper.

You’ll eventually need to learn DSA and solve Leetcode-style problems, but that can come later. If you’re enjoying what you’re doing, don’t worry about the rest for now.


If You Can’t Decide What to Do #

If you’re thinking, “I can’t decide what to do, just tell me what to start with,” then I’ll be blunt:
Start with Competitive Programming (CP).

Why? Because it builds your problem-solving and pattern recognition skills.
Development is also mostly pattern recognition. If you can think logically and solve problems efficiently, you’ll do well in any field.

Tech stacks and frameworks change constantly, but strong fundamentals and problem-solving skills never go out of demand.

Once you’re comfortable with CP and thinking logically, you can easily move into development. By then, you’ll be able to implement your ideas effectively.


Getting Started with Competitive Programming #

  • Start with Codeforces. It’s one of the best platforms for CP.
  • You’ll handle low-rated problems easily if you know basic high-school math.
  • Don’t try to learn all data structures and algorithms upfront. Start solving problems and learn algorithms only when you need them.

After You’re Comfortable with CP #

After 4 to 5 months of regular CP, start exploring development or project building.

And it doesn’t have to be web development. You can build a compiler, CLI tools(just do it, things start panning out in no time), a physics engine(I saw some projects here and there regarding it, and yep, they were so cool), or anything else that interests you. There’s a lot to explore if you keep looking around.


Final Words #

At last, I’ll quote alia-

capabilities are not your current skills, capabilities are what you are capable of

So just start, you’ll figure it out along the way.

That’s all for now. I’ve spammed quite a lot :P

I’ll add more if I remember something useful later. Thanks for reading and sticking with me.