I was speaking with a developer friend the other day who was talking about getting into "Web3 development", and who wanted to pick my brain on the world of DApps and layer 2's, and found myself explaining that developing a Web3 application isn't a complete pivot from traditional web development.
I explained that it's more about leveraging the unique characteristics of blockchain or Distributed Ledger Technology (DLT) to extend regular Web technologies in specific ways.
Another friend needed help decoding a commercial blockchain company's website. I had to stress that the blockchain did not eliminate the need for all the components that go into a finished application -- the bulk of any Web3 application will still be developed using regular Web technologies like HTML and CSS, JavaScript, React, Node.js, and a bunch of back end services.
So, with this pattern emerging, I thought, "Yep, good idea for an article!" So let's dig in.
First, a quick review. All the things that go into conceiving a great product, designing it, developing it, and executing on the go-to-market still need to be done.
Before you even think about coding, good product management dictates that you understand the market, the problem you're solving, and the customers you're serving. This might involve competitive analysis, customer interviews, and a deep dive into available technologies and your own capabilities. Blockchain might disrupt industries, but it won't help you build something that the market needs.
One key part of this planning is understanding how your users will see and interact with your application. UI/UX design design is crucial for user retention and can make or break your application's success. Blockchain won't make your app a joy to use.
And you'll need to actually build the thing that users touch. Developers skilled in front-end technologies such as HTML, CSS, and JavaScript frameworks like React or Angular, are able to make the application look and feel right. Remember that blockchain has no front end.
It turns out that storing large volumes of data on a blockchain is generally impractical due to (relatively) high costs and slow speeds. Data architecture and data engineering disciplines can wrangle complex data requirements into the traditional databases and cloud storage solutions that will be needed for the bulk of your data storage. Blockchain is not your go-to for storing your summer vacation photos.
And, many applications require interactions with third-party services for payment processing, data analytics, or other functionalities. APIs and microservices enable these interactions, often serving as the glue that holds different parts of an application together. Blockchain won't fetch stock data or process credit card payments.
So, what are the unique capabilities and characteristics that blockchain can bring to projects?
The first one is immutability. Once data is recorded on a blockchain, it cannot be altered or deleted. If you have a need to ensure that historical records are preserved, no matter who has administrative privileges within your company, then putting those records on the blockchain will make them provably permanent.
This goes hand in hand with transparency. While blockchains can be public or private, a key idea is that the blockchain can be inspected and verified by anyone who has access to it. This can foster trust in your systems as fraudulent or otherwise irregular activities can be readily detected.
Closely related to these traits is security, the fact that blockchain uses advanced cryptographic techniques to both secure data and to prove provenance. It is extremely difficult to forge or alter existing information or transactions on the network.
Another concept that might be important to your application is privacy. The emerging technology around zero-knowledge proofs can be leveraged to secure transactions that require confidentiality. These are cryptographic methods that allow one party to prove to another that they know a specific piece of information without revealing the information itself.
Another potential characteristic is decentralization. Blockchains can be leveraged to provide a degree of decentralized governance, decentralized control of data and other assets, or decentralized system components. The idea is to reduce the reliance on a central authority. If your application can benefit from this aspect, then building on a public blockchain with an established decentralized governance mechanism is the best start.
Another idea is to integrate blockchain tokenomics into your solution. Tokens can serve multiple purposes within your application, from acting as a medium of exchange to granting access to certain features. They can be used to incentivize user behavior and create a micro-economy within or around your platform. Further, smart contracts can automate both routine and complex tasks and transactions, reducing the need for intermediaries and the potential for human error.
All of these characteristics of blockchains are potentially beneficial, but only if they fit within the concept of your application.
In summary, developing a Web3 application is like developing any other application; you just have additional characteristics and benefits to consider. You still need the basics—HTML, CSS, JavaScript, Databases, Networking—to make it complete.
I hope this article helps put the role of DLT and blockchain technology in perspective within the larger context of software product development. Let me know your thoughts!
Cameron O'Rourke