Skip to content

Instantly share code, notes, and snippets.

@prondubuisi
Last active March 12, 2024 20:29
Show Gist options
  • Save prondubuisi/90c3017bab29aa66ed347239521aab10 to your computer and use it in GitHub Desktop.
Save prondubuisi/90c3017bab29aa66ed347239521aab10 to your computer and use it in GitHub Desktop.
Questions and Answers for IxDF Work Essay

------ 1. ------ Please describe an interest, favorite activity, or hobby of yours. It could be anything: just something you enjoy doing. For this particular answer, please only write up to 60 words and do it in a way that captivates your readers (us!).

Over the last quarter, I have interacted with many techies as part of my participation in developer events. These interactions have been enlightening, as I can relate to newbies' struggles to land their first roles. My favorite pastime is helping techies position themselves for roles and offering insights from my experience regarding climbing the ladder with their careers.

------ 2. ------ What is most important to you when you look for a new job? Please be completely honest and transparent about your situation and season of life; we’re not looking for “the right answer”. The more you tell us, the better we can align.

The people. Software engineering is mostly about figuring stuff out, sometimes sooner, sometimes later. If you work with friendly, helpful, and empathetic teammates, there is no technical problem you can't solve.

------ 3. ------ Please tell us how you learn new things and develop yourself? We’re curious!

I subscribe to and follow industry-leading newsletters, blogs, veterans, projects, and technologies across social and code platforms like Github, Twitter, LinkedIn, Substack, YouTube, etc. This way, I am always informed about industry trends and best practices.

When I find a fascinating technology topic, I read the source code if the technology is open source. I also read white papers, use cases, and documentation about the technology. Since I mostly learn by building, I build side projects to grasp the technology.

------ 4. ------ How did you hear about this open position?

I heard about the position by going through your careers page.

------ 5. ------ Show us some examples of concrete work you’re proud of having done yourself. Please tell us why you are proud of what you sent us. Please be as specific as possible.

I have done lots of software engineering work that I consider concrete. One such work was leading an engineering team to build a payment gateway from scratch. Why would you build a payment gateway from scratch? Our team(payments) had experience integrating bank and third-party APIs. After many years, we gathered enough business intelligence to build our gateway from scratch to meet our custom and clients' needs.

The payment Engineering team worked on this project with collaboration from product managers and other stakeholders. On completion, our gateway was to provide API services to allow for the accessible collection and disbursement of funds across different countries and channels.

As lead for the payment Engineering team, I designed the gateway service with help from my teammates. The first challenge for this project was authentication. Our clients could create teammates on their accounts with different access levels. Our clients also require long-lasting access to our services to complete transactions programmatically. We solved this problem by implementing both session and bearer token authentication.

We had to build our payment service using a pipeline so that when one payment provider failed, another provider within the same domain(country) could pick it up to ensure the payment was finally successful.

We used an SQL database because we needed table relationships and data normalization. One important table was the payment history table, which allowed us to track how payments interacted with our different providers. The payment history relationship table particularly helped us in resolving pending transactions.

Since we had many credentials that hardly changed, it did not make sense to frequently visit the database. We cached our encrypted credentials uniquely across domains for easy use.

We also worked on a webhook service so our clients can quickly get a final payment status. Our webhook involved retries for cases where we couldn't reach our client the first time.

Regarding coding paradigms, we depended heavily on domain-driven design, which helped us match code modules to various business models, i.e., bank transfer, mobile money, virtual cards, virtual accounts, etc. Contracts also helped us ensure that while several developers worked on integrating various payment providers, we all produced code that satisfied our generic gateway requirements.

It took a lot of work and iteration, but we shipped a payment gateway that supported thousands of transactions daily. While leading this project, I learned a lot about collaboration, prioritization, and scoping.

I am particularly proud of this work, as it helped our company stay in business despite local regulators' clampdown. Our parent company spurned the end product of our work into a separate company, Vaunt.

------ 6. ------ Can you give a concrete example of a recent situation where you “took ownership” of a task/project/etc at work and made something truly positive happen? How do you define “taking ownership” of your work?

My team recently received ownership of a new project, Raventrack, from a technical architect within the company(Videoslots). This project could solve the pains of our unreliable affiliate payments and management system. Since the team was busy with many priorities, my team members needed help to follow the project's development. I took ownership of the project by volunteering to QA project changes while our architect handled the development. When the architect handed over the project to my team, I worked on integrating the project as part of our docker setup for easy local development. I also handled a knowledge transfer session for my teammates. We have a better affiliate management system, and my team can easily contribute to the project.

Ownership is taking end-to-end responsibility for outcomes regarding a project or task.

------ 7. ------ What are the key skills you (would) bring to an asynchronous and remote work environment? What key skills do you feel you need to improve for you to fully thrive in such an environment?

Working remotely as an individual contributor and technical team lead for the past six years, I understand the importance of ownership, accountability, intrinsic motivation, clear communication, documentation, and empathy; I also embody these values.

------ 8. ------ Which season of life are you currently in and what are your career goals? For example, are you in a season of life where you work long hours to learn as much as possible? Or in a season where you prioritize work-life balance because you’ve already gained substantial experience? The more transparency you give us, the better we can align and create common goals for your career.

I am currently looking to do impactful work with great teammates who are passionate about what they do and helpful. I also want to work in an environment where my work is appreciated.

------ 9. ------ If you were able to go 5-7 years into the past and change something in your career (or even life), what would you do? (besides buying some bitcoins)

When I look at the past, it is with fond memories. I am thankful for the things that worked and those that did not. I don't want to change anything from my past. We are who and what we are because of the total of our good and bad experiences. I look forward to living in the present and future.

------ 10. ------ Could you please send us a sample of some production code you have written and are particularly proud of or find intriguing? Please also explain why you are proud of this code or why you find it interesting. I understand that you are likely under an NDA for most of your code, so it doesn't need to be executable - just a few snippets will suffice.

The bulk messaging feature I implemented for Edenlife is intriguing because it saved the customer support team thousands of work hours. Our customer support staff messaged thousands of customers daily, with one support staff responsible for providing a concierge experience for tens of customers. Our native messaging provider supports only single messages, so sending updates and generic messages to individual customers was painful. We needed a way to send messages to all the customers supported by a single agent at once. With a simple queue, API throttling and database tables, I delivered a feature that allowed for bulk messaging and notifications on delivered and failed messages. My company staff acknowledged the bulk messaging feature as the best internal feature for the 2022 product development year. The support staff preferred the bulk messaging feature for its ease of use and reliability.

Here is the snippet for the Controller Class.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment