Minami's Bubble 🫧

Mistakes I Made When I Started Programming and How I Overcame the Self-Doubt Phase

As I reflect on my journey as a programmer, from my university days to where I am now in 2024, I realize how much I've grown and learned. This blog post is about the mistakes I made, the self-doubt I faced, and how I ultimately found my way to becoming a more confident and skilled programmer.

The University Days: A Sea of Confusion

When I started my programming journey in university, I was like a ship without a compass, drifting from one technology to another without a clear direction.

Mistake 1: YouTube Tutorial Hell

I spent countless hours watching YouTube tutorials, jumping from one video to another. While these tutorials provided quick wins, they didn't help me build a solid foundation. I was coding, but not really understanding.

Mistake 2: Language and Framework Hopping

Instead of focusing on mastering one programming language, I kept switching between different languages. The same went for frameworks – I'd start learning one, then jump to another before getting proficient in any. This constant switching left me with surface-level knowledge in many areas but expertise in none. I would say get good in a programming language you love and later on in your career you can try different programming languages.

Mistake 3: Chasing Validation

I often found myself choosing technologies or projects based on what I thought would impress others, rather than what would actually help me grow as a developer. This need for external validation held me back from pursuing what truly interested me.

Mistake 4: Neglecting Fundamentals

In my rush to build flashy projects, I overlooked crucial fundamentals. I didn't take the time to properly understand databases, a decision I would later regret. I also tried to speed-run through Data Structures and Algorithms (DSA) and problem-solving, missing out on the deep understanding these topics require. This in future led me to lose an offer from a very big Fin-Tech company and you can say was my dream company to work in cause in the last round of interview I couldn't answer him what is a Fenwick Tree and how to implement it.

Mistake 5: Comparison and Self-Doubt

As I saw my peers landing internships while I struggled, self-doubt crept in. I began to question if I was cut out for programming at all. This comparison game was toxic and unproductive, but at the time, I couldn't see a way out.


Now I wanna talk about one of the thing I struggled the most I would say till me 5th semester of my uni. I know this is the biggest confusion idk about other countries but India has i.e:

The DSA vs. Development Dilemma

One of the most confusing aspects of my early programming journey was the perceived dichotomy between focusing on Data Structures and Algorithms (DSA) versus practical development skills. Like many beginners, I found myself torn between these two crucial aspects of programming, unsure where to invest my time and energy.

The Confusion

On one hand, I saw job interviews heavily emphasizing DSA problems. On the other, I felt the pressure to build projects and gain practical development experience. This led to a lot of back-and-forth, where I'd study DSA for a while, then switch to working on projects, never feeling like I was making sufficient progress in either area. Also in my college there was this immense pressure of performing well on competitive platforms like Codeforces and that used to decide how much superior are you to others based on your rankings.

The Realization

Looking back, I now understand that both DSA and practical development skills are essential, but they serve different purposes in a programmer's toolkit. DSA forms the foundation of problem-solving skills and efficient coding, while practical development allows you to build real-world applications and understand how different technologies work together.

Advice for Newcomers

If I could go back and advise my younger self (and other programming newcomers), here's what I'd say:

  1. Prioritize DSA Early: Concentrate on Data Structures and Algorithms first. Treat it as a one-time intensive study period where you learn all the essential concepts thoroughly.
  2. Build a Strong Foundation: Don't rush through DSA. Take the time to understand each concept deeply. This foundation will serve you throughout your entire career.
  3. Think Long-term: Remember that mastering DSA is an investment in your future. It might seem less immediately applicable than building projects, but it's crucial for your long-term growth and success.
  4. Consistency is Key: Once you've built a solid DSA foundation, it takes relatively less effort to maintain and refresh these skills. Regular practice, even in small doses, can keep your problem-solving skills sharp.
  5. Balance with Projects: After establishing your DSA foundation, start balancing your learning with practical projects. This will help you apply your knowledge and learn the practicalities of development.
  6. Career-long Asset: Strong DSA skills become increasingly valuable as you progress in your career. They'll help you in system design, optimization, and tackling complex problems that arise in real-world development.

By focusing intensively on DSA early in your journey, you're setting yourself up for long-term success. It may feel like a detour from "real" programming at times, but trust that this knowledge will integrate with your practical skills, making you a more well-rounded and capable developer.


Now I would like to talk about my time after my 5th semester of uni.

The Turning Point: Discovering Open Source

Amidst all this confusion, I stumbled upon open source contribution, particularly in frontend repositories. This was a game-changer. For the first time, I was working on real-world projects, collaborating with other developers, and seeing my code make a difference. It gave me a sense of purpose and direction that I had been missing.

As I delved deeper into open source, I found myself naturally transitioning into full-stack development. This gradual shift broadened my skill set and opened up new opportunities. The pinnacle of this journey was landing my first BIG internship - an international one, no less! This experience was invaluable, providing me with knowledge and skills that would prove crucial in my future career.

The Struggle with Jealousy

Despite the progress I was making, I couldn't help but feel a twinge of jealousy at times. I noticed that some of my peers seemed to achieve certain milestones with far less effort than I was putting in. Watching others land prestigious internships or master complex concepts quickly while I struggled was demoralizing.

This jealousy led to periods of intense self-doubt. I questioned whether I was on the right path, whether I had what it took to succeed in this field. It was a constant battle to remind myself that everyone's journey is different and that comparing my progress to others' was unfair and unproductive.

Looking back, I realize that this jealousy, while painful, was also a driving force. It pushed me to work harder, to seek out new learning opportunities, and to persevere even when things got tough. The key was learning to channel these feelings into productive actions rather than letting them paralyze me.

Post-University: Burnout and Rediscovery

After university, I landed a job, but the intense grind of the past 1.5 years had taken its toll. I was exhausted. Coding became something I only did at work, and my passion for learning new things had fizzled out. I even considered switching to product management in a gaming studio, thinking maybe programming wasn't for me after all.

The ThePrimeagen Effect

Then came a pivotal moment. While watching a Valorant stream on Twitch, I stumbled upon a streamer called ThePrimeagen. His content, his journey, and his approach to programming reignited my passion for coding.

ThePrimeagen's story resonated with me deeply. He showed me that it's okay to struggle, that the journey of a programmer is filled with ups and downs, and that perseverance is key. As he said at Laracon 2024, "If I have time and determination I can achieve anything" became my guiding principle now.

The Turnaround: 2024 and Beyond

As I write this in September 2024, I can confidently say that the past year has been transformative. Here's what changed:

  1. Focus on Self-Improvement: Instead of comparing myself to others, I started focusing on my own growth. I adopted a "not giving a fuck" attitude towards unnecessary criticism and focused on what truly mattered – improving my skills.

  2. Embracing My Journey: I stopped trying to fit into what others thought a programmer should be. When people laughed at my Indian accent at different conferences I attended online also at some twitter spaces when I had an old account, I chose to move on rather than let it affect me. I realized that my unique background is an asset, not a liability. Also, all these other people don't understand the grind and the struggle I have been through and their one joke can't break me.

  3. Humility and Continuous Learning: I embraced a student mindset. Instead of trying to be the best, I focused on always being ready to learn. I set my own priorities and stuck to them, regardless of what was trendy in the coding world.

  4. Betting on Myself: The self-doubt that once plagued me has been replaced with self-confidence. I now bet on myself, knowing that with time and effort, I can achieve my goals.

  5. Finding Joy in Coding Again: Most importantly, I rediscovered the joy in programming. I'm happier, more confident, and more skilled than ever before. Thanks to Ludwig I pickup up some books and started reading them and haven't stopped, actually at the time of writing this I have Learn Concurrent Programming with Go at my table 😂😂😂😂

Conclusion

My journey from a confused university student to a confident programmer in 2024 has been filled with mistakes, self-doubt, and ultimately, growth. If you're starting your programming journey or finding yourself in a phase of self-doubt, remember that it's a normal part of the process. Find your ThePrimeagen – whether it's a mentor, a community, or an inspiring figure – and never stop believing in your ability to learn and grow.

Remember, as ThePrimeagen said, I'll repeat it but I love this line so fucking much. "If I have time and determination I can achieve anything". The same goes for you.

Don't lose hope, I know its tough out there but with enough hardwork and consistency you can be whatever you aspire to be.

If you wanna support me just dm me a thank you on X/Twitter that would mean a lot to me.

That's all for today, keep shipping, keep grinding and keep spreading love, positivity and don't stop betting on yourself ❤️