---
title: 'Talent Plan 学习营初体验：交流+坚持 开源协作课程学习的不二路径'
date: '2022-04-21T00:00:00+08:00'
status: publish
permalink: /blog/first-experience-of-talent-plan-learning-camp
author:
    - PingCAP
    - PingCAP
    - PingCAP
excerpt: 'Talent Plan 是 PingCAP 联合华东师范大学、华中科技大学、中国科学技术大学、武汉大学和神州数码面向高校和工程师的未来数据库内核人才培养计划。本文是对 Talent Plan KV 2021 学习营一等奖获奖战队的专访，分享了他们在学习营中的收获以及获奖经验。'
type: post
id: 3119
category:
    - 公司动态
tag:
    - 'Talent Plan'
post_format: []
profile:
    - PingCAP
enclosure:
    - "https://img1.pingcap.com/prod/0419zhangheng_224327d147.mp4\n228775823\nvideo/mp4\n"
algolia_posts_post_records_count:
    - '5'
---
[Talent Plan](https://tidb.net/talent-plan) 是 PingCAP 联合华东师范大学、华中科技大学、中国科学技术大学、武汉大学和神州数码面向高校和工程师的未来数据库内核人才培养计划。通过结业考核的学员将获得官方认证的证书，并具备进入 TiDB 生态企业交流、实习和工作的机会。

为了让更多学员不会对体系庞大、内容艰深的 Talent Plan 课程望而却步，或是半途而废，Talent Plan 学习社区推出了 Talent Plan 学习营活动。学习营以线上自学为主，参加学习分享讲座为辅，邀请往届毕业的学员做导师，将自己学习过程中遇到的坑和必要的知识点分享给其他学员，帮助学员们将时间用在真正关键的学习上。

Talent Plan KV 2021 学习营学员来自福州大学、华东师范、清华大学、武汉大学、卡内基梅隆大学 、早稻田大学、纽约大学等高校，参与人数达到 400 人，可见大家对数据库知识学习的渴望。Talent Plan 课程有如下 5 个学习路径：Rust 编译原理和实现、实现一个 mini 版本分布式关系型数据库、实现一个 mini 版本分布式KV数据库、参与工业级开源分布式数据库 TiDB 开发、参与工业级开源分布式 KV 数据库 TiKV 开发。

**从课程内容上讲，有如下3个系列：**

系列 1: 开源协作

- TP101: 开源软件简介
- TP102: 如何使用 Git 和 Github
- TP103: 建立一个社区

系列 2: Rust编程

- TP201: Rust 网络编程
- TP202: Rust 分布式系统

系列 3: 分布式数据库

- TP301: 用 Go 语言实现 TinySQL 分布式数据库
- TP302: 用 Go 语言实现 TinyKV 分布式 KV 数据库

学习内容涵盖了SQL 语句基础知识、编译原理前端、DDL 异步变更算法、SQL 优化原理与优化器实现、统计信息与代价估算、Join reorder、执行引擎、物理算子的实现、KV 单机存储引擎（LSM-Tree）、Raft 一致性协议、Percolator 分布式事务模型、 Go语言、 Rust 语言及开源协同工具等方面。

来自福州大学的「奥特曼都是假的」战队以优异的成绩获得了一等奖，我们在学习营结业后对「奥特曼都是假的」战队的黄章衡同学进行了专访，请他分享在学习营中的收获以及获奖经验。

<video controls="" src="https://img1.pingcap.com/prod/0419zhangheng_224327d147.mp4"></video>

> “我之前也参加过一些软件设计类的竞赛，比如中国大学生服务外包创新创业大赛等。但这些比赛可能更关注项目的包装，在 Talent Plan 学习营中，更关注的是学生的动手能力，以及是否坚持到底将项目完成。”
> 
> <div align="right">——黄章衡</div>

开源为学习数据库打开一扇新大门
---------------

黄章衡来自福州大学 2019 级计算机系，平常在校的生活中，经常会和实验室的小伙伴参与一些软件设计类的竞赛，拿过不少奖项。从大二下学期开始，逐渐开始接触分布式系统和数据库相关领域，并参与到一些开源项目中，之后就一发不可收拾，开始不断地学习分布式数据库相关知识。

之所以能够在本次学习营中取得一等奖的好成绩，黄章衡坦言这段时间的学习起到了非常关键的作用：“我的基础比较扎实，在参加学习营之前，我有学习到很多分布式数据库相关的理论知识。还有就是要不懈坚持，在做项目的过程中会遇到很多 bug ，只有不断地坚持，修改那些 bug ，慢慢就会成功了。”

与开源的接触也为章衡学习分布式数据库打开一扇新的大门。他介绍，首次接触开源是一个叫 sofajraft 的开源项目。参与开源带给他最大的改变，是从前学习一些软件项目，源码基本都看不懂。但是当领取一些开源项目的新手计划或者一些高难度的项目后，在做的过程中慢慢就发现之前一些看不懂的代码突然可以看懂了。然后，通过慢慢地消化这些代码，继而学习整个系统架构，就可以把所学的知识与实践相结合，这对于个人发展是非常有帮助的。

遇到困难多交流
-------

在学习营之前，黄章衡其实已经对 TiKV 的整体架构有了一定了解，但他自我调侃了解程度还只是浮于表面，并且由于之前没有系统学习过 Rust 语言，并没有深入研究它的代码。后来，章衡在一些前辈的朋友圈里看到了 Talent Plan 学习营的通知，就报名参加了。

在本次 Talent Plan 学习营中，主要学习的课程是 TinyKV 项目。该课程中包含了四个 Project ：

- Project1 是构建一个单机 kv server；
- Project2 是基于 raft 算法实现分布式键值数据库服务端；
- Project3 是在 project2 的基础上支持多个 raft 集群；
- Project4 是在 project3 的基础上支持分布式事务。

其中 Project 3 是众多学员公认难度最大的一个。黄章衡也表示 Project 3 里的每一个测试都会让人怀疑人生。事实上，每一个战队都会在 Project 3 卡很久。Project 3 中有一些 bug 不太好找，很多人可能在调试的过程中，调试了好几天都没有什么结果，就放弃了。

章衡认为这时候有一个比较好的解决方案：去找一些别的战队或者导师交流经验，看看他们是否有发生过类似的问题，并且他们是如何解决的。因为很多 bug 大家都会遇到，可能有些人会有思路，去请教他们的思路，就可以解决自己的 bug。学习营中的导师通常都会非常热心地帮助学员解决问题。

在交流的过程中，由于章衡的队名「奥特曼都是假的」比较奇特，很多小伙伴都会直接叫他“奥特曼”，这也给短短两个月的学习过程中留下了有趣的回忆。章衡就靠着这个方法不断地改进着自己的项目，并最终获得成功。

学习建议
----

作为过来人，章衡也为其他想学习 Talent Plan 学习营的小伙伴，分享了一些自己的学习经验：第一点，要把项目文档阅读好。实际上文档里已经把要做的事情都已经说清楚了。第二点，要坚持不懈，不要轻言放弃。在做项目的过程中你可能会遇到各种各样奇怪的 bug ，多去和别人交流，多去看一些前辈的经验，了解他们是如何解决遇到的 bug ，不要遇到 bug 就随便放弃了，这其实对个人发展也不好。

个人收获
----

在采访中，章衡透露自己也报名了下一届学习营的导师，希望将自己的学习经验分享给更多参与学习营的小伙伴们。不出意外的话，你就会在下一届学习营导师名单中看到“黄章衡”。

目前，章衡已经在 PingCAP 实习中，个人对未来发展的方向也希望偏向基础架构、分布式数据库等方向。“我会继续往数据库这一领域去发展，在学习数据库的过程中，包括底层的存储和上层的计算，个人都是非常感兴趣的。从事分布式数据库相关的研发是我最感兴趣的事情。未来，我想我也会找这一块相关的工作。”

最近，Talent Plan 新活动——Talent Plan 2022 分布式事务短训营开营！专为 VLDB Summer School 2021 开发的课程——《分布式事务实现》经过后期升级上线，在本次学习营中正式亮相。本次学习营是 Talent Plan 学习社区针对有一定数据库基础的学员开展的线上学习活动，意在帮助大家利用两周的时间快速、透彻地学习分布式事务编程基础，在 TinyKV 中实现 Percolator、实现隔离与并发控制以及实现分布式时钟等实用主题。感兴趣的小伙伴可以点击[阅读原文](https://github.com/tiny-talent/distributed-txn)了解学习。