Dear DFINITY Devs in the Forum,
As a way to thank so many of you for your advice, and positive vibes whenever we asked about our challenges building software for the IC I wanted to share with you some nuggets of wisdom from our journey developing SatoshiNotes for the IC.
Satoshi Notes is a note taking app that works similarly to Apple Notes or MS One Note, meaning it runs locally on your computer, and can store data on the IC blockchain. Their main advantage is that it will allow people to sell notes for Bitcoin or ICP, and to do it quite easily.
That paragraph summarizes the app functionality, you can see a little more here:
Now here is the good part for the developers in the forum, especially those who are not experts, but want to build an app that runs using the IC. These are the challenges we found:
1.- If you win a grant with DFINITY, as we did, remember that they only pay you when you deliver each milestone. This means your team MUST HAVE other sources of income or savings to survive. You are not paid month by month, and you are not paid if you do not deliver.
2.- As everyone who has led a team knows, the project plan is always full of unknowns, so what you estimate at 6 months of work, can easily double, and the reasons will not be discovered until you hit a problem.
For us the main problems were three:
- We were not experts in the IC, and our theoretical architecture was very hard to execute. In particular we wanted to have a manager canister that spawns user canisters, and each user canister should hold HTML and related data, those are the notes to share.
- This proved very hard, and we had to abandon over a month of work in Motoko when it proved not be able to do the job. Rust seemed to be the only way, it was tough finding a competent and professional developer who would work for FUTURE money, not a payment until there is delivery.
- There is a lot of experimentation and failure as you build, you will explore an avenue only to realize it does not work, and have to start from code you did several weeks ago.
What would we do if we did it again?
First off we would concentrate in having a steady income for all the team members, so that grant money is extra, and welcome, but not needed.
Second we would learn and build exclusively using Rust. There are many weird challenges we found that could only be solved with Rust on the IC. I do like Motoko, and it is easier to use and learn, but once you hit a roadblock more often than not only Rust will save you, and by the way, it won’t be easy either, but possible.
Third, do budget a lot more time to building if you plan to use advanced features like saving data on the blockchain, showing that data via a web page, or accepting Bitcoin.
One final thing, DFINITY is patient, but your estimate will become a deadline sooner or later. Be aware of that, or you won’t make it.
DM me for any details on any of these topics.
I wish you all success in your development projects!
Joseph Hurtado
Founder Granata Consulting