百度 代码的艺术训练营 培训大纲
上周分享了“百度代码的艺术训练营诞生记”。考虑到很多同学不在百度内,无缘直接参加训练营。现在将训练营的培训大纲发布出来。一方面,有兴趣的同学可以参考大纲中列出来的材料,自行学习;另一方面,有心的同学也可以在各自公司内组织类似的训练营。
目前训练营设计为5个section,每个section持续3周,这样完整参加下来要15周的时间。每个section内,是这么安排的:
前两周由学员根据指定的参考资料自学。在第2周的周末,会要求提交作业。
第3周内,会组织两次讨论和分享,每次2小时(都是在晚上下班之后哟)。形式一般是学员分享,讲师组织讨论和点评
5个section涵盖了:软件开发的基本概念,需求分析和系统设计,软件编码,软件项目管理。具体组织如下:
Section 1:
主题:软件开发基本概念 & 需求分析和设计
课程设计说明:
这个section的主要目的是对软件开发建立正确的意识,首先从基本概念学起。
另外针对很多同学在需求分析(尤其的软肋)和系统设计方面的薄弱环节,重点阅读学习这方面的内容
学习材料:
代码的艺术视频 (发现在B站上也有了,搜“代码的艺术”可以找到)
阅读《201 principles of software development》(请百度搜一下)中的Chapt 1 - 4
作业:
准备一个分享材料,时间控制在10-15分钟
分享你学习以上材料后的感受
注意:
不要写成“书评”(这是一个常犯的错误)
一定要结合自己的亲身体会
讲师职责:
组织分享和点评
Section2:
主题:需求分析和系统设计的案例分享
课程设计说明:
经过上一个section的学习,距离实战还有比较大的距离
由于时间关系,这个环节只能让学员蜻蜓点水式的感受一下文档方面应该注意的事项
学习材料:
《金字塔原理》(请百度搜一下)
《如何写好项目文档》
《IEEE Recommended Practice for Software Requirements Specifications》 (请百度搜一下)
作业:
以小组为单位,准备一个“需求分析”/"系统设计" 方面的案例,用于全体分享
时间控制在30分钟以内
关于案例的要求:
选择的这个案例最好是工作中的实际例子
对于案例,应该运用所学过的方法,重新进行梳理,说清:之前的方法有哪些问题,这次运用新的方法,产生了哪些变化
提交的作业内容应包括:
需求文档
系统设计文档
关于本组需求分析和系统设计过程的分享
完成作业过程中,小组成员的分工
讲师职责:
对学员提交的文档进行review
组织分享和点评
Section3:
主题:怎么写好代码(理论学习)
课程设计说明:
这个section希望学员能够系统的学习一下写代码中的注意事项。所推荐的学习材料的内容非常丰富,需要学员仔细的阅读和体会。
学习材料:
《201 principles of software development》中的Chapt 5,6,9
《代码整洁之道(Clean Code)》(请百度搜一下)中1-10章
《编写可读代码的艺术》(请百度搜一下)中的1-13章 (选读)
其它参考资料:
《代码大全(Code Complete)》
作业:
准备一个分享材料,时间控制在10-15分钟
讲师职责:
组织分享和点评
Section4:
主题:怎么写好代码(案例分析)
课程设计说明:
在上一环节的理论学习后,希望给学员一个实战的机会
同样由于时间的关系,只能让学员简单的感受一下,真正的提高还需要平时工作中的磨练。
参考资料:
作业:
以小组为单位,准备一个“代码编写" 方面的案例,用于全体分享
关于案例的要求
选择的这个案例最好是工作中的实际例子
另外一个可选的题目是用Python实现Mini Spider(一个小型的爬虫程序)
使用公司的代码提交工具,提交一个code review的实例
可以一个同学负责写代码,其他同学负责review
对于案例,应该运用所学过的方法,重新进行梳理
说清之前的方法有哪些问题
这次运用新的方法,产生了哪些变化
讲师职责:
对学员提交的代码案例进行code review
组织分享和点评
Section5
主题:软件项目管理
课程设计说明:
项目管理是大部分软件工程师都非常欠缺的能力。从建立意识的角度,在训练营中安排了一个课时。
学习材料:
《201 principles of software development》中的Chapt 7
《快速开发(Rapid Development)》(请百度搜一下)中的:
Part I中的Chapt 1 - 5
Part II中的 Chapt 6-10
其它参考资料:
《人月神话》(请百度搜一下)
作业:
准备一个分享材料,时间控制在10-15分钟
讲师职责:
组织分享和点评
训练营的培训大纲就是以上这些。虽然持续4个月的时间,对公司内的同学来说学习负担有些重,但是从软件开发来说,仍然是非常粗浅的入门课。
训练营的效果落实,50%靠学员自学参考资料,50%靠现场的分享和点评。除了学员自学的环节,review作业、现场组织和点评,这些环节对讲师的要求比较高。只有有一定实战经验的讲师,才能够做到有的放矢的点评和引导。讲师的现场点评,这是无法分享和复制的。这也是训练营为什么要坚持“小班教学”的原因。
对训练营的内容或组织有兴趣的同学,欢迎来和我交流。谢谢。
注:
所列的参考资料,大部分在国内都已经正式出版。但《201 principles of software development》还未在国内出版,大家可自行搜索一下。