Early on in my career as a software engineer I decided to spend some of my spare time learning a little about how blockchain works. The reason I was interested in the technology was because many of my coworkers were discussing how revolutionary it was during lunch. After spending some time reading about it I decided to learn some more.
Prior to learning about blockchain I’d learned about how open source development can be a great learning tool and experience. There were many projects to choose from so at first I wasn’t sure which project to work on. After some research I decided to conribute to the Chainlink project. The project attempts to solve what’s known as the Oracle problem for blockchains.
The blockchain oracle problem refers to the inability of blockchains to access external data, making them isolated networks, akin to a computer with no Internet connection. Bridging the connection between the blockchain (onchain) and the outside world (offchain) requires an additional piece of infrastructure—an oracle.
from chain.link
Chainlink also piqued my interest because the developers used Go, Ethereum and Solidity which were technologies I found interesting and wanted to learn about. I immediately jumped in and over the course of a year I began working on various tasks like building out new command line commands, adding pagination to API endpoints, and contributing to the core of the chainlink node.
The project is an example of an excellent codebase. I reference the codebase till today for best practices in Go standards and overall design. The other great thing I got out of contributing to it was meeting some very talented people and they helped me grow.
Steve Ellis (Cofounder of Chainlink) and the maintainers provided me with great feedback. That feedback was invaluable in helping me learn about Go, design patterns, and working with others remotely. This turned out to be a great decision because everything became remote during the COVID era.
If you’re looking to learn about a specific set of technologies while working on a project that’s interesting to you then try dabbling with open source. You’ll most likely find projects that are enjoyable and a breath of fresh air. In the open source world you don’t necessarily need to contribute code to benefit. Being able to observe and study popular technologies is highly beneficial too.
Work that’s contributed to open source impacts many people in a profound way. Millions of developers rely on various open source technologies to build software without having to reinvent the wheel. It’s rewarding and fascinating that my code has been running on potentially thousands of different machines.
In the end I was able to use open source as a tool to assist me in learning new skills, advance my career, and meet knowledgeable people. If you want to advance your understanding in any technology then give open source a try.