Should You Become A Web 3.0 Developer?
Tags: web3, blockchain, career
Published: 2022-01-26 13:03:03

#Introduction
As a developer, keeping up to the technological trends and changes can be quite challenging. Particularly, in 2022, Web 3.0 or semantic web has gained a lot of attraction, It generated way too much confusion and debate and many of us are still struggling to understand it’s concepts. In this article, I will try to explain Web3 and whether or not you should make the move as a developer.

#What Is Web 3.0?
This term covers several definitions, but they all have shared expectations about changing how the websites are created and how people interact with them. Basically, Web3 promises a future internet that "grabs some of the power back from the leading companies" as some put it, It is a **decentralized** internet built upon technologies such as **blockchain/cryptocurrency**. In Web3, everything is operated by users collectively and everything should be a token or **NFT**.

---

##What You Should Understand?
#### Blockchain/Cryptocurrency
First of all, I would like to make the distinction between the two terms. Blockchain is a decentralized (Without the use of a third-party), immutable (Cannot be changed) and a secure digital ledger (Think of this as a book containing transaction data that cannot be modified or manipulated) in a distributed network of computer systems (the ledger is transmitted to every user connected to the network). Cryptocurrency on the other hand, uses blockchain technology to record and secure transactions, it is an application of blockchain. 
#### NFT (Non-fungible Token)
A token is a digital asset that you can trade with other people, developers can build them in a form of **smart contracts**. 
#####Tangible vs Non-Tangible
Bitcoin is tangible, In fact, one token is always the same value as another token with the same size. But, you can think of non-fungible as something that is non-replaceable, and each token is absolutely unique, which means that only one person can have a specific NFT in their account.

Most NFTs are part of the Ethereum blockchain, although other blockchains support them as well.

#### DAOs (Decentralized autonomous organizations)
DAO is basically an organization that operates through a set of **smart contracts** that define and provide governance rules to an organization.
#### Smart contracts
Are simply programs or pieces of code on a blockchain that run under certain conditions.


```I advise you to reread this section if you're not familiar with these terms.```

---

#The Motivation Behind It
There's a lot of motives behind this hype, but, the most obvious are:


1. **The Elimination Of The Big Middlemen On The Internet:**
Some people want to rethink the internet as the web is currently at the hand of big corporations such as Google, Facebook/Meta, Amazon... In fact, these companies have a long history of data misuse, manipulating votes and our privacy choices...
2. **Making A Living:**
With NFTs, artists and creatives earn freedom to express their artwork, they saw this as an opportunity to make lucrative sales and democratize art. 
3. **Expending The Blockchain Applications:**
Tech people are constantly looking for solutions and use cases based on blockchain ideas and technology. Therefore, building Web3 could be the way.

---

#Hype vs Reality?
This hype has also received many criticisms which boils down to:

1. **Performance And Scalability:**
Decentralized apps have difficulty scaling up, the running cost of the application depends on its use. 
Also, each transaction requires a fee to be paid, called gas.
Ethereum (The most popular blockchain for Web3) can do about 30 transactions a second which is extremely slow.
2. **Architecture:**
Current web3 services are architecturally not suitable to run anything at scale. 
Web3 architecture is much more complicated compared to a traditional architecture, which make dapps or decentralized apps very hard to build.
Here's a very interesting [article](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) if you want to understand Web3 architecture.
3. **Poor User Experience:**
     * **Complexity:**
Currently, blockchain transactions are very complex for users as it requires the knowledge of new concepts, In fact, It leaves users with uncertainty about the whole process.
     * **Success/Error:**
Blockchain transactions usually take few minutes to complete. Also, If a transaction fails, users may lose some of their gas fee. Communicating success,error and loading states is challenging.     
4. **Environmental Impact:**
Ethereum uses a huge amount of electricity which is not environmental friendly as it creates CO2 pollution like a medium sized state.


In reality, there are considerable challenges with blockchains,  Some developers are well aware of these issues, and, they are trying to solve them. So, how do I build a dapp?

---

#How do I Build A Web3 App?

###Front-end
It is very similar to a normal web app, you will likely use UI libraries like react, but it differs when we're talking about authentication, In fact, users can install mobile apps or browser plugins like MetaMask and Coinbase wallet to make their public wallet details available to a dapp, this allows the front-end to interact with the blockchain.

####Popular Libraries:
Web3.js and Ethers.js.

###Back-end
Building a back-end application is entirely different from building a traditional web app, instead of a server and a database you'll be writing smart contracts.
 
####Popular Frameworks:

- Hardhat and Truffle Suite:

They use the solidity programming language which is designed specifically for writing smart contracts on the blockchain.

- Open Zeppelin:

It provides templates for writing smart contracts that applies to the industry standards.
 
###Deployment
These libraries provide you with scripts to deploy your smart contracts to the blockchain.

###Database/Storage

It is not efficient to store all your data on the blockchain, you can use the off-chain storage to store large or mutable data. the most common solution is IPFS (InterPlanetary File System), there are databases build on top of it like OrbitDB and ThreadDB.

###Testing

You can use Hardhat and Truffle to create a testing network on the blockchain, this, generates many wallet addresses filled with fake cryptocurrency that you can use for testing.
You can also use a library called Waffle for automated tests. 


#Conclusion

Web3 can be the new era of the internet, as web2 took 30 to 40 years to fully roll out, Web3 could also take many years to develop. As a developer, there's no need to rush, but rather, It's time to learn about it and maybe start to experiment with it a little bit.
If you're interested, you can start messing up using Remix IDE which is a browser based tool that will handle all the complications for you or you can read these articles: 
[The Web3 Developer Stack](https://www.quicknode.com/guides/web3-sdks/the-web3-developer-stack)
[Web 3.0: A Developer Roadmap, Guide, and Resources to Get Started](https://dev.to/olanetsoft/web-30-a-developer-roadmap-guide-and-resources-to-get-started-45oa)
[How to Break into Ethereum, Crypto, and Web3 as a Developer](https://www.freecodecamp.org/news/breaking-into-ethereum-crypto-web3-as-a-developer/)
[Full-stack Web3 with ASS](https://dev.to/0xmuse/accelerated-guide-to-fullstack-web3-with-ass-anchor-solana-and-svelte-1mg)