程序员内部培训

程序员其实不需要培训,只需要指点

  • 工作都必须去实践,纯理论领域极少
  • 能找到互联网大量资源自学
  • 实践深入后遇到问题,除了靠智力解决外,大部分只需要知道答案的大致方位就能用时间来消灭掉

大牛,知道了很多 答案存在的地方以及发现这些地方的方法

优秀的程序员培训师懂得教方法而不仅是教答案

很多公司内部培训流于形式,大家听完后就知道这是个很牛b的技术,却不知道怎么令自己也牛b起来

HR

HR就算懂上面的道理,但因知识领域的差异、从根本上没能力推动发展程序员的内部培训

HR能做的事是帮助管理者在 程序员心中培养技术为尊的意识,让他们有动力去自学并实践,并以公司内某位榜样为目标赶超他

HR无法有大作为,也令大多数公司很少重视培训

即使不培训也不会影响赚钱,工作效率的低下可以用加班来弥补

且项目做到一定程度就会更新换代、推倒重来,原本写得多烂的代码都成过眼云烟

老员工们都有自己的习惯,较难通过培训来改变,基本都需要有人经常提醒

实际中很多是因为负责人懒得写文档,或者文档很容易过时而懒得更新,不如口头说一遍算了

业务/技术培训

对技术培训的第一反应都是PPT式会议,最初级的培训

PPT最大意义在于做报告,内容凝练而简略,受众没法得到很多信息。但是这并不等于没用

PPT式会议和网上视频教程一样,帮助 零基础 的人快速入门(对这门知识几乎没接触过,但已有相近的知识)

例如已知C学C++或已知C++学Java,也就是说,至少不用在培训中解释何谓关键字或者面向对象

连相近知识也没有的人,应该叫 负基础,他们会连PPT式会议都听不懂,还是得回归书本


书本不仅适合负基础的人,也适合高级读者。看书时有时间细想琢磨,有助于吸收

专家级则是阅读各种SDK和API文档

大神级的就是看各类源代码看出神的了

搜遍各种书籍和互联网都找不到的东西,才是真正有意义做培训的,多数跟本公司密切关联

  • 产品的整体架构、设计思路、业务逻辑,迭代历史等
  • 各类工具/系统(IDE、需求、项目管理、测试与bug、文档等)的使用技巧
  • 解bug、做优化等的经验
  • 工作流程和制度
  • 本部门的知识体系梳理

例子 《iOS开发知识与能力体系 思维导图》,能说明问题,不做iOS的也能get√到

掌握技术知识需要花很多时间思考并经过实践,通过培训来达到目的的性价比很低,只有其中牵涉到工作业务的部分能带来实效

换句话说,“如何把技术应用到业务中”是公司内部培训要解决的核心问题,实现业务所需要的“技术”本身,应该边自学边实践

能让受众最大程度吸收的培训形式应该是手把手地教,这个贯穿在设计和编码过程中

实践过发现被培训的人确实能完整地吸收,而且时间长了他会有反馈并跟你讨论,你可能在讨论中反过来也学到东西

当然,这个很少发生在互联网公司里,大家都很忙碌

培训缺陷

从发展历程看,内部培训就像是个牛人晒能力、懒人捡便宜的工具

然而,实际的情况连 “牛人晒能力” 都未必能达到。大家忙于业务攻关,根本就没有精力关注 “培训效率” 这个指标

培训本身有一套专门的知识体系,不是每个技术专家都可以成为好老师来高效传授知识,所以专业的培训公司才会有市场。如果内部培训不是由专职的人负责,那么它很可能就是个形式,参与的人鲜有收获

很少公司会设立专职的培训师岗位,因为公司的天生属性是雇人来赚钱而不是 “倒贴” 输出知识

团队里的人通常都专注于业务业绩,在这种环境里很容易思维受限,只有少数人可以做到自身成长超越团队成长

好的公司会安排外训,然后参与外训的人会把外部知识融入公司,从而成为内部的专家。这种情况大部分只发生在管理岗位,如果这位管理者无心带人,那么属下的小兵一直都只会是小兵。公司也不可能把培训师请到公司里养着,因为根据人员流动规律,通常半年才会用他一次

总之,不要指望公司把你培训成才。师傅领进门,修行靠个人!本文也只是指引大家看书的

培训该怎么做

  • 成熟的技术,给一个书单,慢慢去研读吸收
  • 不成熟的技术,看官方文档(看 Guide、Training、Tutorial,不是 Reference)
  • 有深度的,写成文档
  • 实战技巧类的现场演练
  • 手把手教

Review 他的代码,毫无保留地指出所有错误和不良习惯

亲自示范怎么做出来的,在开始前让他注意观察,然后自己的动作慢一点

重构他的代码,让他自己对比好坏

指引他要看什么资料来提升自己

从较高的角度说明这样做的原因、思路、意义

demo

老大说,你研究一下业内的地图 SDK 好吗?你做研究后会给老板回复什么?

  • 业内有哪些 sdk
  • sdk 之间的功能和特点差异,优劣,是否定位准确
  • demo 接入,看使用情况,性能,包 size,稳定性,耗电
  • 安全性、权限要求,sdk 会不会偷偷做事情
  • 成熟的客户,哪些 app 在用这些 sdk,体验如何
  • 是否开源,开源的能自己参考再做吗
  • 从我们的实际出发,哪个是最好的选择
  • 跟业内的人交流
  • 接入后可以用来扩展什么业务。
  • 接入成本,是否收费,商业化程度,是否限制流量、IP、次数,是否要换量……
  • 工作量评估,人力,维护,sdk 的升级频率……
  • 可能的收益。提升日活多少?从而能赚多少钱?

一项技术培训在中国发展历程

  • 开始时,每个人都是新手,全是半路出家,巴不得有人教你带你。Google 是唯一救星,百度毫无用处
  • 懂得看书,然而有用的,还是英文版的多
  • 英文好的人更快掌握新技术,开始崭露头角并做分享。英文差的人趋之若鹜,不管是否能听懂。百度开始出现有用的结果
  • 书籍都只是入门,不可能把你锻炼成专家。先头部队懂得直接看官方文档,这批人有的自己做翻译,翻译-出来的东西随便一甩都能做培训,他们也就成了专家
  • 翻译的东西多了,更多人用自己的话语来描述,有了主见,至此非翻译版的中文书籍增多,入门门槛降低。随着网络带宽提升,网上视频教学兴起
  • 能百度到的用中文说明的解决方案越来越多,更多人不再主动看官方文档,依赖于被动接触 API 来熟知 SDK。除非是 Google 不到的东西,否则没人有兴趣做分享
  • 团队人数越来越多,每个人会专注于特定的领域,也没空去关注别的东西,于是视野和思维越来越受限。零散的知识无法贯通,这就再难以产生专家
  • 公司开始把培训委托外包,然而外部培训人员的能力也是参差不齐
  • 技术开始没落被淘汰,团队解散,风光一时的技术被尘封,当年的激情成为老一代人独有的辛酸回忆。如塞班、WinPhone

内部的培训形式发展

  • 打印官方的英文入门文档,自己慢慢看。还有外国人写的入门 PPT
  • 项目结项期间的分享,每个人说说自己学到的东西
  • 做 PPT,在内部分享
  • 鼓励写文档,详细地总结;邮件发送,IM 群里讨论
  • 学习成长系统,自选课题和导师,季末做总结和考核
  • 分享培训成为 KPI 的一部分,必须在论坛或者文档学习系统里达成指定数量的分享
  • 分享之星评比,有金钱奖励
  • 职级评价体系中,高等级加入社会影响力,对外需有名声
  • 请外部培训
  • 关注技术影响力,内部分享成了晒业绩的工具