前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >当我参加培训的时候,我在学什么?

当我参加培训的时候,我在学什么?

作者头像
tyrchen
发布2018-03-29 10:12:44
6580
发布2018-03-29 10:12:44
举报
文章被收录于专栏:程序人生程序人生

在旧金山举行的 erlang/elixir 2017 大会上周结束。这次,我并未参加 —— 权衡再三,我选择了这周的 complete OTP 培训,毕竟大会的视频 youtube 上找得见,可以慢慢补,培训错过了就没了。

参加一次技术培训,代价往往不菲,像这样一个四天的培训,价格是两千多刀,你很难说出它有多值 —— 培训的主题有一半都是我已经了解或掌握的内容,在过去的一两个月,我还给我的 team 培训过;另一半,其实给我空出来四天的时间,我自己看书或者读 erlang 的文档,获取到的知识也未必比参加培训少,那么,花这样的大价钱参加的意义是什么?

自己先想想看。

寻找合适的,志同道合的工程师?No。通过参加培训达到这样的目的,既不规模,也不经济,还不如去相关的 meetup 上勾搭呢。

跟讲师套磁,建立关系?hmmm... 你觉得四天能套出什么结果?大家都是实诚的程序员,讲究以德胡人,活好的自然互相倾慕(我跟讲师约了五月份他来湾区有机会喝个咖啡聊聊);活不好,培训完就是路人。

朝着这些方向想,too simple, sometimes naive。

其实,花钱参加培训的终极意义是(敲黑板):你购买了一次 附带培训的咨询服务。

(此处应该有黑人问号脸)

就拿我参加的 complete OTP 培训来说吧。讲师 Francesco 是 Erlang Solutions 的 founder。Erlang Solutions 是一个咨询公司,很多著名的开源项目(比如:RabbitMQ,Riak,MongooseIM)来源于他们,他们还是 erlang/elixir 大会的发起人。考虑到这样的 profile,你去 Erlang Solution 买个四天的咨询服务试试看?不定给你派个什么水平的咨询师来,而且起价没个几万肯定下不来。两千?做梦去吧。

可惜似乎没人懂这个理。也幸好没人懂这个理,这样一门课程,冷清到全世界的 erlang/elixir 程序员(虽然基数很小)加起来,包括我也就只有九个人参加。而时时刻刻都在提问的,只有我和一个 apple 的工程师(是的,apple 内部有项目在用 elixir 做,yeah,erlang/elixir 程序员可以嗨森一下,然后该干嘛干嘛去了)。而提问的方向聚焦在平时工作中遇到的问题的,和公司业务相关的,基本就是我。

这个 complete OTP 的课程内容不算特别紧凑,其中,做一个 ebank 项目的练习时间,快占了一半。这个宝贵的问各种二逼问题的时间,你造么 —— 绝大多数工程师都在寂静无声地吭哧吭哧写代码,偶尔遇到问题了问问 Francesco 这怎么回事,那里为什么编不过去?

这就好比你守着扁鹊,不让他给你问诊,却让他给你剪指甲。

或者,说个程序员熟知的段子:妹子对序员说你要是能让论坛的人都吵起来,我今晚就归你。序员在论坛里说:PHP 是世界上最好的语言。。。

暴殄天物啊。

exercise 没有价值么?非也。这个培训使用的 exercise 非常经典,从 gen_servergen_fsmgen_event,一路练习到 supervisorapplication,以及使用 sasl 深入了解 release 的过程,如果谁能把整个 exercise 独立完成,我觉得他/她就能击败 80% 的 elixir 程序员,真可以在简历上号称一下掌握 OTP 了。

很有价值,但实现这个价值的时机不对。

全班同学仿佛只有我预先(或者之后)把 exercise 做完,而在 exercise 的时候,问课程中各种没有来得及问的问题,以及工作中踩到的各种坑。

你看我都问了哪些很 "silly" 的问题:

  • 为什么说 start_link 是个同步的过程?
  • application 为什么会起两个 process,再启动 supervisor?(其实这个问题我在书中看到答案,只是为了引出更多的问题来确保我理解对了)
  • group_leader 的意义何在?(我觉得我懂了,但我不知道我是不是真的懂了)
  • 使用 global process 是不是个好的做法(这次我干脆无耻地打开我工作中写的 auto compiler 的代码跟他探讨)
  • 我这样这样这样用 ansible provision vm.args 和 nodes.config,究竟对不对?有没有更好的做法?

等等。在 Francesco 的推荐下,我甚至还读了一些 OTP 的源码,和他探讨源码里的细节。

这才是有效地利用这样的「附带培训的咨询服务」。

如果你觉得我说的对,那么接下来我们看看如何从一次培训中收到最大的收益?

选择合适的讲师

如果抱着上述所说的目的,那么,培训的内容其实是次要的。既然把它当做是「咨询」,那么,我们需要选择合适的「咨询师」。

前面说了,这次的讲师是 Francesco Cesarini,我们前面介绍过他是 Erlang Solutions 的 founder(这个身份暂且放在一边不提),他的其他身份(吸引我的身份)是:Designing for Scalability with Erlang/OTP 一书的作者,erlang/OTP R1 的开发人员。

也就是说,可能除了 erlang 的几个 founder 外,如果在全球范围内海选十个有资格讲 OTP 的人,他必定是其中之一,而且排位靠前。

我知道大部分读者不知道 erlang/OTP,大概也搞不清 Francesco 和 San Francisco 有什么区别。我们换个角度说 ——

如果你做微信服务,你平日烧香供着的姓张的舅舅开个小班培训,谈谈如何做微信下的服务,票价一万;而程序君也同时做几乎相同的培训,吐血白菜价一百,你参加哪个?

搞清楚了这道选择器后,我们再出一道题:Rich Hickey 有个 clojure 的 培训,或者 Guido van Rossum 讲 dive into Python,面向中级水平的程序员,而作为 clojure 或者 python 的高手高手高高手,你参不参加这个培训?

做足功课

培训上可能讲到的内容,是不是先自己过一遍,把所有自己没搞明白的问题整理出来,在培训的过程中随时发问呢?

工作中,我们在一个方向上工作久了,业务熟悉了,就会成为所谓的「专家」,如果周围的人在你的领域都远不如你,便会自以为是。是不是可以趁着这样的机会把自己工作中遇到的问题,不懂的,似懂非懂的,以为自己懂的,以为自己对的,都拎出来跟讲师辩一下呢?

用这样的机会跨越平台期

程序员估计都知道一万小时理论 —— 足够长时间(一万是个约数)在某个领域的刻意训练(deliberate training)能够让你成为专家。我们据此坚信,24小时学会 C++ 是错误的,肤浅的;相反,只要功夫深,就能学精 C++。

也似乎不太对。

因为我遇到太多干了十几年的平庸程序员了。他们似乎困在一个无论怎么努力也很难跨越的平台期 —— 这是一万小时理论里的禁飞区。

这次培训,同学们的 erlang/elixir 的工作经验都远高于我 —— 我 elixir 三个月,三千行代码经验,erlang 零工作经验。在做 exercise 前,我都搞不清楚写代码的时候什么时候该用分号,什么时候该用逗号。

但四天下来,我觉得我写 erlang 代码的水平(虽然还是比较慢,还会漏句号)已经并不比有好几年 erlang 经验的同学差多少了。

这是为啥?

我想,很多人误解了 deliberate training 的含义了 —— 朝着目标头悬梁锥刺股是对的,但要知道该如何跨越平台期而进阶。我最近每周六晚都带着小丫头溜冰。我知道她跟我溜得再努力,每次一刻都不停歇一个小时滑一百圈也不可能成为下一个关颖姗。我的上限就决定了她的上限;可是,她要是有幸跟着关颖姗滑上一年,接受指点,同样的努力程度,往大了不敢说,一年后制霸 Cupertino 同年龄段应该不成问题。

所以 deliberate training 很重要的组成部分是 feedback loop。对,我又要灌 build - measure - learn 的鸡汤了。你光是机械地 build build build,没有 measure,哪来 learn 呢?measure 很重要。更重要的是,怎么 measure,谁来 measure?用什么 criteria 来 measure?这很有讲究。

跟着一个高手学几天,即便不能功力大涨,但起码知道自己应该突破的脉门何在。我们不是都读过令狐冲和风清扬在思过崖上的故事么?

善用你的老师。老师不光是有血有肉的,由碳基构成的那些位,还有无色无味的,从 0 和 1 演化而成的源代码们。

Linus 说:read the F**KING code!

我们读一本优秀的书,就像是和作者在进行心与心的交流;我们读一段美妙的源代码,如同长辈和晚辈间的薪火相传。这世上,也许只有写作和编码,能够像无崖子渡让内力给虚竹那样,并不太费力就能完成知识和经验的传承。

我问的好些问题,Francesco 建议我去 xxx 目录下读源码。比如 application master,比如 gen_server,我就着源码,在纸上画着流程,嘴里喃喃自语道:bravo!

(app master 和 x process)

(gen server)

读到不通处,再和他探讨。

你看,傻小子郭靖,不就在七公手下,这么成长的么?

就写这么多。此致,敬礼。


Head fake 1: 你以为这文章是写给你的?不不不,是写给我的同事的。

Head fake 2: 你以为这文章是在告诉你看清培训的意义,以及如何选择培训?不不不,请看思考题。

思考题:赵丹阳 08 年 211 万美金拍得和巴菲特共进午餐的机会。他是真的为了和巴老聊天套磁寻觅投资机会么?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序人生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 选择合适的讲师
  • 做足功课
  • 用这样的机会跨越平台期
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档