I wrote this article because I took a sit back and I couldn’t even remember anything from PHP aside the fact that I used a lot of dollar signs $$$. In this post, I will mostly be documenting in chronological order, the tools I learnt since I started programming. (At least the ones I can remember)
Finding myself
LOGO
LOGO programming was taught in early secondary school years as part of school curriculum. I remember drawing very basic shapes with LOGO. In fact, it felt more like maths than programming because we actually had to calculate angles and shape functions before actually drawing them. I was pretty good at maths and learning LOGO was cool. I’d say, it created a spark in me to learn more about programming.
HTML / CSS
It was also compulsory to learn HTML in Computer Science in Junior School. The curriculum only actually covered basics, but my friends and I built some websites with HTML/CSS then. I remember building a download site that hosted all the images on my computer. The site was really bad, because I wrote all the pages by hand, copied and pasted blocks repeatedly. W3Schools was a very good guide to learn HTML and CSS.
School happened, so I had a brief pause
PHP
There was a Wordpress workshop two years before I graduated from secondary school that actually ended abruptly, if I remember correctly. I dug the source code for most of the things and started learning PHP myself from a very scanty PHP manual. It was actually the only resource I had then, but at the time, it was enough.
PHP was the first programming language with which I practiced my knowledge of control flow and flowcharts in programming.
Why did I stop PHP? Python was starting to gain hype and I was advised to learn it by my Physics teacher.
Python

- Automate the Boring Stuff with Python by Al Sweigart link
- Beyond the Basics with Python by Al Sweigart link
- some material I can no longer find anywhere on the internet // TODO:
- Solved a lot of hacker rank problems with python
- Making games with Python and Pygame link
I loved games a lot, so I was curious and very interested to learn the act of making one with my newly developed skill. Did I get heart broken? It took me sometimes to actually realise how unfit and very difficult it would be to make a game with pygame, even though it was fun to learn.
It was at this point I chose to study Software Engineering instead of Medicine. I mean, it made sense because I was interested and curious mostly about programming and tech stuff.
The Journey
Git / Github and Version Control
![]() |
![]() |
I started using git and github very early and that is why I have a lot of repositories on github. I really cannot recall how I started using git and github but I started pretty early. This is good because, over time, I could share my progress with friends and keep track of changes on the projects I worked on. I also tried other repositories like Gitlab and Bitbucket, but I still prefer Github.
Java / Android Development
![]() |
![]() |
In my first year at the University of Lagos, I met a lot of friends and seniors who had interest in programming like I did. I joined Engineering Career Expo and learned Android development with Java. I still regard Java as my native language till date. I learnt a lot while learning Java and I think most things in Java made a lot of sense compared to the languages I have used previously. This dates back to 2018.
JavaScript, Node and ExpressJS

Flutter and Dart
- building UI is wayyy easier than building natively with Java
- I was using a 4gb ram lenovo laptop at the time and using Android Studio was a pain. (At least, I got to use vscode with Flutter).
Java II
The funny thing was that I never really learned Java the first time. Yes! I built some applications with Java, but I was only focused on the Android Framework and never used Java for things like data structures and algorithms for example. I didn’t even understand how many of the libraries I used, worked in-depth.
In Kazan Federal University, Java was officially taught in-depth this time and I learnt super fast, because of my previous experience building Android applications. This time around, I learnt in-depth concepts ranging from data structures, algorithms, Object Oriented Programming, Generics, Concurrency and Threading, Design patterns, Architectures, and so on.
Java set the foundation to professional programming for me. I learnt a lot of things that I still use till date and I am happy I started with Java. Thing is, my choice of languages since Java has been influenced by the fact that I learnt Java first because I am more inclined to learn languages that are similar to Java.
At this point, learning new languages has been breeze for me. I can learn a new language in less than a week or two, and I can build a simple application with it. I have learnt a lot of languages since then, but I will only be highlighting the ones I have used extensively.
Kotlin

PostgreSQL

iOS Development (Swift / Objective-C)

I also learnt Objective-C on my own, because I was curious to see how much of an improvement Swift was, when compared with Objective-C.
I have built a lot of applications with Swift and some of them are available on my repo on Github.
I also had my second year summer internship with a company as an iOS developer.
Before I move to other languages, I think Swift is one of the most properly designed programming languages I have used. Furthermore, I’ll explain how iOS development was easy but complex at the same time:
As a beginner, one is abstracted away from serious swift code and can use the Layout Builder to build a decent app in Xcode. When moving up the ladder and getting better, you have to do everything without the layout builder altogether and also learn about ARC memory management model.
Altogether, I really enjoyed iOS development, Xcode, and the Swift programming style guide. I think Swift is a very good language to learn for beginners and I recommend it to anyone that wants to learn programming practically.
TypeScript

Typescript is a very nice language and I always advice backend developers to check out NestJS. Nest is a progressive Node.js framework that uses Typescript and makes backend development a breeze. It utilises the power of decorators, generics, interfaces, dependency injection and many other OOP stuff and best practices, that JS was missing.
If I had to build a LTS server in the shortest possible time, I’d use NestJS.
Go

Learning Go means that I had to learn about containerization, microservices, tooling and profiling.. Go is very fascinating, and there is so much to learn writing Go. I have built a lot of end user applications as well as open source libraries in Go. I have also contributed to several open source Go libraries. You can check them out in my Github repo.
Docker

Linux / Operating Systems

Others
In no specific order, I’ll like to name other concepts, popular architectural patterns that I appreciated, used and I think are notable mentions in my journey:
- MVC, MVVM architectural patterns in iOS / Android development.
- Clean Architecture, DDD, BLOC, Redux, TDD, animations in Flutter.
- SOLID principles, SPRING, Enterprise development in Java.
- Package Oriented Programming (POP), microservices, error handling, profiling and tooling, optimization, concurrency techniques, Docker, (omg testingggg) and other low level system stuffs in Go.
Tips and Tricks to learning new languages
I cannot guarantee that my method will work for everyone, but I found out that since I already know most programming principles and techniques, all that is required to learn a new language is to learn the syntax and the language specifics. Hence I do the following:
- Check out the language on learnxinyminutes.com
- Read the official documentation of the language.
Some languages actually have very good documentation for example:- Swift releases a new version of The Swift Programming language ebook in the Books app on MacOS. link
- Go has a very good documentation on go.dev as well as playgrounds.
- Typescript as well has a very good documentation.
- I solve some algorithms and data structure problems with the language to familiarise myself more with the language syntax and libraries. Personally, I use Exercism to learn a new language.
- Finally and most importantly, reaching out to the community is the best way to learn a language, because you can ask questions and learn from the rich experience of developers that have been using the language for a long time. In fact, they can recommend the best materials to learn the language.