How I learned Programming (as a non-CS student)
So back in March 2017, I first entered university. It had a been a long journey to make it to Yonsei University one of the precious “SKY” Universities in Korea, in addition I had been admitted in the department of biotechnology which was where my ambitions were back then, trust me when I say I used to think of myself as ‘the guy’ that will discover the vaccine for HIV.
My life plan back then could be summarized in one sentence: get a PhD before I turn 30. As soon as classes started though, I realized that it was going to be anything but smooth sail; My classes were mostly taught in Korean and although I had spent 12 months relentlessly learning Korean prior to entering university, I was soon to realize that my conversational language skills were not going to cut it with regard to courses like Calculus and Biology. (I still struggle to pronounce ‘infinity’ in Korean!)
2 months in college and I was very frustrated with the system I was so angry at my inability to listen to lectures in Korean or to ask questions in the class, I was almost depressed and I was ready to open up for possible changes in my life plans.
In such difficult times, I would spend days and nights wondering what my life was going to be if I can no longer top the class. Excellent grades had always been my primary source of pride, confidence, motivation and hope. As a high school student I won a grand prize in the national science contest, and everything after that had just been excellence after excellence academically speaking, so it was incredibly heartbreaking and honestly demoralizing to look at a serious possibility of getting a ‘C’ grade (or worse!).
When I was hitting the rock bottom, I started searching everywhere for anything that can get me excited again in my life, and boy did I find it!
I came across a handful of books that forever changed my view of the world, to make the comparison fair I won’t be including The Bible for obvious reasons:
- ‘The Richest Man in Babylon’ by George Samuel Clason
- ‘The 48 Laws of Power’ by Robert Greene
- ‘Think and Grow Rich’ by Napoleon Hill
- ‘Rich Dad Poor Dad’ by Robert Kiyosaki
- ‘The Greatest Salesman in the World’ by Og Mandino
- ‘How to Win Friends and Influence People’ by Dale Carnegie
I read many books since then but these ‘6’ today remains my best books so far. Perhaps the most important lesson they taught me is to see the world realistically for what it is, stop feeling bad for myself and chase my goals relentlessly.
After that difficult first semester I applied for a 1 year leave of absence during which I went to my home country (Rwanda) and started a pig farm business. The story of my first startup itself merits a separate article!
Fasting forward, in 2018 I returned to the University with a ‘fresh mind’ truly determined to now explore and figure out what it is that I want to do next. Because I didn’t have a personal laptop that time, I remember I would do my writing assignments in my notebook and then visit the dormitory PC Room to type them.
Whenever I was done typing my assignments, I would keep surfing the web for interesting things one could do with their lives.
One night I came across a title that said: “Codecademy: Learn to Code – for Free” and I thought to myself: is this not 'the thing' I hear people saying it’s insanely difficult?
So being an adventurer that I am, I thought: Learning a difficult skills for free? What could go wrong? So I said let’s do it and see. That night I think I went to bed in the morning, HTML was just too good to leave!
In a couple days I had completed the HTML Course and half of CSS on codecademy. Exams kicked in and before I know it the semester was over and I left the dormitory. So my programming journey was paused and in the summer of 2018 I worked hard on part time jobs to make enough money to by myself a laptop that I can program on.
I got my laptop in around February 2019 and in March I was back on codecademy. This time though, having heard that Data Science was the hottest Job of the year, I started the data science path on codecademy. The path was supposed to go like this: Python - SQL - Data visualization - Machine learning. As good as codecademy was/is it just wasn’t working for me somehow. More than anything else, I did not like the level of magic that was happening whenever I ‘just followed instructions’. Come to think of it, the skill I best learned from this path was probably SQL, but again it is funny that I had learned how to query relational databases without even understanding what are databases, which types are there and why do we use this or that here or there. I didn’t even know how to install and run PostgreSQL or MySQL.
As I was learning in such a disorganized manner, April 13th 2019 happened. On April 13th 2019, I sat down and talked to Aimable, a man whom I am proud to call my mentor. Aimable was then working in the Cybersecurity industry in Korea (Today works at Google), our conversations covered as many areas of life as you can possibly cover in 5-6 hours of discussion.
Of all the things we talked about there was one sentence that stuck in my mind, when he was motivating me to explore the coding fields he said: “if you can write one line of code, you are already a better programmer than millions of people who can’t” this humble statement has motivated me to learn programming like never before.
I felt that with every line of code I write, I am getting better and more attractive in the job market. Whether that was true or not doesn’t matter, what matters is the encouragement it gave me to go through the rough initial days of learning to think like a programmer.
I learnt the Beginner level Python concepts using the free 4 hours 26 mins video by Mike Dane, the whole video is available on YouTube on freeCodeCamp channel and it’s pure gold!.
I would watch approximately 1 hour a day even though I would study at least 5 hours a day, why? Because I keep pausing the video here and there to try several times what Mike had just done, almost as if trying to prove him wrong.
After that I solved some regular coding challenges that my mentor used to send me (which I am eternally grateful about).
In the summer of 2019, I picked up web development again, this time re-learnt html, css, bootstrap and Django using Brad’s courses (Traversy media on Youtube). Brad is a great guy, we like him for his honesty and his hard work to provide as best content as possible to the world of web developers.
At the end of that vocation I was able to build my first full website with the front-end written primarily in bootstrap and the back-end written in Python-Django. I was also thrilled to finally learn how to get a database up and running, as well us deploying we web application in the cloud environment which was no easy task the first time I did it.
I later learnt that many newbies to Django uses Heroku for their deployments, I learnt deploying on Digital Ocean, the experience was very challenging honestly for several first deployments: when things worked I would have no idea why they work and when things broke I would struggle to know what went wrong! An example would be several instances where I had to manually inspect the database to figure out what went wrong and also where I had trouble ‘SSH’ng into the server.
Slow by slow though, Django started to make sense, I started to understand why we do stuffs the way we do them and why we use a framework in the first place. The same story with cloud deployments, I started to understand what each step meant and why it was done the way it was done (although I still don’t understand why the Django community agreed to call the ‘local_settings.py’ file so!)
During my fall semester of 2019, I enrolled for information processing and machine learning classes. Both classes were using python, and personally I was using python for self-study and doing hackerrank and that really is how I became a Python Enthusiast because I was working in python almost every day for well over 4 months.
The information processing class taught basic stuffs which I already knew, and the machine learning class taught difficult stuffs and in Korean (the very first assignment was implementing bubble sort and from there we went on to cover all common ML Algorithms) . At the end of the semester I worked with 2 teammates on a deep learning project (which by the way was how I became a linux guy) our project was implementing a hair detection + hairstyle classification model.
At the end of that semester I really felt like I could learn anything I wanted really given how hard it had been to learn Machine learning in Korean.
I like to call the summer of 2019, “The time I went back to basics” I picked up Leetcode and learnt Data structures and algorithms obsessively, solving 200+ problems in less than 2 months. It was a very awakening period to me as a programmer and I think it was the period that made me a programmer, for it was in this time that I started worrying about the computational time and space complexity of the code I write.
To close the semester, I also worked on several projects including building a website for the Rwandan community in South Korean, and coding the Seoul Subway network. These projects taught me the importance of staying organized as I work on large problems, and also the importance of documenting and testing.
Today I am sharpening my Javascript and React skills as I work on practical projects, as well as learning more about cloud computing.
Conclusion
Every time I tell people that I am a programmer who majors in biotechnology, I can read skepticism in their eyes. I personally believe that in today’s world programming is no longer something we leave to the CS kids. I think any area can and should benefit from application of programming skills.
Recently I held a free 8-weeks Python coding class via Zoom to the students who are currently stuck at home due to the COVID-19 Pandemic and I will write about what I learnt from this as well.
Currently I also build websites for small businesses and individuals.
I have 3 semesters left to graduate from Yonsei University and during this time I am determined to make myself just too good a programmer for any employer to neglect
So help me God!
Let's connect international followers ??
Bachelor's at University of Rwanda
4 年Yeah, get stronger brother. we sometimes feel like we are responsible of doing great things to bend the hard curve of life. these tech skills are for us just to brighten our faces in hyper-digitized world. and I think we are at good steps along the way.