How to accelerate adoption and development of dApps on Cardano given Haskell is not a mainstream programming language?
Prepare a set of code katas for developers to try out one at a time and get trained to code and integrate dApps for real life use cases.
This is the total amount allocated to Cardano Katas.
Functional, immutable & lazy nature of Haskell is present in mainstream languages too. However the differences in syntax as well the integration environment for dApps compared to commercial software world can pose challenges to even smart developers to ramp up quickly. Note that Ethereum's Solidity is used only by a fraction of developers worldwide today. What approach can assist developers bridge difference in the programming language and come aboard with the least amount of time?
Code katas: A code kata is an exercise in programming which helps programmers hone their skills through practice and repetition.
The katas will consist of a set of exercises. You try out one kata at a time, there by learning how to write the code for a use case and test it. katas will be built upon real life use cases. For example, a kata from the Java world would be set up as a series of unit tests which fail. Your task is to make them pass, using the library or framework for which the kata is written. You pick up one test case at a time, and to correct it you have to use some concept, syntax or technique.
A complete kata collection should provide end to end training where, for example, a developer learns hands on how to set up the dev environment, write a smart contract, test it, deploy it and validate the result.
When armed with the training from katas, it's just a matter of applying the skill to other use cases to build dApps. Only the specifics of the smart contract need to be changed by the developer.
Why do code katas stand out?
While documentation as well as training videos are useful developer resources, katas provide hands on training. The training environment is the same as if one was developing dApps. Just like in martial arts you get habituated to the code and the dev environment. Next is just to innovate the algorithm or the business use case.
Given Haskell is not as commonly used as Java, JS etc, its worthwhile to provide hands on training resources. katas initially on Plutus (Haskell) can be translated for other mainstream languages when the IELE virtual machine is released. The katas will evolve along with the Cardano platform and its languages.
Though the proposal here is focussed on dApp development, I think it can be applied to other areas too like for stake pool operators. Examples would be kata to set up a stake pool or kata to set up a Cardano node using Raspberry PI.
10000Developer