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.
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
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.
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.
Learning A Framework
My reasons were:
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.