Web2 and Web3 development are completely different: Products to Protocols.
The Web2 development approach thrives on the concept of "Lean Startup". The rush to market takes precedence over perfection. The idea is to deploy swiftly, even with a few bugs, then monitor for traction and improve accordingly. Engineers work in short cycles, frequently debugging, refining code, and adding new functionalities - sometimes as often as weekly.
This model of development, known as "Lean" or "Agile", is a benchmark in the web development sphere. But does it extend to the world of Web3?
In the realm of Web3 development, there's no room for imperfection. Contracts must be flawlessly crafted as the blockchain is both transparent and immutable. Should a contract erroneously mint tokens and these tokens are subsequently sold, it's an irreversible action. A single bug can considerably damage a protocol's reputation, necessitating stringent code review processes and audits.
The question arises, can we apply the agile process to Web3 contract development? The simple answer is “No”. Weekly deployments aren't feasible, even with upgradable contracts, as the need for perfection trumps agility.
So, what's the optimal development approach for Web3?
Web1's strict, waterfall-style approach fits well into the Web3 development model. Detailed testing, rigorous reviews, and comprehensive audits are inherent to this approach, requiring a well-defined specification in advance. If every process requires strict adherence, then the waterfall method is preferred over agile.
But wait, hasn't the waterfall method been largely replaced by agile? Isn't agile the current standard? Indeed, it is. However, the shortcoming of the waterfall approach lies in its inability to accurately predict the future, especially for large-scale, long-term projects.
So, what's the best method for Web3 development?
My proposition for Web3 development combines minimum waterfall and composability. We must accept the fact that creating a large, bug-free product is virtually impossible. What we can do, however, is meticulously develop minimalistic components (smart contracts).
Specifically, it could take 4-6 months to develop a protocol using the waterfall process. For scalability, composability - the use of other components - becomes vital. We should shift from the concept of creating a self-contained, perfect product to creating public components accessible to all.
Rather than pursuing the vain notion of single-handedly creating a colossal product, it's crucial to contribute to the broader Ethereum ecosystem. The term 'protocol' inherently implies open usage.
Let's shift the paradigm: we're creating protocols, not products.