My adventures in Computer Science
By: Alexander Ocsa
Tags: Biography, Algorithms, Coding Interviews, Software Engineering, Computer Science

A little bit about me and my unexpected dive as a software engineer

Hello! my name is Alexander Ocsa and having come from Arequipa-Peru, I have an immense affection for my roots. I was born in a small town in the Colca tourist region in Arequipa, where I grew up in a well-formed family with good values. I have incredibly good memories of my childhood and my first education in the Colca Valley, which I must say is an experience that I would not change for anything.

Colca Valley

My love for mathematics, science and computing made me want to be a computer scientist. At first programming was the skill I had problems with, because I was not patient, but over-time I learnt that this and perseverance are two of the things you need most in that career.

After successfully finishing college at UNSA university in Arequipa City, I was drawn to studying abroad. There were many myths about that, firstly that it was difficult and also that there was intense competitiveness. Later I discovered that it was not so much like this, you just have to be more persistent and you must really like what you do. Thankfully, I successfully completed my master’s degree at ICMC-USP in Brazil and specialized in Database and High-Performance Computing using GPUs.

During my days in Brazil I also discovered why I sometimes felt different to others. I was diagnosed with Asperger’s, which explained why I could spend so many hours/days/weeks/months on something I found interesting yet emotionally I wasn’t affected and also discovered why sometimes high-pitched sounds or strong colors made me angry. This was a great relief because it was nothing more than a condition and knowing that you have it, and knowing how to handle it, generates consistency in your life.

Somewhere in Brazil

Having finished my adventure in Brazil and got my master’s degree, there were very few opportunities and interesting jobs. It was clear that if the opportunities were not there, I had to create my own. I was not sure if what I wanted to do was to pursue an academic career and then go on to a doctorate as I was already in my twenties and desperate to embrace real life and the world of work. Realizing that my top performance levels would not be the same in my thirties, is why I decided to enter the world of entrepreneurship. At the beginning, I was not sure what I was going to develop but what I was sure was that it would have to be something great!

I started working on mobile technology and digital comic books with some friends. After a year of brainstorming, we finally released the first Peruvian interactive digital comic for iPads, “Ayar, the legend of the Inkas”. This was one of the first innovation projects for iOS developed in Peru and It was presented at TEC (www.tec.com.pe) on national television and also at the ComicCon in San Diego (2012). It was one of the most rewarding yet difficult experiences I went through because being an entrepreneur is something ridiculously hard. In the beginning, it is great but after a while, you realize that it consumes more energy and time than anything else to keep the product afloat. Sometimes, It just felt unsatisfying because many times I had to do other things that were not necessarily programming, and it just stopped being fun.

On national television presenting “Ayar, the legend of the Inkas”

After that and having taken a vacation for a while, I took an offer to teach some courses as a professor in the UCSP University. At first, I was worried because even though I was quite good at computer science I was not a people person. However, I was able to change that by pushing myself on purpose in order to learn how to handle that. At the end, what I learnt was really important to me. I learnt that I like to teach, I like to share my enthusiasm about computer science, and I discovered that one of the best ways to learn is by teaching what you like. I left UCSP with new confidence and self-belief but knew that this was only the beginning of my journey.

My first students and new Masters in CS at UNSA University

That experience at university was interesting but after a while, I felt that I had to do something else. Therefore, I decided that if I was going to return to the academic world, I would do it well and in my own way focusing on polishing my technical and leadership skills. Having entered the PhD program at UNSA Arequipa university, I decided to replicate the Brazilian research model with research funds and constant work in search of excellence to generate publishable and applicable work. This took time, but it was an experience that had to happen in order to answer what would have happened if? In the end, you discover that no matter how much effort you put into this system, especially if it is a public university, and it does not have sufficient funds to grow, it is like rowing against a current. So, after finishing my PhD I decided it was time to apply what I had learned during my post-graduate studies in the high-tech industry.

However, being an academic with a Ph.D. can also be difficult because the vast majority of what they expect is a job as a full-time professor or being a researcher at some university or institution. This is something I did not want to do, I had already gone through the experience of this, but I felt that many of the things that were done had no practical application and more importantly, little social impact.

In my quest to return to the software industry world in 2017 I came across Laboratoria.la, where I enjoyed being part of this non-profit organization as a mentor, teacher in the Bootcamp program and as a software engineer. I wish I would have had this experience sooner because I was missing my soft skills, which for me are the hardest to develop. By helping many talented women in their tech career, I can easily say It was one of the most enjoyable experiences of my life.

Keep Calm and Code ON, Laboratoria.la

After that in 2018, I started working as a C++ developer at BlazingDB. This company was already on the map because they did basically what I specialized in my master’s degree in Brazil. It was difficult at the beginning because it was my first experience as a Software Engineer in a company of such high specialization, but I got used to it and was able to perform normally and in many parts with excellence.

Working for BlazingDB was awesome. This was the first time that I faced a full-time remote job for an international company, also, I worked around high-tech open-source projects. In addition, this was the first time that I needed to work and report directly to the CTO in English. At BlazingDB, I focused my work on system programming for the creation of next-generation GPU Analytics Tools, where I was part of the development team of BlazingSQL query engine built on RAPIDS open-source software. Moreover, I was able to contribute with the RAPIDS/CUDF open-source project with the implementation of CUDA kernel primitives for “sort-based group by” and other primitives in CUDF.

With some friends at the Empire States in New York

At Google In New York

In 2019 I was contacted by important companies such as Google, Facebook, and Audi to work as a Software Engineer in Europe. Although I felt very happy because it was something I was looking to do someday, the experience came as a bit of a shock to me. These companies ask for the best of the best, and the way they do that is by testing your expertise in data structure and especially algorithms. I always considered myself particularly good at data structures, but algorithms were not my strong point. It was clear because many times I passed the tests, but my algorithm cost was not sufficiently good. The fact that I could not pass the first rounds of technical interviews gave me the impetus to specialize in both algorithms and improve on my English level.

Interviewing for a tech job is intimidating with whiteboard challenges, remote coding challenges and even full days of onsite interviews. One important thing you have to prepare for is to study up on the most important Computer Science (CS) fundamentals, so what I recommend is to narrow your focus in two main areas: data structures and algorithms. This type of training is one of the best ways to improve your professional career, as It not only prepares you for better job opportunities but also It will be very valuable in your daily programming tasks by training your mind to face complex problems.

So, after my experience with tech interviews in big companies, I decided to focus my study on algorithms. In mid-2019, I went on a two-month trip around New York to learn more about these types of interviews and to polish my English. I went to Fullstack and Gracehooper Bootcamp academies, where I observed that the students are always testing themselves by mocking tech interviews with their teachers. Also, I observed that after classes were finished most of them continued practicing with whiteboard interviews. I realized that the level of competition can be brutal and if you want to be that good you have to practice this way.

Working on BlazingSQL with the RAPIDS.AI ecosystem

Working with Open Source RAPIDS/CUDF on a GPU Workstation

Following my experience in New York. I decided to take on the most technically challenging projects at BlazingDB. In addition, I started teaching courses like Design and Analysis of Algorithms and Competitive Programming at UTEC University. At this point in my life, I knew that the best way to learn something was to teach and apply what you have learned in the process. After some months I realized that I started to like the world of algorithms more than the world of data structures. I am honest when I say that it can be tedious and even boring, solving problems in a leetcode/hackerank type platform. However, what I discovered is that if you share what you learned and enjoy the process it can become rewarding and enjoyable at the same time. That is why, in addition to teaching at university, I decided to start sharing what I learned in my preparation process and this time replicating something that I really enjoyed in New York, my participation in the HackerHours meetups. The format is super simple: you come with your laptop, sit and hang out and code, and flag down one of the organizers if you have a question. In addition, I took the challenge of teaching at talently.tech, where I helped Latin software engineers master key computer science fundamentals, such as algorithms and data structures, in order to improve their performance in tech interviews. It was an exciting time teaching and sharing my enthusiasm for computer science.

Quansight supporting open source projects including PyTorch

Now I am working for QuansightAI. I am starting again, and It is an amazing challenge. I am working with modern numerical computing and deep learning technology developing new features, performance enhancements and helping maintain code with millions of users at the PyTorch project. I have explored many paths to get where I am today, and I know that many paths are still ahead of me. Where I will be in the future, I do not know but I’ve enjoyed the journey getting here.

>> To be continued…