When a would-have-been mechanical engineer learns to code in multiple programming languages as a self-taught software developer, shouldn’t he be proud of himself? 😜
I studied Mechanical Engineering, not computer science, but today I am a software developer (or software “engineer” as some call it) and can build both web and mobile apps. Talk about what we studied vs what we end up practicing!
The frameworks, libraries and technologies I’ve used the most are Laravel, Java (Android), React Native, Node.js/Express, and React. Others are Bootstrap, Tailwind CSS, etc.
How did I learn to code and became somewhat versatile?
Apart from the very beginning, it has been self learning all through. I use multiple online resources such as
- YouTube videos
- Official documentations
- Udemy courses
- Medium articles
- Blog posts
The Unusual Beginning
I was an undergraduate student at the University of Nigeria, Nsukka. The famous UNN! 😁
After my first year at the university, I went for AUTOCAD Computer Aided Design training at Kelvin Academy, outside campus. AUTOCAD is a popular design software used by engineers hence, I felt the need to learn it.
Getting to Kelvin Academy, I saw another course on PHP & MySQL for web development. Out of curiosity I registered for the web development course as well.
Prior to that though I have been playing around with Google Blogger platform. No coding was involved with the Blogger thing but being able to create a “website” (Blogger blog) in a matter of minutes was quite fascinating!
So I started learning to code along with Computer Aided Design.
Along the line I started to find the web development course more interesting than the AutoCAD.
I can’t remember how long the trainings lasted but I completed both of them and got the certificates:
After the trainings, I went on to start learning on my own. It wasn’t easy then because I also had academic workloads to take care of. I managed to carry both along anyway.
For those who went on to learn backend programming they first got comfortable with the front end technologies before learning the backend technologies like PHP, MySQL, Java, etc.
The Hard Languages
In my second year we also did two courses that have programming.
I can’t remember the course titles but they were courses from the Electronic Engineering department, general courses for all 2nd year engineering students irrespective of your department.
We were taught the basics of C and C++ programming languages in those courses. C/C++ was all confusing then. It wasn’t fun but I had to pass my exams.
I continued learning web development anyway.
I made much progress that period before going back to school after the IT.
Taking the Leap of Confidence
As of final year, I have reached a certain confidence level at web development. At least so I thought.
In one of our final year projects my team and I built a web application that sizes different components needed for installing solar power at homes.
It was a basic application that when given the estimated power requirement for home it computes the sizes of the different components needed, such as battery capacity, charge controller ratings, number of solar panels needed by their ratings, optimal tilt for the panels so they can get maximum energy from the sun, etc.
Learning by Teaching
On different occasions I organized web development training, that lasts a few weeks, for fellow students at the university.
The last of such training was the one I organized with my friend, Prosper, before I left for NYSC. That one lasted about 1 and half months.
I always enjoyed teaching because it challenges me to learn the topics more in depth. Although the person teaching can’t know everything, you don’t want to “fall your hand” where you shouldn’t!
Not long ago I started making programming lessons on YouTube. You can see my ZestMade YouTube channel.
Welcome to Java!
If I have a language I loved the most, that would be Java. Well, not until I met Swift 😜
Also in my final year I started learning Java programming. My motivation to learn Java doubled when I saw my classmate, Leo, building an Android app with Java. I think he was building a kinda mobile version of Nairaland.com.
It was fascinating because I never thought it was that simple to just open your laptop and start building a mobile app.
Java was different. Today, when people say Java isn’t awesome because it is verbose and all that, I just think they’re looking at things from different angles because that verbosity helped me understand Java easier.
NYSC for the Codes
I did my NYSC at Southern Kaduna… all the way from the Southeast.
It was my first time going to the North, despite the fact that I have a number of relatives in the metropolis over there.
I can remember the day I saw Southern Kaduna in my NYSC deployment letter. It wasn’t an easy feeling given that I’ve read several articles about Southern Kaduna prior to the deployment letter, including some crisis not too long ago that claimed many lives.
But, I have to serve my country!
My Place of Primary Assignment (PPA) was a secondary school. I was posted there to teach Basic Technology.
With time I got used to Southern Kaduna and some fears I had left my body.
The people in my host community are super friendly. The way they pamper NYSC corps members, eh, you wouldn’t like to leave after service.
Whenever I return from school (PPA), I dive into coding. Most times I work on Android apps. My pet projects.
It was still a struggle for me then. Learning to build mobile apps seemed more challenging for me than learning web development.
I wasn’t proud of any of the apps I was working on so I never cared to deploy any of them on the Play Store.
One day I posted screenshots of one of the apps on my WhatsApp status, asking if I should deploy the app or not. Everyone was like “why not? Deploy the god-damned thing!”
My cousin even sent me $25 Naira equivalent to deploy the app! Which was the fee I needed to create a Google Play developer account before deploying apps. Thanks cuz 😁
The app now has over 50k downloads.
I’ve always been a hustler, an entrepreneurship minded person 😜. So, finding a job wasn’t in my mind all the while. My goal was to build apps or websites that will be generating money while I relax and take care of myself.
I stayed in Kaduna city for about a year after my NYSC before moving to Lagos. All the while I continued trying to figure out this entrepreneurship thing.
I learnt Swift, Kotlin and a little bit of Java for backend along the way.
After about a while in Lagos and it seemed I might not figure out the next Facebook of my dreams, I started applying for jobs 😁
I got two offers that time. One was web development which I didn’t take because it involved some WordPress development and I didn’t want to do WordPress development. The other that came shortly after was Android development. I took the Android offer, why not. I was in love with Java! 😁
I can’t say the pay was what I was expecting but the experience was challenging enough to further sharpen my skills.
What I Would do Differently
If I could go back in time and change something it would be getting into the industry (job-wise) early or just focus on the hustle all through. You know how it is when your CV or qualification is weighed based on where you’ve worked, not anything you claim you know or can do? I have been there!
Well, maybe I’ve gone past that now.
On the flip side though, the decision to hustle isn’t a waste. Because of it I know how to survive even without a job. Not to mention there has been times my side hustle paid more than my job. Isn’t that encouraging?
Another big gain from my decision to hustle is the entrepreneurship sense and knowledge I’ve acquired over time. I’m not the programmer who just codes and sleeps. I’m actually more entrepreneurship minded than coding minded and that isn’t going to change.
Hopefully, I’ll become the entrepreneur of my dreams someday.
What’s Next for Me?
So far I’ve worked on a couple web and mobile apps, both as an employee, freelancer, and on personal project. Weighing myself however, I would say I am not there yet both in the knowledge and the money aspect.
There are many things I think I am supposed to know but don’t know them or don’t know them well enough. Next.js, GraphQL, AWS are some of them but I’m actively learning, especially AWS.
The most challenging part of learning is time. Being a very busy person it is difficult to squeeze out enough time to learn all these! It can be overwhelming sometimes!
But then, I have to keep pushing knowing that “nothing good comes easy” as they say. And always keep reminding myself that “If it were easy, everyone would do it.”
The journey continues…