From civil engineer to software developer: the decision, useful resources, and my first job
Before I begin writing about how I actually succeeded in my journey to become a software engineer, which still feels unreal to me, let me introduce myself. I am Goran Nushkov, a software engineer at Keitaro and a former civil engineer with a BSc degree in Structural Engineering. As any other person out there, I have hobbies which include graphic design, hiking, reading, playing the guitar, and gaming. Not so long ago, programming was also on that list of hobbies, until I decided that it’s time to transform it into my primary profession. I still remember that impulsive moment when I decided that I would finally follow my true passion and leave the fixed mindset behind.
I think that my example and the example of people like me, can serve as motivation for every beginner out there who wants to take the path of software development, and for everyone thinking about working in an open-source company such as Keitaro. Without further ado, let’s begin.
The deciding moment
It was exactly 15 months ago. There I was, a young structural engineer at the start of his career. I had already worked as an intern and had several freelance projects behind me. Everything seemed so perfect, I had my bachelor’s degree and I was preparing for the final step, getting that Master of Structural Engineering title. Things changed when I got my first official job. I was spending my days sitting in an office, working on things that didn’t really scratch that part of my mind that was boosting my motivation, and I was desperate for the usual 8-to-4 day to end. All of the things that not so long ago seemed perfect, started to crumble as I was realising that something isn’t right. The realisation that each day of my life will be like this uncovered a passion that I was trying to suppress for so long. And then it happened. The impulsive moment that made me change my life for the better by choosing the profession I love, not the one I like.
The learning process
Just one week into my first job, I fired up the Harvard CS50 course, created the most amateur development environment, and started the learning process. By the time I was done with my first course, I changed my job, but that did not stop me from learning. I was learning the computer science concepts and programming in general almost every day for 8 months. It wasn’t easy to work and study at the same time, but I was very persistent to keep on going and reach my goals. I spent time researching the available resources, because I knew that the day you decide that you want to code is the day with the highest chance of quitting. Why? Because the programming world today is filled with so many learning platforms, languages, technologies, and learning paths, that it can really overwhelm anyone. After enough research, I had created my own list of resources. It’s not long, it’s not short. It’s optimal, as it should be. Of course, it can vary in the last parts, but if you get to the middle of the list, I can assure you that you will know what is best for you. For anyone struggling with this, I hope that my list can help out. Here it is:
- Pre-Programming: Everything you need to know before you code (Udemy) — This course will give you the very basics, you won’t actually code here. Evan Kimbrell does an excellent job on explaining this stuff.
- Harvard CS50 — Introduction to Computer Science — The most important part of the list, you will learn so much from David J. Malan and his team. Of course, it also might be the hardest part since you will mostly be writing C code, but if you can push to the end, you will be ready for any language out there.
- Learn Python The Hard Way — This book will get you through Python in the best way possible, by actually writing code and answering questions. It will also teach you the crucial skill of using Google comfortably to find anything you need. Finally, you will also learn how to use the terminal (or command line) on every operating system in the modern world, which is probably among the most needed skills as a developer.
- Learn MORE Python The Hard Way — This is optional. Read this if you want to learn more about algorithms and data structures. I think CS50 will give you enough knowledge about those stuff, but that’s only my opinion. This book also gives you further knowledge on using the Bash terminal.
- Python and Flask Bootcamp: Create Websites using Flask (Udemy) — This is a course that will introduce you to web development by explaining the Flask framework for Python, which in my opinion is best for beginners. It is minimal and it’s easy to work with. Also, the course is from Jose Portilla, who has many top courses on Udemy. This will also introduce you to HTML, CSS, and Bootstrap.
- The Build a SaaS App with Flask Course (Udemy) — This is optional. Watch this if you feel like you want to advance more in Python. Nick Janetakis is practically giving away the code. It’s perfectly written and explained. He does a great job on explaining web servers, load balancing, security, and so much more.
Keep in mind, skills like Git and Bash are also very recommended. You can learn Bash from the Learn Python the Hard Way book, as I noted. About Git, you can simply download a cheat sheet and try the commands to create something on GitHub. Also, I learned the basics of Docker because I watched the Build a SaaS App with Flask Course.
I made several projects for my GitHub portfolio and after many courses and books, I became comfortable writing code. I finally felt ready to shift into another profession.
Working in Keitaro
Somehow during the learning process, I also developed a passion for open-source software. The opportunity to help others boosted my motivation even more. After several job applications and interviews, I found Keitaro, a company that shares my passion for software development and open-source software.
After 8 months in the company, I am delighted to say that working on projects such as Amplus reminds me of why I shifted to programming. At the beginning of the project, I could barely understand what was going on, and in such a short period of time, through great teamwork and support from my colleagues, I managed to become a part of the core development team of Amplus, get a great experience boost and learn many new technologies in the process, including Go, Docker, Kubernetes, React.js, CKAN, Linux and many more.
This profession really helps me grow not only professionally, but also as a person. I am finally convinced that the impulsive moment 15 months ago really changed my life.
I made the right decision.
This article was originally published on keitaro.com