Key highlight: Participating in open-source projects are a great way to connect with experienced software developers and architects, from whom you can learn a lot from by engaging them as a proactive and enthusiastic apprentice.
Introduction
The pandemic completely disrupted the Philippines in March 2020, as the lockdowns began and people frightened in their homes worried about their family, their food, and their safety. Despite all of this uncertainty, I found myself tagging along with a ragtag band of geeks making our fight against Covid-19. The succeeding three months became the start of one of the most inspiring, amazing, and thrilling adventure of my late 20s as a senior-level software engineer.
This is the story of how I actively contributed to a national government project by developing technologies that keep essential workers (doctors, government officials, policemen and women) safe. In this wild adventure, I found 8 key lessons that unexpectedly helped drive my professional and career growth as a senior level software engineer.
Three months (and nearly a thousand commits later) I was surrounded by a community of spectacularly-talented and service-driven Filipinos (hat tip to DevCon Philippines and DCTx!) and I was immersed in a lot of complex and challenging work that enabled me to work hard and grow a lot.
What is RapidPass?
RapidPass is “a free website that helps in faster movement and access for front-liners and priority vehicles, ensuring the success of our country’s Enhanced Community Quarantine (ECQ)”.
As soon as we entered ECQ, which is the strictest lockdown that Filipinos had over the pandemic, the whole infrastructure of Metro Manila was in shambles. How do we securely make sure that people who should be at home are kept at home, and those allowed to go outside are properly authenticated and authorized? The problem was clear: how do we keep our doctors, government officials, policemen safe while we sort everything out?
Winston Damarillo, founder of DevCon.PH, organized his team to immediately get to work in response to this calamity. He organized zoom calls to rally people together, and soon we envisioned a three-part system (public website, private dashboard, and scanner devices) that would facilitate this transit pass registration and verification for Authorized Persons Outside of Residences (APOR). I chose to take part and contribute to the Backend team, building the API and other services that tied the whole system together.
This community, which was named DevCon Technology Experts (or DCTx), was composed of teams of engineers, lawyers, designers, project managers, government-relations officers, marketers, and social media managers. We spent our evenings in the middle of March to align our group, and then rapidly produced a proof-of-concept as early as April 3. This was roughly three weeks since the inception of the idea of RapidPass.
This was a beautiful sight to see- talented Filipinos, men and women, taking the initiative to contribute to our country AND to support our front-liners. It was inspiring. It was moving.
It was truly a war against COVID-19, and this was our battlefield.
Lesson 1: Having a clear, great calamity effectively marked a clear enemy that brought people together
The group that I worked with was composed of Filipinos and volunteers all around the world. There were different teams that were organically self-organizing with volunteers taking up responsibilities and leading different parts of the projects.
Me personally, I started by writing down the minutes of our daily evening zoom meetings. Then, I started coordinating with different people to make sure I understand what needs to be done carefully. Eventually, I began to code.
The tension was high in these calls, because a lot of things were uncertain- for our families and how life will be like with a global pandemic. Despite that, people with high locus of control focused on what they can contribute.
Two months later, I’m nearly a thousand commits in!
Professionally, I work as a full-stack software developer (building iOS and Android apps), but after observing the teams, it appeared to be that we’d need more developers on the Backend team. I decided to observe and learn from the more senior backend developers and follow their lead.
This experience was amazing sight to see- talented Filipinos, men and women, taking the initiative to contribute to our country AND to support our front-liners.
Lesson 2: Alignment on tech direction was time-expensive; fast decisions drove project success
Observing the small groups that were forming, I was drawn to the RapidPass API, which was started with a Spring Boot framework (in Java).
I thought to myself: Java? Well, I know Java, but I haven’t coded Java since I was in my Masters classes! Oh well. Let’s not push what’s comfortable to me and instead learn whatever I can.
At this time, I have usually been writing javascript and typescript code (both for frontend and backend). Although a little uncomfortable, I decided to follow on the footsteps of the people who began the initial work on the code.
This proved later to be part of the important decisions, because arguing amongst our group vying for stakeholder buy-in for which technologies to use was going to slow down the project- and time was exactly the resource we did not have.
So many decided to agree and follow, as did I.
Lesson 3: “Just make it work” is better than perfection
In producing the RapidPass, we needed to generate unique IDs that we can verify whether it was valid or not. After generating a unique ID, we can produce a QR code that can then be scanned and verified later.
I was responsible for rendering the PDF that will be sent to users via e-mail, which they would then print out (and maybe laminate) which they would stick on their vehicles to be scanned by the policemen and people at the checkpoints.
I’m definitely proud of being part of the team that printed the QR codes, but internally, as a software engineer pursuing excellence- I wish I could have spent more time on the layout and rendering so that the layout could be much better.
This is a habit that I still face today. Trying to do much better has always been something that resonated with my growth mindset, but distinguishing between perfection and excellence is a challenging balance that requires deep focus and self-awareness.
It was such a difficult itch to let go of- but what grounded me and made sure I focused was taking a step back and seeing the rest of the other responsibilities and tasks that we still had as a team.
The design team had a fantastic design changes, but we had to prioritize functionality vs. aesthetics.
Lesson 4: Ask for help, show up, and be grateful
There were so many new technologies that I was introduced to throughout the project, and was an amazing experience for me:
- I learned about Apache Kafka, which is a message-bus kind-of database system which allows different systems to publish and subscribe to different topics. We intended to use this, but given time constraints (and deadlines) it got pushed off into the next milestone.
- I learned about Keycloak, an open source Identity and Access Management service. I am definitely going to consider this next time I need IAM-related things (and security!) for my succeeding projects.
- I got to practice more work with the volunteers on information security (shout out to AJ Dumahug of Secuna.io!) and I have grown a deeper appreciation for security!
- I was able to talk about blockchain with my fellow volunteers (shout out to Ariel and Jeffrey!) and I was able to find some time to try the samples on Hyperledger Fabric! I’m so pleased I was able to finally find time to tinker with blockchain!
- The network effect. It is definitely a great decision to expand your network and to meet more people. Meeting more people and talking to them about loads of things is much much more beneficial as compared to attempting to learn everything on your own. Multi-core vs. Single core.
Lesson 5: You have control of your classroom
When the pandemic loomed, I was completely free to do whatever I wanted. I could have chosen to unwind and take a break from work and play video games. I could have chosen to take on free open courseware to further my studies.
But I didn’t. I chose to put myself into a situation where I could learn from a diverse crowd and grow deeply.
The thing that I loved about this experience was the uniqueness of the opportunity, the friends and colleagues that I met, and the exhilarating rush of building an important tool that will help keep our community safe.
Sometimes, you have the affordance to do this. Sometimes you have the opportunity, or the space, the capability, or the privilege to control your environment.
When you do, you will have better control over the experience, opportunities, and challenges you face. In the same way, you are able to mold and sow the kinds of benefit and rewards. All because you put yourself in the right place and in the right time.
Opportunities come and go- and knowing and controlling your position and your environment has a great impact on your personal growth.
Lesson 6: Don’t know where to start? Starting from the bottom gets you going
As I shared in one of my presentations on the RapidPass experience, starting off in contribution by “Sweeping the floor” is a great way to absorb context and get up and running.
By sweeping the floor, you do all of the work that other people are too busy to get started doing. In the context of RapidPass, it was writing down minutes of the meeting, collecting the details of the work that we’re doing, and enabling better alignment for different participants.
This is also an easy way of writing your own ‘map’ and eventually- you become the person that people go to when they have questions.
Lesson 7: Intellectual Property and Software Architecture are important
At this point, I was introduced to the concept of IP licensing as the whole platform was donated to the government (specifically, DICT). There are certain legal protections necessary for the volunteers and contributors, to ensure their safety and remove any liabilities as the developers of this product.
I didn’t fully understand much at this time, but I did ask a lot of questions before signing papers and such. I’ll decide to study more about IP later on.
With many of our tools being built (some in Kotlin, some in Java, and some in Typescript), I felt like it was getting overwhelming to see the whole picture of the system.
It was at this point that I decided to advance my career as a full-stack software engineer into more roles related to software architecture.
Lesson 8: Intensive performance also requires commensurate rest
It was a wonderful ride- but high performance teams also require the break and relaxation to ensure that they’re able to rest and recover. The whole DCTx team sprinted the whole lifecycle of a whole platform in three months- and that deserves the rest it needs.
At this time, A top objective of mine right now is to be able to rest and to pace myself with work, and so it shall be.
I hope you enjoyed reading my insights and learnings about building in open-source. I have loads more mental models I want to share with you, but that shall be it for now. Thanks for reading!
Leave a Reply