At PingCAP we love the Go and Rust programming languages. They are the languages with which we write the databases TiDB and TiKV, respectively. They have empowered us to build these fast and reliable distributed systems from the ground up, and iterate on them quickly and confidently.
These languages are the future of systems programming.
We expect a lot from ourselves — our engineers need to be, or to quickly become, experts on both databases and distributed systems, and to be comfortable expressing that knowledge in these modern languages. The products we develop are on the cutting edge of distributed systems, storage technology, software design, and programming language theory, and yet there are few opportunities for students to gain hands-on experience with this intersection of technologies.
At PingCAP we are committed to mentoring the next generation of systems programmers, those who are beginning their careers in a world that is quickly adopting next-generation systems languages.
To this end, PingCAP is creating a series of training courses on writing distributed systems in Go and Rust. These courses consist of:
-
Practical Networked Applications in Rust. A series of projects that incrementally develop a single Rust project from the ground up into a high-performance, networked, parallel and asynchronous key/value store. Along the way various real-world and practical Rust development subject matter are explored and discussed.
-
Distributed Systems in Rust. Adapted from the MIT 6.824 distributed systems coursework, this course focuses on implementing important distributed algorithms, including the Raft consensus algorithm, and the Percolator distributed transaction protocol.
-
Distributed Systems in Go. A course on implementing implementing algorithms necessary in distributed databases, including map reduce, and parallel query optimization.
Today they are in an early state, but we would appreciate if you give them a look and help us improve them over at our PingCAP Talent Plan.
Even though I think the words "Rust and Go" sound better than "Go and Rust", I've used the phrase "Go and Rust" so that they can have the parallel with "TiDB and TiKV". I think it is correct to list TiDB before TiKV since TiDB is the main product.