Showing posts with label career. Show all posts
Showing posts with label career. Show all posts

9 December 2019

Hafiz Adewuyi

By hook or by crook, you will achieve this goal on your own


Just a minute ago, while folding the clothes from my weekend laundry, I found myself thinking about an upcoming Christmas party being organized by a couple of fellow Digital Explorers who live together in a big Kaunas city center flat, just five minutes drive away from mine.

I received communication from the organizers this evening that each of the 11 (or 12 😪) Digital Explorers currently in Lithuania will be contributing 15 Euros to fund the party. It's not a lot of money, but also I would not call it a pittance. In fact, we had one or two explorers protesting that the price tag for the party was a little steep.

Anyway, my idle mind lapsed into gear F (frugal) mode and its first quest was to justify my parting with 15 Euros for a plate of Jollof rice and fried meat. Not much to my surprise, my mind's answer at the end of that quest was that a secondary reward for me would be to have a granular view into how the funds for the party will be spent. 

Not because I suspect that the funds (which as a whole, cannot solve any significant financial problem for any Digital explorer) will be misappropriated, but because standing in one corner of my living room tonight, my mind had already created a beautiful picture of an article through which I open-source Christmas house-party planning information. I dreamed of how majestic the article would be if I could make it just as juicy (detailed) as this beautiful creation from the stables of Paystack where they shared their journey of setting up billboards in Lagos, Nigeria for the first time.

The next thing I thought was, "yes, before I send my contribution for that party, I will demand that the organizers ensure that they keep all the receipts and take out the time to share all line items with the rest of us once the budget is closed". After a few seconds though, I spotted the folly of this idea. It isn't hard for me to imagine how approaching my goal this way can easily lead to conflict when one or two of the organizers feels disrespected by concluding that the reason for my request is that I suspect that funds might be misappropriated. 

This one time, I feel lucky to be an over-thinker (I was last reminded of this part of my nature last Thursday by my date at the Ten Walls and the Lithuanian State Symphony Orchestra concert in Zalgiris arena, Kaunas). Apart from feeling insulted, I understand that it can be difficult to remain meticulous when you have a lot to handle, which would definitely be the case for the party's organizers the moment they start to shop for the party. I was not optimistic that any of the organizers would be stoked to take on the 'pointless' responsibility of storing up receipts and extracting line items from each of them. After all, we are all contributing the same amount of money.

Again, without prompting me, my mind switched to gear H (humane) and quickly revealed to me that there is a natural and guaranteed conflict-free way for me to achieve my goal of having bird's eye view of the financial planning of this party. 

"Easy, just let them know you would like to assist with the planning of the party. That way, you can have access to the receipts without ruffling any feathers. Win-win. Also, new experience as you have never planned a party in your life and you definitely need to take more social initiatives in this dreary life of yours".

PROBLEM SOLVED

---

Finally, my mind went to gear N (nostalgia), taking me back to one hot Lagos afternoon in 2015. At the time, I was a software developer at Fidelity Bank head office and I was having a chat with Nnanna (my manager) in his office. It was about some work milestone which I was struggling to reach because I was having trouble enlisting the necessary help of another team in the bank (probably the really difficult to work with systems administration team).

I was there to have him intervene on the matter as an oga-at-the-top, as I had faced a bit of resistance in trying to get the team to grant me my wish. However, he insisted that the responsibility of getting the systems admin. team to grant me my request falls solely on me this time.

The phrase which stays with me from that interaction with Nnanna and often replays in my head when I ponder how I handle many a difficult situation in my life these days is: 

"Whether it is that you will go and fight with them or whether you want to make friends with them to achieve this goal, it is entirely up to you. All I know is that you must get this done and I will not step in to help you".

For that particular difficult situation at my work, even though I can't remember the specific details or even how the issue was finally resolved, I know instinctively that I chose to take the friendly, rather than aggressive approach in getting the systems admin. team to help me out. Most likely because I was sure that even if by some sheer stroke of luck (I had zero authority over anyone in systems admin. and also did not consider myself capable of intimidating anyone), I had managed to achieve my goal in a violent way, it was not a sustainable way to work. It would poison me as well as the victims (or perhaps, just me the perpetrator) without commensurate reward.

Looking back, I realize how a lot of my philosophy today is built strongly on that foundation of seeking first to solve problems amicably. Of being willing to risk having my plug take advantage of my appearing to be at their mercy, instead of demanding my well-deserved way to a desired goal. Of not coming to the table floating on a cloud of entitlement, even if as a matter of fact, I am entitled to receive a certain favor from a person.
Read More

12 January 2018

Hafiz Adewuyi

How I found my first new job in Lagos

Or how I moved from my first job to another company in Lagos.


I write this article in the hope of inspiring someone to start seeing themselves, not as a victim but as the orchestrator of their career. I've spoken to too many people who feel frustrated with their job and like they're at the mercy of their current employer. While I acknowledge that my current job situation is far from being the standard for success, I must mention that I can't remember the last time I felt that way. 

I've benefitted immensely from knowing that irrespective of my current situation, the power to steer my career in a positive direction lies mostly with me. It's my sole responsibility to keep my head high enough above water to make the best out of the situation.

That said, I encourage you to share it with your friends who you think might be able to benefit from the shift in perspective that I hope this piece will help bring about.

---

If I were to summarize this article into a 140-character tweet, it would be to

"Pick one important pain your current employer's business faces and own it!" 

For me, the important business pain at my first job was a particularly unstable software product. So grave was the instability of this software product that many of the clients using it were sending unpleasant emails daily and threating to dump it every chance they got.

I would say I got lucky with the part of seeking out an important business pain. In my case, the important business pain sought me out. Not because I was the best for the job but because I was the most available. This immensely buggy and dirty codebase was literally dumped in my laps. So, for me, it was either own it or go home. You love your family and you've decided you want to spend more time with them, my CEO would sometimes joke when talking about something that could get one fired at the company.

For the first few months of my inheriting this software solution, my life was hell. I barely had a grasp of what the solution was meant to do and knew absolutely nothing about how it works. Yet, I was the first and last port of call for clients when they had any issues. The clients being the 8 different huge organizations who had licensed the software.

Yes, during that period, I achieved some progress, however marginal it might have been. For most issues that were brought to my desk, I had to defer to a more experienced colleague, having them do most of the heavy lifting to fix it. Then I would finish up by merely delivering the work to the client.

At this point, I had yet to take ownership of this problem and it was clear for everyone to see. Service delivery was poor because I often had to wait for someone else to leave their main responsibility for significant amounts of time before I could complete any task.

TURNING POINT

I remember vividly like it was yesterday, the particular issue that marked the turning point in my experience at that first job. The software solution in question is a payment gateway system. Nigerian banks were my company's clients and the end users of the solution were the bank's business-owning customers who wanted to accept payments on their website (and the customers using their website).

This particular Friday, one of the last emails that came in from a bank was about one of their valuable clients whose developer was finding it hard to connect his website with the payment gateway. Prior to this time, my default response when posed with this problem was to refer the customer to the payment gateway integration document. At best, I'd send them some supporting sample code which I had inherited from a predecessor.

But this time, something was different. I can't remember what it was but there must have been some peculiarities which prompted me to approach the case with some novelty. For the first time ever, I zeroed my mind on seeing this bank's customer through their integration; till their website was accepting real payments from customers.

The following weekend, with no one putting pressure on me as usual, I digested the payment gateway integration guide for the first time since I'd inherited it months back. I read it from start to end, making sure to truly understand the purpose of every instruction in the document. Once I was done with that, I decided to practicalize what I'd just learned. This I did by creating a barebones HTML payment form and integrating it with the payment gateway.

Once I was done that same weekend, I sent the code for the HTML integration I had done to the troubled merchant's developer. This, my friend, turned out to be all the help which he needed to complete his own integration. Furthermore, the end product of that weekend's grinding (the HTML code) became a silver bullet for much of the rest of my career at the company. I would go on to share it countless times after with other people who were seeking to work with the payment gateway.

---

A  couple of months after resolving that revolutionary issue, I had gone from being scared of what turmoil the next email might throw my life into to having dull days when there were too few emails from my clients. The software solution was now for the most part, stable and delivering its promised value to my company's clients with only occasional hitches.

My role evolved from me weathering storms day-in, day-out to being confident enough to reach out to clients, inquiring about how I could make the software more useful for them. From that to me having enough time and will to pay back some technical debt which the solution had incurred in its worse days. In essence, the fulfilment and gratitude I received from investing myself in that first customer's success got me addicted to focusing on my employer's customers' delight.

After a little over two years at my first employer, I got an offer from two different companies at the same time. Each of these offers came by way of my company's partners whom I had encountered through my work. Without a doubt, these people were convinced they needed some of my problem-solving aptitudes in their organization. Right now, I think back to one particular person I worked with who proudly describes me to people as resourceful.

Prior to my receiving these offers, I had interviewed with about 10 other companies at different times, all with a unanimous response of NO. In light of that, I had all but given up on my potential for success as a career programmer when they came in. So much so that I had resigned from my first job and was preparing to pivot when I got these offers. Offers which I effectively already had even before the first interview.
Read More

24 September 2017

Hafiz Adewuyi

How I became a Software Developer in Nigeria

I feel like most developer stories I come across are about people who have had a passion for computers since from an early age and were fortunate to get into programming in their childhood or teenagehood. My story was not quite like that, so I thought I'd add my voice to the pool and maybe encourage someone out there to reconsider their ineligibility for this career path. I think my story is very far from typical. Here we go.

------------------------------------------------------------------------------

It's funny that even though I also got the opportunity to be exposed to computers before 10, you can say I was not curious enough of a kid to want to figure out what made this thing work. Instead, my curiosity led me in a direction that saw me doing other things like:

  • Playing PC games installed off of pirated CDs from computer village, e.g. Total Games 2000 (which had a massive set of tacky but fun 2D games) and Age of Mythology
  • Chatting with random people on Yahoo messenger and other online social websites that pre-date Facebook
  • Trying to understand myself and feelings and address my social anxiety by drowning in a sea of self-help articles

What the heck is programming?

Bolu. He was my friend and coursemate in UNILAG and I don't think I even had a concept of what programming was until that very first discussion on it with him in my first-year room at Shodeinde Hall in UNILAG.

I think I might have asked him what the heck this programming thing he was always on about, was. I remember him trying to explain the concept to me by asking me to think about algorithms in terms of how one would go about instructing someone else to make a cup of tea. Anyway, despite his best efforts, Bolu was unable to get me to understand programming enough to think it was something I should try my hands on right away.

My first encounter with code

While most people say their education in Nigeria was a waste of time, I can't. My Electrical-Electronics Engineering major required me to complete two different introductory courses to programming with C++; one in the second year, the other in the third year.

Each time before second-year when I discussed programming with Bolu, it was always with a dread that was waived with the thought: "we'll cross the bridge when we get to it". The general belief amongst my classmates was that programming was so rocket-sciency that it took Bolu's level of genius to tackle, so I couldn't really be bothered.

Of course, when the second year came around, I was (like 90+ percent of my colleagues) not in the least prepared for the introductory C++ course. To make matters worse, halfway through the semester, even though I attended lectures, I found myself not understanding concepts even as simple as variables and operators. I don't think I was paying much attention, perhaps, because of my defeatist mindset.

A few weeks before the first programming test, I must have gotten into panic mode and beckoned to Bolu my friend to come rescue me. He agreed and he came around to my room in Jaja Hall to walk me through the concept of functions (methods) in C++. I think we chose that concept because despite my best studying efforts, I couldn't grasp the concept and why we even needed them at all. To me, they just existed to make my life harder in the name of sophistication. Of course, I think way differently now.

Luckily for me, Bolu successfully demystified the concept of functions that fateful afternoon and you can say that from that point onwards, my life never remained the same.

Finding my passion for programming

After the session with Bolu on functions, I took it upon myself to write my first function in a practical scenario. The first program I ever started and completed all on my own (if my memory serves me correctly) was a C++ console application to compute a student's semester GPA, given his grade in each course and the weight of each course. While making the program, I created my very own first set of C++ functions and suddenly, it all finally made sense to me.

A programmer in the zone
When you finally understand the language of the computer

The beauty of achieving this milestone was that it not only helped me finally see how functions work. No. It also completely shattered my previously strongly-held defeatist stance towards programming. I finally was able to conceptualize the possibilities ahead if I could get a computer to help me out by writing simple instructions. This realization fired up my curiosity and from that moment on, I spent most of my spare time studying the programming textbook and trying out what I was learning, on my laptop.

Needless to say, I aced my first test and eventually came out tops in the class at semester end, both in the second and third year. Writing those programming exams made me feel exactly like my maths exams in high school used to. And funny enough, the feeling is similar to that which I get when playing addictive games on the PC. I'd say what is common between those two exams was how confident I was in my being able to tackle any question thrown at me and how much I actually enjoy the process of getting thrown a totally new question, reading and digesting it, then going ahead to apply my skills to find a solution. The flame of passion was ignited.

Way before the end of my third year, I had personally completed the C++ programming textbook cover-to-cover. This was the only course in my five years at the university where I had enough motivation and interest in the material to pre-study, let alone, cover an entire textbook way before the exam period. The first and only time my lectures felt like revision sessions.

I was well-renowned by my colleagues as one of the programming dons of the class, perhaps only second to Bolu the one who was born programming. I like to think that this respect formed part of my drive to do so well at it. In fact, I remember one troublesome classmate of mine expressing his contempt for me for being so confident on the day of the third year programming exams as to be studying for another course. Meanwhile, he and most other guys were busy rehearsing code they had crammed, hoping they would have the chance to regurgitate at the exam hall. I really never understood the idea of cramming code but somehow, people were able to make relatively good grades by taking that approach.

During my third year, I also applied my new found skills to create a C++ console application that was pretty challenging for my level. Looking back now, I think doing it might have helped me develop some debugging skills early on. The idea of the program was simple. It could display any number from one (1) to a billion in words. So, if you enter 5467 into the console, it prints out "Five thousand, four hundred and sixty-seven". That was my proudest creation ever and I was always eager to show it off to anyone who cared to listen.

Losing it

This is the saddest part of this article, and it honestly makes me wish I could go back in time. But as there's no need to cry over spilt beans, let's just go ahead to see what happened after what was arguably the best year of my undergraduate life.

The third-year course was the final programming course in my curriculum as an elect-elect student. So, even though I had a passion, I really didn't have anyone push me hard enough to keep developing my skills outside of coursework. Perhaps, I even felt like I had arrived and I wasn't looking for anything that would displace me from my programming throne. Hence, that marked the end of programming in my life as well. The figures-to-words conversion program was the last complete program I wrote as a student of UNILAG.

In my final year, I got a chance to reignite my passion as a participant in the MIT AITI programme. Unfortunately, I could not cope with combining the expectations of my AITI team with my final year coursework. To complete my final year project, I had the huge task of learning to program with C++ QT and I wasn't making good progress with that. I was stuck and was not learned in the science of getting unstuck. This is meant to be easy. I was the programming guru in the third year, why is this so hard for me? Maybe this programming thing is not my thing after all.

This made for a bad state of mind to try and learn yet another language (Java for Android, I think) to deliver on my responsibilities as a member of an AITI startup. After a few weeks into the program, I told my AITI teammates (two of whom went on to found now stellar Prepclass), tail between my legs, that I couldn't do this anymore. After all, in my mind, I was in school first to excel at my coursework before anything else.

I managed to get my final year project to a barely working state before it was time to submit it. But then, after that ordeal, I lost all of my premature love for programming. I hated anything that made me feel incompetent, oblivious of the concept of a learning curve and that it's normal to go through a steep phase to master any skill, even if the basics made you feel like a genius.

A second chance

Before the final semester wound up, Appzone came to UNILAG for a graduate-intern recruitment drive for engineering students. They conducted an aptitude test in which I performed well enough to make it to the interview stage.

The interviews didn't really go well, because as you can probably tell, I really wasn't that much use as a programmer, in terms of productivity. I told them about my brief romance with programming in the second and third years of my studies and how I was the don. However, I was not able to justify why I did not keep programming after those introductory courses ended. I knew that only a miracle would get me into Appzone at this point, considering the number of more experienced programmers (including Bolu) who were also interviewed.

Getting my first job

Towards the end of the final exam period at UNILAG, the first set of successful candidates were made an offer by Appzone. Unsurprisingly, I did not make the list. However, I think there was some speculation that there would be a subsequent list. I was hopeful that if there was any validity to that, my name would fall on the second list.

A few weeks after final exams, I finally got the best call of my life (at the time) from Maryam, a member of the Appzone HR team. She was calling to let me know I was successful; that I had made the second list! A few of my more experienced classmates (including Bolu) who were on the first list had declined the offer. Hence, some room was created which allowed Appzone to accept me and two additional classmates into the paid internship program. What luck!

I resumed at Appzone just one month after finishing my final exams in UNILAG. All intern programmers were required undergo a rigorous and dare I say,  effective training process. First, we were taken through a series of lectures by our experienced colleagues to get us up to speed on the Nigerian banking industry and how Appzone's business fits in there.

Sitting through lectures was the easy part. After the lecture season, each of us (interns) was tasked with single-handedly building two different software projects from the ground up. Each of the projects is a less-sophisticated version of some of the company's existing products. Upon completing both projects, the intern is reasonably expected to have gained enough programming skills and banking domain knowledge to go live (start real work).

During the project period, each intern is attached to an experienced colleague who will be their mentor and first point of call whenever they get stuck. I was attached to Emeka, an elect-elect graduate of UNILAG two years ahead of me. And he made sure I would report my project progress to him, once a day in the least. Without a doubt, this kept me on my toes.

Final thoughts

I don't think I would have been able to overcome the steep learning curve to becoming a market-ready programmer without all the controls and aid put in place at Appzone to help me get there. Big-ups to Appzone for helping me through that delicate stage of my career and giving me a chance to mess up on the job. Heck, for even helping me to 'choose' a career.

Who knows what I'd be doing today if I didn't get that offer by a slim chance. I didn't have any skills and I lacked the drive to develop one on my own. So, I, like most other Nigerian graduates, was ready to settle for the first taker, irrespective of how interested I was in the work. Oh, someone thinks I can be useful at something? Great! Take me whole.

Also, I've changed a lot in the five years since graduating from school. My exposure to the 'real world' has immensely shaped my view of life and I now have a beyond superficial drive to give the best work that I can and be the best me that I can. Every living moment, I'm thinking about how best I can spend my time and resources to improve my chances at being an unarguable success at what I do.
Read More