Product development at a blockchain firm is never straightforward; requirements change, technical hurdles emerge, and unpredictability becomes your friend.
No matter what industry you’re in, product development boils down to one thing: finding the best, simplest, and most feasible solution to a problem. At OMG Network, we adopt the same philosophy. But because we work on the foundational layer of financial software, moving too fast can have dire consequences for end-users.
For this reason, we adopt an 8-week engineering cycle; not only does it give us enough time to plan, but to test and pay off technical debt. With The Great Reddit Scaling Bake-Off results set to be announced (hopefully soon), I thought I’d illustrate how we used our 8-week cycle to build the Reddit Community Points Engine (CPE)!
It is best to use the first few days to understand the requirements set out by the client fully. In the case of The Great Reddit Scaling Bake-Off, the demands and guidelines were well laid out. However, we still took our time reading through the post, figuring out the root issue, and envisioning what Reddit wanted from the submission.
In the second half of the week, we set priorities. We did this by separating the requirements into must-have(s) and nice-to-have(s). Given the limited time and resources available, an unlimited scope often spells disaster for the engineering team. In this instance, we opted to prioritize our time to ensure we can deliver tangible value to Reddit’s end-users.
Week 2 is when we laid out the design and blueprint for our project by involving all stakeholders — from designers and engineers to end-users. Once we’ve gathered enough feedback, we commit to Product and Engineering tasks.
I find that laying our tasks as bullet points gives everyone a clear understanding of the upcoming workload and the project’s feasibility. We use sequence diagrams, swim lanes, and early mockups to communicate complex ideas like:
- How are the clients supposed to talk to our service?
- How will UTXO management work?
- How many concurrent users do we expect to have?
- How do we ensure our user experience is fluid?
The goal with product development in a blockchain firm is to ensure we reduce information asymmetry across all team members, which is vital to the delivery of the end-product. Once we’re all on the same page, we can move ahead and build the product.
Weeks 3 and 4:
The next step here is to de-risk our design and get quick prototypes out the door. For this feature cycle, the product is a user-facing application, so we aimed to get a middle to high-level fidelity design mockup. Internally, we wanted everyone to see the product the same way an end-user would.
At the same time, the engineering team investigates the feasibility of the solution to de-risk any technical hurdles we may encounter in the future.
For example, we ensured that:
- Our Community Points Engine application can integrate with Metamask to sign transactions.
- An end-to-end complex fee-relayed transaction is possible.
By the end of Week 4, we have a rough application that works end-to-end for a single user in our transaction flow. This small experiment affirms that we can complete the product with the time, resources, and design at hand.
Weeks 5 and 6:
Once we have an application that works locally, the next step is to deploy it into a shared testing environment. Doing so allows internal stakeholders to interact with the solution and helps us spot surface bugs and issues, for which we can implement fixes and write additional tests for.
We then set up our Continuous Integration infrastructure, allowing engineers to get early feedback on the code they push.
From a product and usability point of view, interaction with a live application differs significantly from a demo or wireframe Proof-of-Concept. We can quickly understand the issues users may encounter while interacting with a real application and suggest quality improvements to the design.
For example, we found that our Reddit Community Points Extension needed to better detect a Metamask Wallet. And after a few rounds of internal testing, feedback, and recommendations, Community Points Engine was ready to deploy to production!
These two weeks were by far the busiest because of the intense cross-team collaboration we had to pull-off. We wanted to give ourselves the best chance in this competition, so we also worked on documentation, launch marketing and comms, support channel setup, and more.
As a positive side effect of great design scope in weeks 1 and 2, we even had time to implement an extra feature: flair purchase and redemption!
Weeks 7 and 8:
We usually take the last two weeks to clean up our codebase so we can refactor and pay off the technical debt we’ve accrued over the weeks. For the Reddit Community Points Engine, we had the opportunity to incorporate feedback from end-users since the solution is a 100% user-facing application. With everything wrapped up, we published the application to the Chrome Extension Store.
Mission Accomplished: Community Points Engine
We hope this blog post outlined what the product development process looks like at a blockchain firm. We found the Reddit Community Points Engine to be a good showcase of the process since the requirements were public, and it had to be built to be user-facing.
Of course, not every product and engineering cycle is the same. Sometimes the requirements take weeks to gather, especially when developing network features and ensuring security. Timeline and scope may look different than what is shown here.
In the end, we believe that effective product development at a blockchain firm is about agility and preparation. We want to map a process and build a product that can solve the problem at hand. And finally, just like the product itself, the methods and tools are highly iterative and subject to constant change.
Pong is very passionately exploring the cutting edge of decentralized technologies, web3 ecosystem, distributed ledger and blockchain, touching economics, cryptography and software in a way that solves real-world challenges and generates impact.Kittikawin (Pong) Cheecharern, Technical Product Manager, OMG Network