This article was first published on Polymath Network - Medium
The Polymath developer team has been busy over the last 10 months building Polymesh, our new domain-specific blockchain which optimises for regulated assets, compliance and finance.
In this article we are going to focus on some of the best practices we are implementing as a team, some of the challenges of building the complex software that underpins Polymesh, and some solutions to help manage this complexity and improve our development cadence.
A Reliable and Stable Chain
Polymesh is written in Rust, a modern performant language with strong compile time memory guarantees, feature rich types, traits and composition — for more details on why we love Rust take a look at one of our recent posts.
We are a distributed development team that works together synchronously using the usual agile process with daily stand-ups and development sprints, as well as asynchronously via Github, Slack, PRs and code reviews.
One of the key challenges to building software which is both mission critical, complex and rapidly evolving is ensuring that we have comprehensive unit test cases that allow small functional chunks of behaviour to be tested in our continuous integration pipeline, providing some assurance that when parts of the code are refactored or improved, we haven’t broken any previous functionality! This approach allows us to rapidly iterate and improve Polymesh, adapting to the fast moving technological landscape, and add new features safely without compromising the stability and reliability of the chain.
Rust has great support for unit tests, with the test cases sitting alongside your code and a framework which allows unit tests to be written with minimal scaffolding. However, we often find ourselves needing to debug either our unit tests, or larger functionality.
Like many other languages, Rust has different artifacts which can help us during the development process. The most common ones are:
- The classic `println!` ...
To keep reading, please go to the original article at:
Polymath Network - Medium