Is Web3 Development That Different? My First Week @ DFINITY
Web3 development is still computer science. A good comparison is when mobile applications started, and we just had web development.
What Is DFINITY
DFINITY Foundation is a not-for-profit organization based in Zurich with offices in Palo Alto and San Francisco. Its mission is to develop the technology that supports the Internet Computer.
The Internet Computer is a blockchain network and ecosystem that enables developers to build and deploy secure, autonomous canisters—smart contracts in other blockchain networks.
For the new to web3 and blockchain—like me a month ago: smart contracts are computer programs that run on the nodes of a blockchain network, in a distributed and decentralized manner.
Note: My learnings are very biased towards Internet Computer. I can’t talk about other platforms like Ethereum, since I have no experience with it.
First Week, First Learning
It’s only one week, I can’t say much yet, but I wanted to share my first experiences as a “web2” developer in a “web3” company like DFINTY.
The first thing I learned is that I prefer the concept of decentralized apps (dapps for short) to “web3”. It captures better the idea of apps running on a blockchain. More or less the same that web applications wanted to capture a different concept than just a website.
Dapp vs. App Development: The Basics Are There
Dapp development is not the same as app development, but it’s not so different. While the frontend is the same—the browser— the backend’s environment is different. Instead of running servers, you run smart contracts (canisters in DFINITY). These smart contracts run in a network of computers instead of servers in a cloud provider.
A backend running in a blockchain network distributed in many nodes is not a standard server. For example, the data is stored along with the code, in the network, instead of a database.
Yet, if you understand the concept of networking, not just “fetch” or “axios,” or you know data modeling, not just MongoDB, you will be fine. Dapp development is still computer science. A good comparison is when mobile development started, and we just had web development.
The mobile environment was a different environment than the browsers. It was a change for developers used to web development—new languages, new possibilities, new APIs to learn, etc. But the community grew as mobile development became more popular and made it easier to learn and develop apps for smartphones.
I’d say that the difference with dapp development is more significant than with mobile development. But the idea is similar. It’s code, running in another environment, with different rules, APIs, best practices, etc.
About the Internet Computer Protocol
The whole protocol behind the Internet Computer is still a blind spot in my knowledge. But that doesn't matter for dapp development.
I want to learn more about the protocol, but I don’t need to know everything to develop on top of it. For example, in web development, it doesn’t matter that I don’t understand how HTTP works internally. Despite this lack of knowledge, I have built many apps on top of it.
There are layers of abstraction that help us interact with those protocols. These layers have already been built at DFINITY. Yet, there are still new features to bring these layers to the level of maturity of app development. Which is what makes it so exciting.
There is still a lot to do to bring dapp development to the level of (web or mobile) app development. And I am glad and thankful for that. DFINITY has given the opportunity to be part of something big while there is still room to make a difference.
I can’t wait to share with you my experience building my first dapp: what was interesting to learn, what was different, and what was surprising.
If you like this post, consider sharing it with your friends on twitter or forwarding this email to them 🙈
Don't hesitate to reach out to me if you have any questions or see an error. I highly appreciate it.
And thanks to Maria, Sebastià and Bernat for reviewing this article 🙏