My Conventionally Unconventional (Dev) Journey

- 6 mins

Proof I go outside every once in a while

Most people carry their degree around as a badge of honor, I used to think of mine as a burden.

It had been 1 year, two missed opportunities enrolling into my school’s Computer Science (CS) program. In my second year I settled for a major in Cognitive Systems (COGS) instead - an interdisciplinary blend of Computer Science, Linguistics, Philosophy and Psychology courses - in the hopes that such diversity would expand my post-graduation horizons. It didn’t. Not for me at least. While some students embraced the multifaceted approach to exploring cognition, COGS at its best, could only serve as a distant cousin to my initial ambitions for CS. Even the sum of courses I could appreciate were too abstract for them to be practically enjoyed. The preface to my undergraduate experience felt stained with uncertainty with oddities abound.

Looking back, I make it a point to operate outside my comfort zone, to search for new and exciting experiences. New and exciting to me means finding myself in places I couldn’t have imagined being in a year ago. I make it a point to collect mementos from my journeys. Some in the form of friendships and connections I’ve built, many in the form of lessons and laptop stickers. I have found myself at companies and found myself in unexpected roles because of relentless support from my friends and the developer community. And I’d ultimately proved my past self wrong; the only badge of honor worth wearing is the self-driven desire to learn. Against all odds, these factors are what helped me overcome my inferiority complex. They set me on the path of becoming a developer in practice, and move towards the becoming the developer I want to be.

Yet, it’s difficult to see how my journey could be any more conventional. Perhaps it’s because I didn’t have access to the same resources available to my CS counterparts. Perhaps I am just a terrible exam-taker. But no matter how much Computer Science courses interested me, I found a huge portion of lecture material (i.e computing 20 different runtime efficiencies) irrelevant to my immediate interests. In retrospect, those courses are undisputably key in providing students’ with a solid foundation in basic algorithm design and habituating good software development practices. I am no exception. In a vacuum, however, they serve merely as introductions. A large part of me believed that many answers I sought laid outside the classroom (I still do). Armed with such belief and inflated self-determination, I began to develop a sense of curiosity to start searching there.

No good professional has been good instantaneously, it has come through practice, experience, and most importantly, through conversation. Either physically or academically - there exists a starting point (or multiple) from where we once decided to take up programming. My journey began in my dorm room. It began with writing non-terminating while loops, to missing test cases on school assignments. Around October 2017 I attended my first hackathon in Vancouver with a friend. We left that event winning second place (thanks to our better experienced teammates). This was my first encounter with any developer community. I came away intimidated, self-aware of my sheer lack of knowledge when compared next to the neo-wizards and industry experts present. Yet through befriending the friendliest of its proponents, I also came away with a dictionary of buzzwords to Google when I got home, and a network of new contacts tethering their worlds to mine.

Rare social gathering pre-COVID era, image capture circa 2017.

For every hackathon I went, I was compensated by a list of tools and technologies to be learnt next in cyclic fashion. At some point, I’d get to learning them - JavaScript, NodeJS, SQL, AWS etc. - one project at a time. Yet, the reality is that the more I learnt, the more I realized how much I didn’t know. The reality is, I did give up on projects; the lack of feedback is suffocating and sometimes the process is painful. But I was learning. And over time, that translated into confidence. Enough confidence for me to get involved in open source, volunteer for engineering roles, and eventually, in April 2019, I landed my first developer internship.

On the job, being tasked onto production-related projects exemplified my sense of pride in writing code that mattered. Yet it also meant I had to be more driven to learn than ever. The process was enthralling. I was introduced to an agile way of working, experiencing each part of a project’s lifecycle. Runtime performance and application security were suddenly of utmost importance; factors I’d admittedly neglected in personal projects. I was taught to adopt modular and microservice-based design practices for the sake of scalability. More work was piled on top of developing services themselves - to establish dev/prod parity, build pipelines for continuous deployment, and administer logging for post-production support. Most importantly, I began to receive feedback on my contributions. I could finally see what I was doing right, what was considered best practice, and where I needed to improve. And once I began to prove myself, I was rewarded more responsibility - tasked with owning products, personally liaising with external parties, and held accountable for the delivery of results. To be hired as an intern was one thing, but to come away regarded no different from a full-timer (aside from the pay gap and job security) was another.

It's intern season

Believe it or not, but I consider myself to be quite dim. It took me longer to grasp programming basics and while I tested the patience of many, it was the patience of those that allowed me to learn what I know. It was the patience of my teammates that helped me achieve passing grades and the patience of friends that convinced me to apply for job positions I sought. Colleagues willing to share their stories and knowledge with me despite their hectic schedules. I now make it a point to share my own. The best advice I can give to any aspiring developer is to be self-driven and willing to learn. And in order to learn, take the initiative and go to Hackathons, get involved in Open Source, and speak to other developers unlike yourself. Your journey will be uniquely unconventional, there is no need to go on it alone.

For me, every experience I encounter continues to feed back into a cycle. Since landing my first internship, I’ve continued to experiment, abandon and build. My goal is to adopt the best practices and churn out the best possible output. For me, that is one pull request.

I seek to improve my output; many more pull requests and many more uncountable accomplishments big and small alike.

rss resume twitter github gitlab youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora