Learn more about me
Since I was young, I had the dream to become a software engineer, probably because of the movies I watched. But I didn't know either how to become an engineer or what type of engineer (I even didn't know there was differents domains in Computer Science), in short, it was just a dream.
In 2018 I learned my first programing language (C) by a pdf book "Apprenez à programmer en C" which means "Learn to program in C", I have learned how to create a Hangman game on the console, and a 2D graphic game (Sokoban clone), that was one of the most beautiful experience I ever had, I made my first program from scratch just by writing lines of code, I will never forget the gratitude and proudness I had felt. That experience made me feel more confident even though I had a lot to learn, and I still have a lot to learn, but I didn't realize that at that time, But I learned from that experience that there is no magic behind the programs, I don't need superpowers other than my mind, All I have to do is to learn, practice, practice, and practice to realize my dream.
By practicing in many hobbies projects, I started realizing the importance of unit tests (the long debugging time they save, the safety they make you feel when you are updating a code after a long period...), I have also realized that not only the time and space complexity of algorithms matter, but the code's architecture matter a lot if you want to have a scalable, testable, and maintainable software. Since that, I have started learning about the software design best practices (SOLID principle, Design patterns, architectures like "the clean architecture"...). Currently, in almost all my projects I apply the SOLID principles and I implement the Adapter design pattern (my favorite) if I have at least one external dependency.
By following my curriousity and my passion for discovering new things, I learned many languages, concepts, tools and frameworks. Some of them are listed below.