How I Became a Software Engineer (and things I've learnt along the way)

Sean AngSean Ang
7 min read

Pre-University

In 2016, the day I received my A-level results, I was not surprised by the predominantly D grades. My academic journey had always been rocky, with traditional subjects failing to capture my interest or show me their real-world applications. This disconnect made it challenging to remain engaged and motivated throughout my studies.

However, my affinity for computers starkly contrasted with my academic experiences. From a young age, I was mesmerized by computers' endless possibilities, whether it was delving into expansive digital landscapes in video games or connecting with people from all corners of the globe. My computer was a gateway to a world of exploration and learning. This wasn't just a hobby; it sparked a genuine curiosity about technology and its potential.

While serving in the military in Singapore for 18 months, I had the opportunity to think about my future studies. Unfortunately, my grades did not meet the standards required by prestigious local universities. As a result, it was difficult for me to decide whether I should attend a local university to study something I wasn't passionate about or follow my interests and attend a private university, even if it might come with certain stigmas and potentially impact my career opportunities.

The way forward became apparent after my service, thanks to a part-time job introducing me to a friend keen on programming. He suggested I try some online programming courses, and that's when I stumbled upon Python tutorials on Codecademy. The experience was nothing short of a revelation. Learning to code felt like unlocking a new realm of possibilities where I could translate creative ideas into tangible projects. This pivotal moment reaffirmed my desire to pursue a Computing degree at a private university, where I could delve deeper into the world of technology.

University

My university journey began at the Singapore Institute of Management, where I enrolled in a three-year Computing and Information Systems program, an affiliate course of the University of London. This was a year shorter than the typical four-year programs offered by local universities. I was filled with anticipation, eager to acquire skills I believed would be crucial in the real world, despite my underlying concerns about the need to excel due to the general perception of private universities.

Although I did well academically, there are a few aspects I would've approached differently:

  1. Spending more time connecting with peers: Academics took up most of my focus, but in hindsight, I regret not investing more time in getting to know my peers. University isn't just about hitting the books; it's also about building relationships and creating memories with friends, something I didn't fully appreciate then.

  2. Working on projects I found interesting: I had many great ideas but often put them off. I thought I could work on these personal projects for my school assignments. While I did use some ideas for my coursework, it wasn't the same. The strict rules and grading in school limited how creative I could be. Looking back, I wish I had just worked on these projects without worrying about grades.

  3. Read: I didn't spend enough time reading outside my required schoolwork. The course material covered a lot, but it often just touched on the basics and was sometimes behind, especially for software engineering, which changes quickly. This meant I missed out on learning about the latest techniques and ideas in tech, knowledge that's important for a software engineer who wants to stand out today.

During my university years, I joined tech-focused clubs like the Innovations and Networking Club and the IT Club. These groups allowed me to dive deeper into technology, work on exciting projects, and connect with inspiring individuals. These activities extended my learning beyond textbooks, linking theory with practical experiences.

In addition to club involvement, I completed internships lasting about three months during my school vacations. While these internships did not directly correlate with my current career trajectory, they added to my resume by showcasing my ability to collaborate with professionals and contribute meaningfully in enterprise environments.

Entering the Working World

After graduation, I dove into job hunting on LinkedIn, focusing on software engineering roles. Here's what stood out from my interview experiences:

  1. Mastery of LeetCode isn't the be-all and end-all, but cracking basic to medium problems is crucial. While many companies test candidates on data structures and algorithms, there's a noticeable shift towards valuing practical skills like system design and code quality—skills that matter in the real world.

  2. You don't need a mountain of personal projects. A few that you're genuinely proud of can speak volumes. Interviewers look for depth and how well you can discuss your projects and the problems they solve, not just the quantity.

  3. Confidence and staying true to yourself are key. Many candidates sail through the technical part but falter in cultural fit interviews, often due to nervousness or difficulty expressing their thoughts clearly. Remember, interviews are a two-way street. If being authentic leads to rejection, perhaps that place wasn't meant for you. This mindset can ease interview pressure, letting your true self shine through.

My Journey So Far

I landed my first role at a startup, contributing as a full-stack engineer on one product and focusing on backend development with Java Spring Boot on another. After eight months, I transitioned to a tech consultancy.

As a full-stack developer, my work varies with each project, exposing me to diverse tech stacks and team dynamics. The most enriching part of this journey has been the people I've met and learned from. Engaging with new colleagues and understanding their perspectives on technical and non-technical challenges has been incredibly rewarding and has offered me valuable insights.

Both experiences taught me that merely doing the work wasn't enough for my growth as a software engineer. I was self-teaching various software engineering concepts I couldn't learn on the job, highlighting the importance of continuous self-improvement.

Self-learning Beyond the Office

Navigating personal development after office hours poses unique challenges. The allure of my sofa often wins over after a day's work, making even the simplest tasks seem monumental. The 9-6 routine has replaced the unstructured freedom of my student days.

Despite these hurdles, I've anchored my self-improvement efforts in a few core principles:

  1. Find passion in what you do. The traditional view of discipline as the sole path to success has always been at odds with my beliefs. The disciplined dedication of figures like Bruce Lee is undoubtedly admirable but doesn't entirely resonate with me. Authentic engagement, I've found, springs from a deep-seated passion. I'm naturally drawn to activities that pique my curiosity, where effort feels more like exploration than labour. This approach makes my endeavours more enjoyable, meaningful, and productive.

  2. Living in the Now: The question, "Where do you see yourself in 10 years?" has often puzzled me. The future is a mystery, and dwelling on it can be daunting. I prefer to anchor myself in the present, believing that a strong passion for what I do today lays the foundation for future achievements. Whenever I find myself at a crossroads, I turn to my immediate curiosities, asking, "What am I curious about right now?" This mindset helps me navigate uncertainty and remain aligned with my true interests.

In aligning with my principles, I've developed strategies that might resemble what many consider "discipline," albeit with a twist that suits my philosophy.

  1. Learning in Moments of Wait: My commutes and idle moments transform into opportunities for growth. Immersing myself in the latest tech articles and newsletters during these times allows me to turn potential downtime into productive learning sessions. This practice isn't confined to commutes; any moment of waiting is a chance to learn something new.

  2. The 5-Minute Rule: Facing tasks with reluctance, I apply the 5-minute rule, dedicating a brief period to gauge my interest. More often than not, this initial investment leads to deeper engagement. This technique has proven effective in overcoming procrastination and ensuring my time is spent on genuinely fulfilling tasks.

Of course, finding an equilibrium between professional commitments and personal life is important. Beyond self-learning and work, maintaining a healthy work-life balance is essential for overall well-being and sustained productivity.

What About the Future

I don't tend to think too far ahead, but my passion for coding and tackling challenges is here to stay. As I move forward, I'm excited about the latest in technology and interested in exploring how we work and how we can do it better. I believe this combination of tech enthusiasm and a drive to improve our working methods will guide my path, constantly pushing me to learn and innovate.

Thank You!

...for sticking with me to the end of this journey. I appreciate you taking the time to walk through my experiences and reflections. If any part of my story resonated with you or sparked a thought, hit the like button 💛 or share it with someone who might find it interesting!

1
Subscribe to my newsletter

Read articles from Sean Ang directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Sean Ang
Sean Ang

A full-stack developer from Singapore.