Talent Plan课程应发挥更大的作用 -- 写在Talent Plan课程优化项目(Talent Plan 3.0)开始之际。

同学们好,

我是 PingCAP 的 Roger, 张罗 Talent Plan 课程的优化和发展是我的工作之一也是我喜欢干的事情。

就在上周我们内部终于找到几位大咖可以投入时间开始优化Talent Plan课程了。产研的 Leader Siddon 以及各位工程师,其实一直希望继续优化 Talent Plan,从2020年初就有很多优化想法,无奈事情太多,一直拖到现在,但最终还是挤出时间来做这件事情。我想背后有如下几点原因。

1 数据库开发人才培养面临的矛盾

关于数据库开发人才短缺的问题,大家都知道短缺,但到底有多严重,做个简单的计算。国内1243所本科高校中,对本科生开设数据库内核实现课程的高校,不超过20所,算上研究生开设内核开发实现的高校,加起来不超过60所。涉及到数据库内核实现的部分,不同高校的设置不一样,但都在这几个专业之中,

  • 计算机专业(080901)
  • 或者软件工程(080902)
  • 数据计算及应用(070104T)
  • 数据科学与大数据技术(080910T)

以上四个大专业,一般一所高校一年的学生量是400人,其中主要学习数据库开发的不足三分之一。研究生中,从事数据库内核实现会分布在不同的实验室,但一所学校加起来不足50人。满打满算,一年只有204000.3+60*50,约为5400名毕业生。

再看需求,墨天轮上列出的国产数据库企业是150家左右。假设每家企业每年的人才需求是30人,包括研发、测试、产品经理等,那么看得见的数据库开发人才缺口就是每年4500人,还有很多企业不在榜上,估计每年6000人。除了DB厂商,每个DB企业都有自己的合作伙伴和客户,这些企业也需要基于数据库,开发自己的数据库应用或者开发自己的定制数据库。按照10:1估计,这些生态企业总共需要6万人。 5400比66000的矛盾。此处不包括大数据分析侧的人才状态,大数据技术平台的人才供给矛盾稍显缓和。有人可能会说,我们可以招聘学习分布式计算或者分布式存储等密切相关方向的学生,即使如此,也不能明显缓和这个矛盾。

造成这个人才短缺的原因,其中之一是数据库内核开发人才的学习路径比较长。除了作为开发者必学的离散数学,数据结构、语言,作为基础软件开发者,你还需要学习计算系系统架构、编译原理、操作系统,作为数据库开发者,继续学习数据库概述、数据库实现、分布式存储和计算等等。面对这么长的路径,做一个移动应用或上层应用开发者路径就简单的多,可以速成。再加上近10年应用开发需求的极速膨胀,可以消化掉巨量的人才供给。这导致了数据库内核等基础软件方向招生困难。

从高校专业设置的角度,数据库不是一个专业,而只是计算机专业或者软件工程专业下的一个方向,再加上数据库在高校的眼中是一个非常传统的,成熟的技术,相比人工智能等新潮的技术方向,不太容易产出学术成果,导致过去二十年,绝大多数高校的本科数据库课程设置,都依然停留在数据库的使用和运维基础之上。这也跟过去二十年,我们主要使用美国企业的数据库产品(Oracle,DB2, MySQL, PostgreSQL,并不开发自己的数据库的情况也相关。

随着中国互联网产业的兴起,带动了自研数据库和国产数据库的发展。墨天轮中的150家国产数据库企业绝大多数都是2010年之后出现的。中国互联网经济的成功不但带来了大量的数据库开发需求,也推动了数据库技术的新发展, NoSQL, NewSQL, HTAP等技术相继出现。

但就在产业界对数据库开发人才无论是数量上,还是质量上提出要求的时候,令人尴尬的是,高校在数量上和质量上并没有准备好。

在这个矛盾中,最尖锐的部分是分布式关系型数据库开发人才的短缺。本来设置数据库开发教学的学校就不多,将分布式数据库的实现作为重点的就更少了,然而产业界数据库最主流的发展和需求就集中在分布式关系型数据库领域。

2 Talent Plan 的历史和现状

Talent Plan(https://university.pingcap.com/talent-plan/)是 PingCAP 公司的几位创始成员在2018 年启动的。在看到美国学术界的人士都有不亚于工业界的工程能力,他们颇受触动,随即回国后开发了这套帮助学生学习和上手实操分布式数据内核开发的开源课程。见 https://www.v2ex.com/t/667863

PingCAP 的创始人们在2018年估计也不一定意识到人才短缺的宏观情况。他们起初希望与高校合作科研,将高校的研究成果应用到自己的产品上,然而高校实验室的人员对分布式数据库的了解并不足够,所以开发了Talent Plan。

之后的发展是轨迹有点超出了最早的构想。除了第一批的华中科技和中国科大,来自于200多所高校的学生学习Talent Plan,包括40所国外高校,在GitHub上(https://github.com/pingcap/talent-plan)达到 6400+星,学习人数也达到2000+人。

课程本身经过最早的0.1,1.0,2.0的迭代,代码量达到20万行。目前从学习者视角,课程目前有如下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语言及开源协同工具等方面。

另外, Talent Plan还包含基于 TiDB 产品的实地开发项目 Talent Challenge Program, 学员需要通过Talent Plan 作业验收,在PingCAP 产研 工程师 的指导下,完成跨度1个月到3个月的 TiDB 实际开发工作。

Talent Plan的发展背后的另外一个推动力其实是前文提到的那个矛盾,高校人才供给不足,企业只能自己培养人才,或者通过一个方式从别的领域向自己的领域转化人才。Talent Plan就担当了向分布式数据库领域转化人才的重要渠道。

3 Talent Plan的问题

我们希望Talent Plan逐渐成为支撑一个行业人才培养的重要力量之一。

第一,人才短缺的矛盾一直在那里。虽然教育界已经采取了一些行动,比如更加开放地拥抱校企合作、逐渐地重视实操练习,但产业界的进化是非常迅速的,人才供给状况还没有得到改善。

第二、200所高校的触达率,6400+ 星。(分布式数据库这个细分领域在全球可能是最高的)

第三、Talent Plan背后的团队 PingCAP 和 TiDB 在领域内的影响力。

第四、Talent Plan及其背后的公司 PingCAP 在开源方面的经验。

image
上图列出的课程都是数据库开发和分布式系统方面国际上非常有名的课程,然而这些课程在分布式数据库这个细分领域内,相比Talent Plan都有其不足。

有人可能会问,一家企业做的课程可以显著地支撑一个行业的人才培养重任吗?这样的例子并不少,思科公司为了方便高校网络工程课程教学开发了一款免费教学模拟工具 Packet Tracer, 该模拟器可以在单机上模拟大部分网络,包括一些最新的协议,可以使得高校不用购买复杂网络设备的情况开展网络工程教学。Packet Tracer 配合思科 CCNA 系列课程被中国几乎所有高校的网络工程专业使用。接近100%的使用率是否称得上支撑作用呢?当然是个支撑。吴恩达先生在Coursera上的课程《Machine Learning》注册量为420万,这个领域很少有人不知道这个课程。

如果我们将Talent Plan放到分布式数据库人才培养重要力量之一这个高度来看的话, 它还有很多问题,最主要有以下几个方面:

第一、难度偏高,学习曲线陡峭。目前的课程毕业率大概是9%。这其实也是学界与工业界差别的一个体现。企业工程师做课程天然地偏向于产业一端,一般会高估学生的基础水平。而对学生来讲,课堂绝大多数时间并不接触开发实现、主要学习了数据库理论。但这并不是说难度如此设置是正确的,制作课程是为了让人学的,难度过高,课程制作方就应该把剩余的梯子接上,并通过科学的课程设计,优化学习曲线。

第二、课件和文档不够友好。尤其是中国学生还是倾向于阅读一个相对完备的介绍和讲解,然后再动手操作。目前的Talent Plan的部分内容是类似于阅读列表,告诉学生你要阅读某些文章,某些视频,、某些论文、某些练习题,以此来代替课程原理讲解。这也是企业做课程的一个缺点,一是时间精力问题,二是不了解学生的学习心理和学习规律。

第三、指导和互动不足。虽然Talent Plan形成了初步的社区,但互动不算热烈,一个问题经常几天没人回答。这是个客观现状。在如此复杂的学习难度面前,再加上无处问询,这会极大的打击学生的学习积极性。背后的原因是一个学习社区的建设的问题。虽然经过两年的发展,但精通这门课程所有路径的学生非常之少,完成一个路径的学生并愿意指导他人的学生也不多。数量和激励机制都存在问题。包括批改作业,目前还主要依赖 PingCAP 的内部工程师在有限的时间内批改,这也不是一个可扩展的方法。

4 Talent Plan的课程优化

根据学员的反馈,我们制定了目前的优化思路,主要包括代码简化、突出重点、更加友好的文档和知识点体系、更加清晰的代码注释,另外我们考虑会增加一个分布式事务的新模块。课程的努力方向是更加符合学生的学习心理和更加合理的难度曲线。

关于TinySQL, 请关注 https://github.com/tidb-incubator/tinysql/issues/83
关于TinyKV,请关注 https://github.com/tidb-incubator/tinykv/issues/275

你的建议和反馈对我们做出更好的课程至关重要。你可以直接在以上github issue中提供你的建议和反馈。

另外,这次除了PingCAP 工程师,我们也邀请到神州数码 TiDB for PostgreSQL 团队,以及华中科技计算机学院华东师大数据与科学工程学院一起加盟优化Talent Plan。

如果你对Talent Plan比较了解,希望参与到Talent Plan的优化项目中,请以你舒服地方式告诉我们,回复本帖,或者写邮件到 talent-plan@tidb.io

关于Talent Plan 3.0 什么时候ready,目前还真说不上来,要看大家反馈的问题以及各项需求。我想之后不久就会有详细日程出来。

5 Talent Plan 课程的未来

众人拾柴火焰高,Talent Plan 未来不是 PingCAP 的,而是所有贡献者的,所有Mentor的,所有学员的。Talent Plan 的未来会是一个活跃的学习社区。

4赞

看起来链接识别有问题,需要加一个空格。

done.

Thanks

1赞

https://university.pingcap.com/talent-plan/ 貌似挂了

同学你好,https://university.pingcap.com/talent-plan/ 这个网址没有错哦,你提供的链接直接点击跳转后如图显示:浏览器上端显示的 URL 有错误

,建议直接删除 “)是” 这一部分~

P.S. 欢迎学习 Talent Plan~

1赞

rust的project-1
描述


实际

配置已经补全了,并不会报错:rofl: