How I Started My Software Engineering Career (and Why)

Table of contents
- Childhood Curiosity: From Games to Geek Mode
- First Encounters With Code (And Failing Fast)
- Discovering the Web: MERN, CS50 & the First Sparks
- Rust, Embedded Systems, and PIAIC
- Entering University (and Not Waiting for Graduation)
- First Steps Into Freelancing
- Applied to many places for Internship
- The Breakthrough: Nisum Internship
- Bootstrapping in the Real World
- Reflection

Some stories begin with a dramatic moment. Mine began with a PlayStation 1 and a dusty DOS computer in the early 2000s.
I was just four years old, more fascinated with Spyro and Dragon Ball than anything else. But even then, I was drawn to what made things work. The PS1 was for play, but the DOS computer? That was a mystery box I wanted to explore.
Childhood Curiosity: From Games to Geek Mode
When I was five or six years old, my father brought home a Pentium 3 PC. It wasn’t cutting-edge by any means, but to me, it felt like the future had finally arrived. I’d spend hours playing Red Alert 2, using Sega SNES emulators, and enjoying browser games on Miniclip and Y8.
Later, we got a PlayStation 2, which we had modded to run pirated games. I vividly remember buying blank DVD-RWs, downloading PS2 games via torrents, burning them, and getting to play an endless variety of titles. It was thrilling, but also a hands-on tech lesson in file formats, disc burning, and troubleshooting.
However, unlike most kids, I wasn’t just focused on gaming. I was equally curious about what made everything tick. I learned to install and customize Windows, set up software, and fix common system problems. My fun and my learning were deeply intertwined, even if I didn’t realize it then.
By the age of 10, we had a Pentium 4, and my curiosity had only grown deeper. I was in Class 4 when I made a decision that would stick with me for life:
I want to work with computers, either as a Computer Scientist or Computer Engineer.
No backup plans. No wavering.
First Encounters With Code (And Failing Fast)
In 2013, I decided to learn C++ for no particular reason other than the name sounded... powerful. It took just 2–3 days to realize I didn’t understand a thing. So I gave up.
But failure didn’t stop me. I shifted to game development using Construct 2, a drag-and-drop engine. That too didn’t last long, but each failed attempt planted a seed.
Discovering the Web: MERN, CS50 & the First Sparks
In 2017, a HackerNoon blog by Andrei Neagoie introduced me to the MERN stack. The blog linked to a Udemy course, possibly one of the best I’ve ever taken. I dived in and absorbed everything from the fundamentals of the web to Git, Heroku, APIs, and the MERN stack itself.
Unfortunately, my academic life got in the way. Grades 11 and 12 were packed with exam pressure, so I had to hit pause.
But the fire reignited in 2018 when I found Harvard’s CS50 on YouTube. Every lecture was over an hour long, but I was hooked. CS50 changed how I thought about programming and learning.
Honestly, I think every CS student should watch it before starting university. It gives you a glimpse of what's coming.
Rust, Embedded Systems, and PIAIC
In 2019, I joined PIAIC’s IoT program. They taught IoT using Rust, and later Embedded Rust. It was fascinating, but tough. I had no background in hardware or registers, and my university had just started. After completing three quarters, I had to step away due to the difficulty and lack of time.
But I did what I always do, kept moving forward.
Entering University (and Not Waiting for Graduation)
When I enrolled in a Computer Science degree in 2019, I had one goal:
Don’t wait until graduation to start your career.
I opened a LinkedIn account, followed industry leaders, and started posting my learning journey.
In 2020, during my second semester, we had a course on Java and OOP. After just a few classes, I realized the instructor would only cover the basics, slowly. So, I decided to teach myself Java.
I found a roadmap and what I believe is the best Java course online. I covered more in two weeks than the course would in four months. I dove deep, Java Core, JavaFX GUIs, APIs, and eventually Spring Boot.
Java is where my actual programming skills began to develop, where I truly understood the concepts, and learned them deeply. Practising all the time, building and sharing stuff over LinkedIn.
First Steps Into Freelancing
At the start of 2021, I jumped into freelancing via Upwork. It took two months of persistence to land my first project, changing a YouTube loader on a website. After that came a Selenium script (which I learned in four hours using Google), PDF generator with Java, Minecraft server setups on Linux, and completely random gigs that taught me a lot.
Around the same time, I joined platforms like Interns Pakistan and The Sparks Foundation, where I earned certificates for completing courses and projects. I posted everything I could on LinkedIn.
Something is better than nothing.
Applied to many places for Internship
I applied to many places for an internship, and did some interviews, but eventually failed to get into all of them. Well, of course, I was sad, but didn’t stop there.
Here’s my first-ever Resume, made with Canva lol.
Applied hundreds of times to many places, making hundreds of changes to my resume:
The Breakthrough: Nisum Internship
In May 2021, I saw a LinkedIn post from Nisum, a software services company, hiring interns. I
reached out to their employees, networked, and finally, someone forwarded my resume.
Resume:
Cover Letter:
There were three rounds:
Written Test – IQ, math, and algorithms
First Interview – 35 minutes of Core Java grilling
Final Interview – More fundamentals
I was confident, and it paid off. I was in.
Bootstrapping in the Real World
On the first day, I found myself among a group of 12 interns: some in Java, some in DevOps, some in QA. I was placed in MERN, which surprised me, but I embraced it.
My mentor, a senior engineer, didn't toss me into endless tutorials. Instead, he introduced me to HackerRank and gave me a week to sharpen my logic using JavaScript. After that, I spent about two weeks learning raw HTML and CSS.
Once I grasped the basics, I started building projects with raw HTML, CSS, and JavaScript. This experience helped me understand core concepts, such as promises beginning with callback hell, moving on to long chains of then clauses, and eventually mastering async/await, along with many other JavaScript fundamentals.
I was tasked with creating a Trello-like project using only raw HTML, CSS, and JavaScript. This experience made me appreciate the challenges that modern frameworks and libraries aim to solve. Eventually, I had to make a decision: should I choose React, Vue, or Angular?
I chose React.
Eventually, all MERN and QA interns were grouped into a project: a food ordering app to automate the office lunch system. We had three mentors, two QA teammates, and two months to deliver.
We built a full-stack MERN app, complete with custom order management and PWA mobile support. I often worked 12-hour days, it didn’t feel like work. I was building something real.
At the end of three months, I was offered a permanent position.
I had just started my 5th semester at that time. Luckily, my university was just a 10-minute ride from the office, making the commute easy.
The job required a commitment of 45 hours per week, and I covered the remaining hours on days when I didn’t have classes.
After my classes, I would come in and stay until around 11 - 12 P.M.
I am truly grateful for my supportive colleagues, as their cooperation helped me balance my studies while working full-time.
Reflection
Fast forward 4 years, my resume:
My software engineering career didn’t happen overnight.
It was a long chain of failed experiments, small wins, online communities, mentors, and a lot of curiosity. From a kid gaming on Red Alert 2 to solving real-world problems with code, this is the journey I’m proud of.
And it's just the beginning.
Subscribe to my newsletter
Read articles from Syed Muhammad Yaseen directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Syed Muhammad Yaseen
Syed Muhammad Yaseen
Hi there 👋 This is SMY Curious to know my standout highlights? Let me share some with you: 🎯 Professional Experience: ❯ Full Stack Engineer with ~ 4 years of expertise in the JavaScript ecosystem (Backend / Frontend / AWS). Consistently delivers high-quality SaaS applications by developing, testing, documenting, and maintaining while ensuring code quality and reliability through unit testing. ❯ Regularly learning and upskilling myself on various technical and soft skills by participating in initiatives, courses, and developing POCs. 🎯 Academic Experience: ❯ Pursued a Bachelor of Science in Computer Science with a 3.72 CGPA and a four-time Merit Scholarship holder. ❯ My academic accomplishments have been further recognized with awards, and I have actively contributed as a volunteer, expanding my horizons beyond traditional educational boundaries. 🎯 Publications: ❯ Passionate about leveraging technology to drive positive change, I am an avid writer and community contributor. I love sharing my insights, experiences, and knowledge through thought-provoking articles and engaging discussions. ❯ Discover a collection of my insightful articles on various topics by visiting my profile on hashnode 🌐 https://smy.hashnode.dev/ 🎯 Interests: ❯ At 4 years old, I was fascinated by computers, starting with gaming on DOS and exploring Pentium III, solidifying my fascination and paving the way for a lifelong journey. ❯ Fast forward to today, and I find myself immersed in the ever-evolving landscape of technology. I'm passionate about leveraging technology to solve real-world challenges and make a positive difference in our interconnected world. 👋 If you're passionate about technology too, or if you're eager to explore the vast opportunities it presents, let's connect 🤝 LinkedIn: https://www.linkedin.com/in/sm-y/