My feedback is to make the ‘sample deployment’ guides less dependent on other development tools and languages as possible. For example, less java script and deployment frameworks.
Its been a year since my first interaction with zeppelin contracts and their guides. I have learned a lot from zeppelin but then faced many obstacles due to my limited knowledge in software development in general. Part of them relates to: contract deployments and contract UI. The sad part in learning solidity is the dependency on many environments that relates to Javascript and web development. I’ve started learning solidity using remix environment, then faced issues deploying zeppelin contracts and thought that the only way to move forward is to start learning about truffle. truffle was overwhelming due to the asyc functions, which were very new concept to me. So i’ve start learning Javascript to understand the asycs. truffle terminal was still complex to deal with, so i’ve used truffle boxes samples to interact with my contracts using a web page. But that opened a many gates for confusion, I couldn’t understand the architecture and the clear line that differentiates between: web3js, light nodes, front-ends, back-ends, and APIs. So I went to a course on Full stack web development in Udemy, just to eliminate obstacles in learning smart contracts. Now I’m back to smart contracts & zeppelin, and I can feel that I’m better prepared to handle more complex deployments.
The question is, does everybody needs to have a web3js (or other framework), java script or web development background to develop smart contracts seamlessly? In my opinion, They shouldn’t need to. I recently knew that I didn’t need to move out from remix to deploy zeppelin’s crowdsale samples, and build complex contracts. I’ve solved my issues with remix and I’m back building with it, away from dev environment noise. remix gives us the chance to focus on solidity and contracts development.
I see those 4 are separate domain of focus when developing a smart contract or a dapp:
-
contract development, which include:
- solidity language
- contract hierarchies and modularity
- contract interactions
- contract security & best practices
-
contract deployment, which include:
- how to deploy contracts in general
- sample deployment with common frameworks (truffle, embark, etc)
-
contract interaction/interface, which include:
- web3js and other frameworks role in contract interactions
- samples on contract interaction (truffle terminal, remix, MEW, etc)
-
contracts & Dapps architecture, which include:
- contracts architecture
- how smart contracts fit with the overall dapp and web2.0 architecture.
- samples on different dapp architectures, based on use case.
While all the areas are important, I see that the most valuable to beginners and people who wants to focus on smart contracts are 1 and 4.
So I hope to see guides that are deployed with remix (or other tools if available) to reduce the noise of dev environments, and focus more on understanding the contract functionality/capability.
I hope this will help, and I’m happy to clarify any point.
thank you all,
Ahmed