cover image

Learning by doing in Open Source: Ifeora Patrick

Share on:

My name is Ifeora Okechukwu Patrick. I am a product-led software engineer of 7+ years. I am a bit of a gadget freak and I love to listen to music and play video games. I have helped build lots of projects and tools in my career as a software engineer.

My childhood wasn't particularly eventful, you could even say it was a bit boring (😅). I grew up with strict parents and was the only child for the first 15 years of my life. Early on, I developed a highly structured schedule and daily routine, which instilled in me a strong sense of organization and discipline. My dad consistently urged me to surpass my peers. I tended to be introverted and quite shy, spending much of my time playing video games, often by myself. It wasn't until I was 17 that I began working with computers.

Today I work primarily on the web building software for users. I have worked for multiple startups like MobileForms (now CrowdForce) and Duplo as well as software shops like Deimos and Modus Create. I have learnt a lot and shipped a lot in that time. It’s been an awesome ride for me doing what I enjoy.

Coding accidents do happen

I started coding by accident. I wasn’t planning at any stage in my teenage years of being a programmer (I wanted to study medicine 🙂). When I was 16 years of age, I was introduced to it by my maternal Uncle who was a Microsoft VBA nerd at the time. I stumbled into it actually. Shortly after learning what you could do with the knowledge of creating software through coding, I got textbooks and started learning and practicing at cyber cáfes utilizing overnight browsing.

When I turned 17, my dad bought a desktop computer for the house which I used often. In 2008, I got admission to a private university to study computer engineering and the rest they say is history.

Enterpreneurship

In May 2018 and August 2019, I ventured briefly into the world of startups and entrepreneurship with the launch of Saavy By Synergixe; an edtech startup that specializes in selling a subscription license for a SCORM 1.2 courseware player to other edtech platform that play digital courses to users and collect information and then Stitch; a fashion-tech startup that provided digital record-keeping of customer data (e.g. body measurements and orders) as well as taking body measurements physically without a measuring tape using 2 photos and computer vision respectively.

I ran Saavy By Synergixe for about 1+ year without any traction before shutting it down - maybe it was too early for its time. I ran Stitch for 1 month only until I ran out of money (😂) and shut it down as well. Besides, the whole idea (Stitch) of extracting body measurements from 2 photos using “cheap photogrammetry” and computer vision on a smartphone was more capital intensive than I had anticipated. So, after the money I had ran out, I abandoned it and went back to paid employment. Currently, I am on a sabbatical of 8 months after which I will be back to paid employment.

Journey into Open Source

I first started in 2014 when I tried to contribute to an open-source: ded/scriptjs . I even made a PR that was never merged till date (😁). I sent that PR because I wanted to suggest something to the maintainer of the project. I knew nothing about open source specifically at that moment. In fact, I never knew that the more polite and appropriate way to contribute was to create an issue and then discuss my suggestion with the maintainer prior to creating a PR.

I started learning about open source a year later and got to finally realize that jQuery was an open source project after 4 years of knowing of its’ existence 😅! So, in summary, by accident, I introduced myself to open source.

Learning by trials

It was hard to get any educative material on open source like you do now. To learn more, you had to sift through unofficial sources like stack overflow answers and the comment section on popular blog posts to get any decent information on OSS. Secondly, you had to kind of feel your way through the process of contribution. All you had was a code-of-conduct which basically says “you are free to contribute but you have to be respectful of others…”. There was no one to hold your hand and guide you through it. In fact, for me, I learnt mostly by many trials.

The only thing I remembered that had a laid down step-by-step guide was creating an issue on a repo. On some projects, what helped was that the authors/maintainers were quite upfront about the specifics of contributions they were willing to entertain and delineated them in the README.

On building Open source Projects

Right now, as a maintainer, I am building 4 open source projects actively (2 of them have been released namely: URISanity, react-busser and as contributor, I am presently looking to contribute to danfojs.

All the open source project's I have built were my own way of solving my problems, and also getting feedback on what other people thought about it. Beyond that, I also wanted to showcase to the world what Nigerian software engineers like myself were capable of.

You have to learn about licenses; why and when to use each. You have to be cautious about releasing breaking changes, especially when you don't mean to. There's the need for semantic versioning and all that. You have to have a CHANGE-LOG so that your users know what's in or what's not. You have to define a roadmap for your project so you don't end up accepting all manner of PR/feature suggestions that could make the project hardly usable in the future. As a contributor, you have to be aware of the project's roadmap so you can tailor your contributions accordingly.

For some reason, as I have observed with mild dismay, African software engineers aren't regarded as people who can build things and ideas from scratch. We are mostly seen as assemblers/couplers (people who build stuff by coupling existing OSS libraries and tech together without adding much originality of our own), and I wanted to help dispel this narrative.

Open Source is Open

I have never been discriminated against or badly treated because I am a software engineer from Africa trying to contribute or work on an open source project. Except for this one time that I was dismissed by the creator of Laravel on a PR I thought was super useful 😂.

My involvement in open source is driven by a sense of community. I like that open source is that medium through which the power of community effort benefits every member and even non-members (people who don’t want to contribute). I let my open-source work speak for itself – the stars and PR contributions do the talking. No elaborate stories.

My last words

My advice to software developers is to over-learn the fundamentals and generalize long before you specialize. Finally, don't be afraid to get close to people who make you feel like you don't know anything. As long as they aren't rude or condescending, you will learn a lot from them.

I can also testify to the benefits of contributing to open source. I am able to read people's code better than when I started in software/programming. I am better at code reviews than I was before. Open source has also gotten me jobs too and networks. It’s amazing!

I believe that one shouldn’t do open source just for the sake of it or solely to get a job. It should be something you engage in because you want to learn and grow (at least that has been my attitude towards it).

I believe that fintech mini-payments done in an incentive-driven way might be the solution to open source sustainability. I think a lot of people won’t be moved to give/donate money to open source projects if they aren’t getting even the slightest immediate upside apart from downloading and using the project. If you ask someone to donate $50/$100 all at once monthly for a year, they might not budge. But, if you tell them to donate $1/$2, 500 times a year, they might be more inclined.

The future might have less javascript

I am excited about the shift that is currently happening in tech where bogus and complex solutions are being dumped for less bogus, well designed and simple solutions. JavaScript is slowly but surely being kicked out of the server-side (as it should) in favour of more performant, simpler single binary, server-native languages like Go and Rust. On the frontend, HTMX/Remix is slowly winning over more needlessly complex solutions like NextJS. Lastly, people are beginning to rethink serverless on a benefit/cost basis.

More stories

made in nigeria

A curation of awesome open source tools and projects built by Nigerian developers for the rest of the world.

githubtwitter

© 2023 Made in Nigeria