An introduction into who I am, where my experiences and passions lie, and what the purpose of this blog is.
Humble Beginnings
I like to think that my life truly began when I came to Austin, TX in the 6th grade. It was such a big change from what I had been to used to, having lived my whole life prior in the likes of Georgia, Alabama, and Mississippi. My middle school experience wasn’t really all that memorable though—with the main highlights including lots of video games played and my involvement in the production of my 7th and 8th-grade yearbooks.
However, it was during this mundane middle school experience that I was introduced to the world of software. Having stumbled upon a simple, frontend graphics library called Processing.js in my tech-systems class, I became infatuated with coding. I was in awe as to what I was able to create all on my own, as a small, frail, pakistani boy. The remainder of my eighth grade from that point on was filled with many sleepless nights spent coding away.
My freshman year, I signed up for AP Computer Science, an intro to CS class taught in Java. With my previous coding experience (Pygame and Processing.js—insane I know), I breezed through the class and got a fi—three on the AP Exam… Don’t worry I re-took it the next year and got that five. Speaking of the next year: over the Spring break of my sophomore year, I attended my first Hackathon. And guess what was the first-place prize: an internship at a local cybersecurity startup called Threatcare (now merged with ReliaQuest). And guess who’s team got first place: not mine! However, through some persistence and persuasion, I convinced the CEO of the startup to (pity) grant me an internship position at his company.
Now, this may not have been my dream “software engineering internship”, jam-packed with writing production code and working with a professional dev team, but it was definitely a turning point in my life. It was during this summer that I finally realized that coding could be a profession, and that I wanted everything to do with it.
Nearing the end of this internship, I was spending some time in downtown Austin when rain started coming down from nowhere. Seeking shelter, I hurried to a nearby event center. As I walked in through the 30-foot-tall doors, I saw a man in a blue polo reading a book, sitting behind a table with a sign that read “Check-in”. I asked him what he was doing and his response was, “well, I work for a company called Auction Source and we’re helping XYZ organization run this event today.” Being the incredibly bold 16-year-old I was at the time, I asked if they were hiring. Not if they were hiring software engineers, or part-timers, or interns: just if they were hiring. But just as luck would have it, there comes swooping in the VP of the company, bringing with him a very welcoming, “hell yeah we are!"—and his business card.
After a pair of phone interviews and one of the in-person variety, I was hired on a part-time/contractor basis as a “technician.” My job was to arrive at a customer’s (most often a charity organization) event with a boatload of MacBooks and iPads in tow, set up a registration area, and teach their staff/volunteers how to use our platform. Then throughout the night, my role was more aligned with damage control—meaning that during a perfect event I would barely move a muscle until the end of the night. Thankfully, there were no “perfect events.”
A little something about me is that I am not the most—you know—“academically driven” individual. I wouldn’t do homework if I thought it was pointless, I wouldn’t study for a quiz or test if I didn’t find the topics interesting. My typical day in high school would comprise of waking up late, driving 40 minutes to school (I lived outside of the school district), showing up tardy to first period (by more than a little), messing around with my friends, or coding whenever I could do so without being scolded (most of the time), and then leaving an hour or two early to go to work. If I didn’t have work that day then I would drive 40 minutes back home through traffic, code until around dinner time, go to the gym with my buddies, and then come home and code until 2 or 3 in the morning. Just in-case you missed it, “study” or “do homework” weren’t anywhere to be found in this daily routine, and “go to class” was more of a suggestion.
Since we’re around 1000 words in, let’s take a little recap. At this part of my journey, I’ve: interned at a software company, been working part-time for about 9 months at another, taken 2 CS classes, and worked on a few personal projects; but I knew it was time for the big leagues. One weekend, a local high school had come to us asking for our services at their upcoming annual fundraiser. I called dibs and later that week I drove up to the venue for the event. The job starts off pretty standard: set up the check-in area, train the volunteers, etc. A couple of hours into the night, once the majority of the constituents were already 3-4 drinks in, I’m biding my time until the end of the night when a man in his mid-forties asks me about the platform we were using and what technologies were in action. Like the genius I am, I told him it was a “Java front-end and Angular backend.” For those who are less developer-savy, that’s the equivalent of me saying “my shoes are made of the finest silk and my garbs, snake leather!” After quite the strong start though, we sat down and had a conversation. He tells me that he works for a local healthcare-software company. Near the end of the conversation, I ask him if the company hired software engineer interns. After sizing me up, he makes the mista—I mean he tells me that they indeed do and gave me the email of their “College Talent Recruiter”.
After a couple of months and a phone interview, I’m invited to the office for a Technical Interview. So, in the usual fashion, I leave school early and show-up to their office with hutzpah and vigor. There were two interviewers: the first was a Sr. Software Architect and the other was the Head of QA. The first part of the interview was pretty basic: tell us about yourself, walk us through some of your projects, etc. Now onto the second part, the coding question: Write a binary search tree sorting algorithm. Literally, 4 hours prior, my high school CS teacher, when asked about how to prepare for a technical interview, told me that the most common question asked either was about or involved, a binary search tree. So, like any reasonable person, I studied them the day before the interview. However, I had one small shortcoming: I didn’t know that all the studying in the world would be rendered useless if you blank the day of.
So after bombing the technical portion of the interview, the two interviewers sat me down and told me that they really liked me and asked my opinion of working with the QA team. I stated no objections and 2 months later, I got an email congratulating me on landing the position, along with a DocuSign contract for a 12-week, $20/hr internship. I would be starting at the end of May as a software engineer intern at Iodine Software. After (flexing on) telling every single person I knew about my smexy new internship and spending every hour between then and May learning Maven, JUnit, and Selenium WebDriver, I was ready for the big leagues.
Alright, it’s the big day, the first day of my big boy software engineering internship. After getting settled into my work station and meeting everyone at the company who I was allowed to be on speaking terms with (just kidding), I was given my first assignment: refactor the QA codebase. Now, I want to preface that at this point in time, I didn’t even know what the word “refactor” meant, what the importance of a clean codebase was, or anything other than fundamental computer science constructs and basic back-end development. So the first thing I asked after seeing an absolute mess of a codebase was, “What’s wrong with it? Looks fine to me.” So the head of QA sat me down and explained to me why this codebase was an intertangled monstrosity of a repository and needed heavy cleaning. Essentially, the codebase comprised of one repository containing every single integration test written for each of all 3 of the companies products. They were all under the same Maven project, had no versioning system, had minimal CI, and were impossible to work on unless you knew exactly what you were doing. The goal was to split them up into their own projects and have them work independently of one another.
So I’ve got my first big project and I’m ready to go. After spending the first week getting the test suite and all of the company’s products to run locally, I was ready to knock this assignment out of the park! Now looking back, it’s clear as day that this project would take at least a couple of weeks to be able to tango with the behemoth and carefully pull it apart; but I wasn’t the most experienced developer at the time. I told my boss—verbatim: “Ok cool, I should have this done by next week.” I said it with so much confidence that he believed me without any supportive reasoning whatsoever. His response: “Great, good luck!”
Now the reason I thought this would take me a week was because I thought he was giving me some intern busy work. I thought that my entire job was to literally drag and drop the files in the repo into three different folders. Now you may have guessed that I had a bit of a rude awakening. So, the end of the week rolls around and my boss asks for a progress update…there was no progress. Thankfully he half-expected this and gave me a pretty general run-down of what I needed to do. So, for the next 5-6 weeks, I learned how to use: Maven, JUnit, Selenium, BitBucket, Bamboo, and Artifactory. I split the codebase into 3 different repos, with one being a general library used by the other 2, version-controlled and deployed to Artifactory. I also set up the other two repos with Bamboo and Artifactory so that they could be seamlessly deployed. Now, after my 1 week project had taken over half of the duration my internship, I had a bit of a realization.
I might not be some genius developer. Now, don’t get me wrong. I’m a quick learner and my love for the field helps me write amazing code. But back then, I thought I was the shit. I thought I was this child prodigy developer that knows everything and could start working full-time whenever I felt like it. There were simply so many unknown unknowns that I thought I knew everything. This project was such an amazing wake-up call for me and changed how I viewed myself as a developer. I even sat down with my manager and told him, “I thought I was this rockstar developer who could take over the world, but I’m barely a novice. How can I become an amazing software engineer?” I’ll save what he told me for a different post, but now I knew that I had some work ahead of me: and this made me feel so exhilarated. From that point forward, I’ve always been so excited to become a better developer and each step along the way has been incredibly rewarding.
My next couple of assignments were a bit more sporadic: fix some CSS here, write some integration tests there. One of the cooler ones was to implement this technology called Swagger to automatically document, create a library for, and deploy one of our APIs. There were also a bunch of fun, non-coding things that happened. From weekly lunches hosted (and paid for) by the admin team to a go-karting event at the Circuit of the Americas track, there was no end to the fun I had when I wasn’t coding. This internship was one of the most enjoyable times in my life and that summer is one that I’ll never forget for the rest of my life.
Sadly, once the internship ended, I had to go back to school for my final year as a high school student. The beginning of the year started off with college apps. I applied to 8 schools. Seven rejections. Now I go to A&M. At first, I was a little disappointed. I thought I’d be going to Carnegie Mellon, UIUC, or at least UT. I think the main reason I wasn’t admitted was that my grades were…less than ideal. I guess skipping class to work part-time at a software company is no bueno. Regardless, I don’t regret it. I enjoyed my time in high school and I love A&M.
The remainder of the school year was pretty unnoteworthy. I was elected as the “Araneator” or web-master of my high school Latin club. Here’s the site! I went to the gym every day so now I’m super jacked. The company that I had been working at for the past two years shut-down due to the pandemic. I worked on a couple of software projects here and there. And I confessed my feelings to the girl that I had liked for the past 3 years: did not go well. But jokes on her—now I write a blog on the internet that no one reads…
Sadly, due to the pandemic, I was unable to do the one thing I had been looking forward to the most for the whole year: take part in another internship. But I found a better use of my time: all 300 episodes of Gintama :). I also worked on a small web app with a couple of my friends: you can find the repo here. Near the end of the summer, I had to take a Math Placement Exam for A&M. Fun fact: I stopped taking math classes my sophomore year of high school when I suffered through Algebra II, not because of how hard it was, but because of how bored I was in it. So you could say that I was pretty scared about how I would do. However, after a couple of dozen hours of Khanacademy and two-or-three practice tests, I got a 30/33. I needed a 22/30 to be placed in Calculus I, which was my goal. Lesson of the day: don’t over prepare.
A couple of weeks after the MPE debacle, I moved into my dorm at A&M as a general engineering student. I took a pretty easy course-load my first semester and finished with a 3.5. During the school year, I spent most of my time hanging out with my friends, working at the newest company on the list: Code Galaxy, as a coding instructor for elementary-through-high-school students, applying to internships, and hating myself—but I’ll save that story for another post. I played on the club tennis team and for a brief period of time, was part of the dev team for an A&M student-led project called RevRegistration. Near the end of the semester, I met a cute girl in the laundry room and we started dating. And during the Winter Break following my first (successful) semester at A&M, I’m starting this blog!
tl;dr
I moved to Austin when I was in the 6th grade and started coding two years later. I took AP Computer Science all four of my years in high school, as well as way too many other AP classes. The summer following my sophomore year, I landed my first internship at a cybersecurity company in downtown Austin called Threatcare. I got this internship through a hackathon I had attended a few months prior. The next summer, I interned at a mid-sized healthcare-software company called Iodine Software. I spent my senior year like most others: coding until 3 am on most days and getting rejected from all but one of the colleges I applied to: A&M. And after a pretty successful first semester at A&M, I’m writing this post over winter break!
Interests and Expertise
Let’s start with what I’m interested in. As you can probably tell from my Humble Beginnings, I love to code. I find it amazing how much of an impact one developer can make, and how quickly they can accrue the needed skills. I’ve also always had a great interest in self-improvement and productivity. I’m always looking for ways to better myself and I’ve scoured the internet far and wide for methods of doing so. I’ve also recently taken an interest in Entreprenuership, and hope to take you all along that ride very soon!
In terms of expertise, I’ve been coding for the past 5 years. My favorite technologies include: Python, JavaScript, Node, Vue, MySQL, and Go. Since I’m (eternally) only a freshman in college, my academic knowledge is somewhat limited: comprising of basic Calculus, Statistics, (Organic) Chemistry, Latin (for some reason), and Computer Science. I’m currently majoring in CS, as well as pursuing minors in Psychology and Business.
Goal of this Blog
Now, you may be asking yourself, “Why is this dude writing a blog?” or “What can I, as a reader, get out of this?”. To answer the former, I feel as though I, through all of my life experiences, have some two-sense or piece of wisdom that at least one person out there could learn and better their life from. To answer the latter: I’ve experienced many hardships in the areas of software engineering, self-development, motivation, and productivity, and have learned many hard lessons in each. So as to save you time so that you don’t have to crawl through the same trenches I did, I wish to share the lessons I’ve learned throughout my life, via this blog.