Turbulence : My Journey In The World of Tech

Turbulence : My Journey In The World of Tech

A personal tale of the various step-ups and setbacks on the path to becoming a software developer.

First of all, I would like to start off by pointing out the fact that tech can be a really interesting field to be involved in, especially in these exciting times when the internet and social media feeds are "abuzz" with watchwords like "Artificial Intelligence", "Cloud Computing", "Big Data" e.t.c. So, if you are already involved in one aspect of tech or the other, I hope you encounter a lot of success and "cheaper mistakes" in your journey to become a developer.

My intent in writing this is not to offer authoritative advise on how best to traverse the field of tech, nor is this an attempt at providing hints on how to speedily achieve your dreams of becoming a software developer and begin earning killer salaries in the shortest amount of time, nor is this an attempt to discourage or, in any way, influence the decisions of anyone just starting out in the field of tech. My aim in writing this is simply to share a somewhat concise story of my experience in tech (Mobile application development) from the very first "Hello World" program I ever wrote, through the seemingly countless setbacks (especially the self-inflicted ones) that I've had to overcome, up to the few successes I've had, right up to this very moment as I sit here "sharing" my story with you my dear reader.

Alright, with all that "foreword" out of the way, we can begin our journey.

First Encounter

Our story starts on a somewhat "warm" monday afternoon at the Federal Government College (F.G.C), Minna, in Niger state, Nigeria. I was an S.S.2 (Eleventh Grade) student at the time, and it was time for our Information and Communication Technology (I.C.T) class. For this particular class, the teacher took us to the school's computer laboratory (as it was called then) where we were split into groups of five students and assigned a mini laptop computer per group. The object of that class was to introduce us to HTML (HyperText Markup Language, for those who do not know) with a focus on the basic HTML tags. We all got a chance to type in a command like the one below:

<!DOCTYPE html>
<html >
    <head>
        <title>Hello World</title>
    </head>
    <body>
        <h1>Hello World!!! </h1>
    </body>
</html>

and then we got to run it in a browser and have the words "Hello World!!!" displayed on the screen in big bold fonts.

Although I had heard of the concept of programming prior to that class, and despite the fact that HTML is not really a programming language but a simple markup language used to provide structure to web pages, I was nevertheless amazed by the possibility of being able to instruct a computer to perform a task and have it perform the required task accordingly. In a way, while many others in that class only saw the browser and were unimpressed by the display or considered it trivial and hence useless to them, I was entranced by the countless possibilities that this technology made possible. In a nutshell, it felt like I had seen my destiny.

Howbeit, this was still secondary school, and as was (and still is) the case in many Nigerian public schools at the time, many of the students, myself included, did not own personal computers and could not access the laboratory for personal practice, so I was not able to take this skill to the next level. Nevertheless, after that class, I was filled with the desire to learn how to program computers, a desire that would endure through my secondary school days and up to my entrance into the university.

Java The Great Bully

The year is 2017, I had just secured a prestigious admission (or so I thought at the time) to the Federal University of Technology (F.U.T), Owerri, Imo state, to pursue an undergraduate (Bachelor's) degree in the field of Electrical and Electronic Engineering (E.E.E) at the department of Electrical and Electronic Engineering (E.E.E) at the university. Fast forward to the first (harmattan) semester holiday period for that academic session, during which a special training session (sought of like a bootcamp) was organised for the students. At this time, I was able to buy my very first laptop computer (technically, my parents bought it for me, but that's not a problem ... right?) at a reasonable price of #37,000.00 ($102.41 at the time), It was a really "low level" (hahaha... Get it?) system that had a working R.A.M of 2GB, 126GB of space on the hard disk (HDD) and was using an intel celeron processor (~1.7GHz). It goes without saying, that this system was not going to cut it when it came to developing android applications using the Android Studio IDE (Integrated Development Environment) and the Java programming language, both of which require a lot more RAM and faster processing speed (~2.3GHz and above) to work and which were the technologies I decided to learn at the program (I found it more appealing than web based technologies). But I didn't know this at the time (Ignorance !!!), so I signed up for the training and "with a smile" proceeded to have one of the most frustrating training sessions ever. The very first program we were supposed to write (I couldn't participate due to the fact that my laptop could not even open the Android Studio IDE not to talk of write code in that IDE) at the training went something like:

import java.util.Scanner;

public class Hello{
    public static void main(String[] args){
         Scanner input = new Scanner(System.in);

         System.out.print("Enter Name: ");
         String name = input.nextLine();
         System.out.printf("Hello, %s\n", name);
    }
}

So, It goes without saying, that I came out of that training with less confidence than I had when I signed up for the program, less knowledge than the average attendee (most of whom were a year or two ahead of me in their studies) and with a lot of hatred for java.

C++ To The Rescue ?

Despite the fact that I got "flogged" by java on my very first attempt, and regardless of the fact that I was beginning to wonder if programming was actually something I wanted to get into, I decided to forge ahead and learn how to program (on my own), back then I thought that all I had to do was get the right book that would supply me with the right amount of information and which came with a comprehensive list of case studies to make me feel ready to conquer any programming challenge (I never found this book). Initially, I started out learning the C programming language but after a lengthy conversation with a friend who was a developer, I decided to transition to C++ (Oh yes... C++). I finished the first book, solving through all the exercises in the book that I thought were sufficiently difficult and completing each one of them. But in my mind, the knowledge I got from the book was not sufficient (in all fairness, I like to read books, I felt that the book was not comprehensive enough. ), So I went through various books trying to learn (memorise) C++. After six months of very little practical progress (frustration), I decided to try out game development. At first, I wanted to make the games from raw C++ code (I'm a proud purist after all), but there were not many educational materials on how to do that (with the existing ones making a lot of incorrect assumptions about my level of expertise), then I considered using a game engine like Unreal or Unity, but the minimum system hardware requirements for these game engines were beyond what my laptop could handle (Crappy old thing), so I decided to try out web development (after all I had done to avoid having to do this).

Let's Make A Webpage Baby

My decision to pivot to web development was based on the fact that there was another training session to be organised during the holiday period (Hurray, another holiday in school, what a life...). So, I signed up for this training. Unlike the previous one though, during this particular training, I was an active participant, I enjoyed the session on HTML, I was able to flow with the sessions on CSS and I found javascript remarkably simple because of my involvement with C++ (In addition, I met a cute and funny girl during the period, so I had enough incentive to look smart). But, when we got to the part that involved sending (or rather "pushing") our code to github, I discovered that my laptop could not access the internet because the WIFI card, that is supposed to come with every laptop, was removed from mine before it was sold to me (Nigerian traders eh! ... good God !!!). When the training came to an end, I didn't want to pursue web development any further and the "damn" laptop was not able to do anything else easily. So, I kept "scraping the floor" with C++ (whatever I was typing as C++ at the time), until good fortune (or at least better odds) met me.

Fate Decides To Help A Soul

One day, whilst trying to debug a piece of C++ code I was working on, my laptop went off and despite all my efforts to get it back up and running, it just wouldn't turn back on(Good riddance !). Luckily for me, I was able to use this as an excuse to get my father to spend #63,500 ($176.36 in 2019) to get my second laptop computer (an Elitebook 8470p) which came with a working R.A.M of 8GB (actually 4GB, I pimped it up), 320GB of hard disk (HDD) and worked with an intel core i5 processor (~2.5GHz). Needless to say, I was happy with this new system, I was finally able to try out game development (Right?)

Wrong! Considering all the difficulties I encountered in making a game from raw C++ code only, I decided to try out a game engine. This decision coincided with a strike action organised by the Academic Staff Union of Universities (A.S.U.U) in Nigeria. Another major thing that made this period special, was COVID-19. I knew that we would not be coming back to school anytime soon, so I decided to use the period to learn game development, I chose the Unreal game engine (without doing my research on the hardware requirements) and after spending two complete days trying to install the engine (internet connectivity in Nigeria can be hell), I started using the engine, only to have my laptop crash and lose all the data on that hard disk (including the game engine) and having to restart again from scratch, which I could not do , due to the cost of data (W.T.F?). This experience seriously unnerved me and pushed me into a depression and when coupled with the many things people were saying about COVID-19 and the end of the world as we know it (I don't wanna go into details), I only got worse, I began to jump from one programming language to the other (just for fun), sleep through some days, fall sick a lot, avoid being around other people (I began to hate the sight of other human beings... How terrible). Finally, the holiday came to an end and with it the depression. I came back to school, made some new developer friends (a lot of them), discussed with them, shared my story, joined a few developer-friendly groups and began learning android development and in the space of a month, I had made my first application (A flashlight app ...at least, It's something) and a few weeks after that, I had made two more apps. Currently, I'm learning flutter and dart and building a lot of "Dummy" apps.

Conclusion

In hindsight, I understand that I could have done a few things better and I would have had a much smoother journey in tech had I understood the following:

  • First of all, It is always important in any field of life to have a clear idea of where you would like to go, the same truth applies to software development and tech in general. If you are just starting out, I would recommend that you take some time to think about an application or project that you would like to spend time working on and then use this as a guide on what you should learn and what you should not try to learn. If you cannot think of a project, then try whatever is easiest to learn and build from there. Do not be aimless.

  • Secondly, no man is an island. Do your best to attend developer conferences and meetups around you and most importantly, try to become friends with other developers, especially with those doing what you are doing. Bring your problems to other people, do not try to solve everything yourself.

  • Leverage platforms that simplify or at least streamline your work. Do not try to build everything from scratch. Frameworks exist for a reason. Leverage them.

  • Finally, be flexible and never give up. Always try to see how you can make your circumstances serve your ends. Learn to see only the positives in the situation, do not give in to negative thoughts. Success is a product of the mind. I repeat, Do Not Give Up !!!

Anyway, on the positive side, maybe I am now a full-stack developer (hahahaha... Get it? Don't tell me you didn't get that !!!)

Thanks for reading this very long piece (I just couldn't help it). So, that's pretty much how I got into tech. If you are a developer, I'm curious to know, what challenges did you face getting into tech? and what would you have done differently if you were me?