In 2017, I became a Programmer. Here is how it happened

Photo by Kevin on Unsplash

I work as a Product Specialist for one of Africa’s fastest growing payment company, Paystack. In the past year, I have created payment plugins for several e-commerce platforms using our API as well as pushed updates to existing plugins. I have also, along with my colleague, created a native app for one of Africa’s largest telecoms service as well as pushed a few internal projects.

Yet, I have for the past years been unsure if I was actually a programmer or not. As there is no clear distinction to when one becomes a programmer, I was for a long while not sure if I was good enough to be called one. To be on the safe side, I used to avoid defining myself as a programmer.

But what makes one a programmer? I could build static sites using HTML and CSS but those are not even programming languages. They are markup languages, so I didn’t feel it was right to tag myself a “programmer” yet.

But then again, I learnt C++ while undergoing my Computer Engineering degree, doesn’t that count? I thought about it and I knew that that was bullshit and didn’t count either. We were taught C++ for a few weeks in 300 Level and barely brushed the surface.

We knew how to do the likes of conditional statements and other basic functions but that was it. To me, it didn’t and shouldn’t count for knowledge of the language. If you dropped me in a file of C++ code right now, I wouldn’t be able to debug my way out of it. And claiming I am a programmer because I was in a C++ class will be a scam.

At some point, I decided to learn programming proper and I signed up on a couple of sites like Treehouse, and Udacity and took some courses. I followed the tutorials and did the projects but felt like I was being spoon fed and didn’t think I could do any of these things on my own. I didn’t like the method of learning and to me, I wasn’t learning much.

Yes, I could now understand syntax and Google my way through minor problems but still felt like I couldn’t define myself as a programmer yet. I went on and took Codecademy tracks in Ruby, Python and Javascript and completed most of them. I was also a faithful on HackerRank trying out beginner challenges in those three languages and Java. At this point, I knew I knew something but was still hesitant to call myself a programmer. I wasn’t even sure yet if I wanted to be a mobile applications developer, frontend, or backend developer.

After spending some months at MEST last year, interacting with my colleagues and teaching fellows, I got some more clarity into what I wanted to achieve and how I could define it.

I decided that I could call myself a programmer when I have these:

  • Understand the syntax of a programming language.
  • Able to apply syntax to solve theoretical exercises (think Fizz buzz type exercises to more complicated ones).
  • Build a mini project using the plain/vanilla version of a language i.e. without help of a library/framework.
  • Understand a major library/framework built of any programming language.
  • Build a real life project using aforementioned framework.

I didn’t write these requirements out but they were in my subconscious and I tailored my actions accordingly.

How I Achieved This

Understanding Syntax

I used Codecademy a lot when I first started pursuing my goals actively. It was really easy to go through and it helped in understanding the syntax of the first languages I was studying.

Eventually, I decided to focus on Javascript and a resource that was more challenging. It was at this point I discovered freeCodeCamp, late last year. The exercises come in bite sized chunks and they let you do most of the thinking after they have shown you the way.

Applying Syntax

This is what I believe programming is about— thinking like a programmer. A concept my Technology fellow at MEST, Yaw Boakye harped about when he started us out on Introduction to Technology. Rather than teach us syntax, he gave us difficult problems that will require thinking on our part and employ the use of concepts we have learnt so far, to solve.

For this, I used HackerRank a lot at first. This is a site where you are given challenges in your language of choice and you figure out solutions to them. I enjoyed solving those challenges. After the first few problems, I couldn’t solve much else due to the sheer difficulty of the challenges.

I spoke to another Technology Fellow about this, my friend Jerry Yang and he assured me it was okay if I couldn’t solve those yet. HackerRank problems can be really complex and while nice to be able to solve those, you can take your time as a beginner as those problems are usually so advanced you wouldn’t come across them.

At this point, freeCodeCamp came through for me again. Their exercises are very practical and gave me a lot of tough time but were doable for my level and very practical. I spent hours everyday solving those and I thoroughly enjoyed them.

NB: Here are some challenges I worked on within the first few months of starting

Building a Project In Vanilla Code

I probably sound like a broken record by now, but in this instance, freeCodeCamp really helped as well. After every level in freeCodeCamp, campers are given projects to execute. These projects have a few specifications, links to concepts you will need to apply and a sample code.

These projects involve concepts covered in previous exercises as well as some not covered. With this, I taught myself how to make API requests using XMLHttpRequests. Using functions to separate tasks in an application and so many things that might seem mundane now but were not things I understood back then.

A random quote widget. More projects here

Learning A Framework

By now it is clear that my focus has been Javascript-heavy. As such when I wanted to pick a framework to learn, I didn’t look much farther than the most popular Javascript framework — React.

My reasons were:

  • It had the most vibrant community in the Javascript community from my point of view. Articles on freeCodeCamp, discussion with my friends at MEST (thank you, Oluwole Oyekanmi) and the sheer number of tools built around this framework influenced my decision greatly.
  • React Native. I always wanted to build mobile applications but I found Java/Android difficult. I was however still considering developing for iOS after conquering my frontend demons. With React Native however, there was an opportunity to build actual native mobile applications using (mostly) Javascript and this sold me in a way no other framework could.

I didn’t find learning React as easy as learning vanilla Javascript though. I pored over the documentation, and tried the customary to-do list app projects but it still felt a little overwhelming.

Unfortunately, freeCodeCamp’s track for React was not out yet and most of the seemingly good courses were paid ones. I kept pushing however and eventually stumbled on a beta version of freeCodeCamp’s React track which helped some. After a while, I understood the concepts of React components, props, and states in React.

It also helped that one of my friends, Tony Kharioki is a React buff. We teamed up for our newco project (MEST’s version of a final year project which is eligible for funding after it is pitched on Graduation Day) called Chowbase which was built with React. Tony was patient enough to hold my hand and provide guidance through the project though handling the bulk of the engineering work while I focused on design.

Real Life Project

Left to my own devices, I would have preferred to work on a side project to apply my skills in a real life situation with real users. Unfortunately, or rather fortunately, Paystack happened.

I was hired as a Product Specialist whose job was to help developers trying to integrate Paystack into their products. While I was confident of my skill, I had some imposter syndrome. Nonetheless, I put work in and then some more to get where I should be.

My first real test was an Android app built for a telco which integrates Paystack. I was not going to mess with Java/Android so I delved into React Native instead and while it was a frustrating it was even more rewarding. With help from my teammates, Onyekachi (providing divine guidance) and IK (handling the backend), I eventually built an app I can look at with pride. I can’t wait for when it is shipped and people start using it (scared too, but whatever).

While I am still taking baby steps, I am a programmer now. The steps I took in achieving my aim, will not be the same for everyone. Most people’s path or method of learning will be different. It can, however, serve as a guide for one starting out who hasn’t figured how to proceed yet. Even now, I find that when I am learning a new language, I don’t have to go through all these steps — I sometimes dive in and do the work I aim to do.

This is my story of how I became a programmer.