浪人收徒告示

你也许毕业在即,你开始关注有谁开始实习,有谁签了三方合同,校园网的论坛你逛了又逛,你感觉到压力,你想努力,但书没看几页,就不由自主地想:“我这样对吗,这得多久才有结果,我现在到底什么水平,我的水平够么”?没人能告诉你,带着巨大的不确定,你自觉很努力,可你整天想着,我这样对吗,有意义吗,我是不是在错误的道路上越走越远?

直到你不再努力,开始迷茫起来,你觉得是自己不好,自己很笨,很没毅力,除了是因为自己浮躁,还能是什么呢?你不知道还有别的,更重要的原因。

你看到一个职位,每个字都看懂,却不知道这些要求背后到底是什么意思,你倒是想准备,但准备什么,怎么准备,找什么东西来看,该做什么才能接近要求,你不知道。可你还是准备着,综合了能百度知乎到的所有资讯,准备好据你所知重要关键技术,却怎么都等不到通知你面试的电话。

或者你终于等到HR的甜美的声音,坐两个小时的火车去另一个城市,在一座陌生的大楼里再等了一个小时,结果笔试题上一个基础的问题,让你用Javascript写出某个实现,才知道自己能读懂中文的题,却读不懂技术的那道题,你不知道对方在考你高阶函数,答案只需要四行代码;你不知道对方在考你closure封装方法,答案超不过半页纸,你有就是有,没有就是没有,不存在猜对的余地,于是你意识到了什么。

你搜遍互联网,看了多少个大牛的博客,但越看越不知道,不知道jQuery该不该学,ES6该不该用,webpack是不是必要,React、Angular、Vue谁才是未来,NodeJS是不是能替代PHP,Python,用不用Koa,还是ExpressJS。更要命的是,你不知道是什么体现一个技术的投资价值,什么决定它们的未来,什么是迁移的时机,转换有哪些条件,实际项目到底如何考虑选型,做与不做,如何评判受益,如何管理成本。你不知道怎么考虑这些问题,你在社区里受冷落,大牛的声音一个比一个大,但你该他妈听谁的呢?天天有人说你们赶快学这个吧,那个已经过时,可老子才开始学,怎么又要换,不是说了这个版本是最新的要好好学,新版本出来了,我是不是又要推到重来。你他妈到底听还是不听?

某个时刻你觉得该听自己的,但你不知道该怎么考虑这些问题,于是你又回到原点。

你看过不少书,做很多笔记,你觉得学习就该那样,笔记,看得自己很满意,但你该把它们用到哪里去,书里的东西实际意义在哪里,知识怎么才能变成技能,技能变成你苦苦寻找的职业竞争力,职业竞争力变成你的薪资水平,你不知道这些东西怎么才能连到一起,投入的产出是什么,怎么转化,你不明白“水平”到底指的什么,自己在什么水平,你不知道自己的期望是太多还是太少。

天天有人说要打个好基础,打个好基础,但他们好基础到底是什么,什么东西算基础,什么不是基础,不是基础是什么,不是基础该怎么学,什么时候学,学到什么地步。你不知道基础和不是基础之间,到底他妈是什么关系。你听说没打好基础的,一个朋友的朋友的朋友,学了两个月,就搞了某框架,月薪现在过两万。你也听说,另一个朋友的朋友的朋友,打了基础的,进了BAT。为什么别人职位要求里不写清楚要什么基础只提框架,一面试却都问基础,为什么职位要求里说重视基础,一面试又问那个框架你熟不熟?!为什么上天这样不公!

你总算把一个项目写完了,但不知道到底写得怎么样,是好还是坏,哪里好,哪里坏,坏到什么程度,为什么坏,有什么实际影响,你该怎么改?没人跟你说,你不知道。或者,你总算把项目推上了github,写进简历,可对方的lead却说你这不规范,那不规范,不重视细节,以后再说吧。到底什么是规范,什么是好规范,哪些细节要注意,东西做了,代码写了,你还想怎样?

你发现让你最难过的不是不懂,而是你也不知道自己懂了没,懂的标准是什么,自己怎么才知道,谁能告诉你;最让你苦闷的,不是找不到东西看,而是找到看了也不知道有什么用,最让你惶恐的,不是花大把力气捣鼓,而是捣鼓的东西不上不上路。迷茫浮躁,这么下去你不知道能不能挺住,你不知道怎么不迷茫浮躁,就像一只掉进大海的狗熊,有的是力气,只是不知道该往哪里游。

你需要一个mentor,一个引导者。

我写了十几年程序,从八年前开始,没有一个项目前端低于八千行,从国内第一份工作三千块起薪,到日PV千万的全栈项目,到把自己送到太平洋另一侧,达到国内一个普通草根技术人很难达到的状态。我的经历不能复制,但我的经验可以,我确定我的经验会对你有用,不只是代码和技术,而是一个技术人的策略、直觉,这些你听起来很玄,但大部分技术人终其一生都积累不到的东西,因为他们很多并不知道更多可能性。

我们工作,存在,并没有多少选择,只能成功,每一个人都是这样,即使不认同的人,每天也做着渴望成功的事。我们做的事,相对于我们的人生,都在优化着一个成功的策略。

我能把你带成一个专业的技术人,告诉你正确的意识,错误的意识;教给你策略,学习的策略,建设自我的策略;训练你的技术能力,训练你的综合能力;培养你的直觉,技术的直觉,在这个领域成功的直觉。

这不是免费的,价格是3000人民币,微信转账,itlangren。

但是,在我承诺你之前,你要先承诺我

  1. 你一周至少有20小时以上的学习时间
  2. 你每两天必须邮件我进展和问题、想法
  3. 你不能排斥英文资料,也无需排斥中文资料
  4. 你要准备好大部分时间来写代码
  5. 你要准备好读大量的东西
  6. 你要准备好一个github或者coding.net的帐号
  7. 你要准备好和我沟通,我的学生会花半小时写好一封邮件
  8. 大部分时候,你要听我的,我让你做什么,你就去做什么,不管有多难

我的承诺:

  1. 我分配给你的时间是属于你一个人的,我开的不是班,是提供师徒关系的一个高效选项
  2. 你会得到一个Javascript核心概念的视频集合
  3. 我会具体地回复你的每一个想法、问题
  4. 我不会给你前篇一律的课程,技术是类似的,诉求是不同的,因为个人有个人的方向
  5. 我会根据你的程度精准地告诉你看什么资料有益,什么资料无益
  6. 你不用再纠结没有意义的选择,我会帮你发现适合自己的准确职业路径
  7. 你会得到求职面试的指导,各种职位的准确解读
  8. 你会得到充分的编码训练,从console的小训练到完整项目,一切都会考虑你的情况
  9. 我会review你的代码,提出重构意见,工具使用,规范要求,细节处理
  10. 我会让你做很多事,提出很多建议,我会告诉你为什么要那样
  11. 最重要的,你能找到自己的声音,不再用迷茫浮躁来描述自己,而是知道该怎么考虑评判,怎么去做

最后,你不会再需要我的指导,这是我的目标。

写一封邮件到 itlr@itlr.cc,告诉我你的目标,状态,看过,写过的东西,项目地址,以及你想说的任何事。

暂时不带女生,很抱歉。

我为什么不回你微信

我每天工作八小时。八小时后我有五个小时自由时间。

这五个小时等于400美金收入。

这就是我不回你微信的原因:我的时间上标着价格。

不是我不愿为陌生人服务,而是不太值得。

 

我尽力过,但:

你说Hi,我Hi回去,你沉默。

你说了一通,我说怎么帮你,问题是什么,你沉默。

你读完了文章,问出的仍然是“我没游过,怎么游100米”的问题。

你提出无理的请求,虽然措辞有礼。

你知道该写邮件,我提醒你具体情况写邮件,但你没写邮件,半夜一通微信,不值得回。

 

我很明白,也许可以赚到你的钱;你也得明白,我也许可以帮你。

你不是找我当朋友,我也不是追你当男女朋友,事实就是这样。

我这个人很装,也很严肃,你怎么看是你的事,我已经不在乎了。

 

组织好语言,写一封邮件,我会回。

浪人收徒告示

 

关键执行路径

关键执行路径(Critical Execution Path)。

 

现在,假设我想当美国总统,假设。

当美国总统的Critical Execution Path

  • 出生在美国
  • 参加美国大选
  • 赢得大选

不出生在美国没有资格,不参加美国大选没有机会,输掉大选还是等于零。

Critical Execution Path,成为美国总统的关键执行路径。

你属于美国哪个阶层,父母是谁,接受什么教育,收入多少,开什么车,人脉多好 … 不能说不重要。

但是,

成为美国中产或富裕阶级,选一个好娘胎,有权势的父亲,接受哈佛还是耶鲁的教育,年收入20万还是200万,认识Bob还是不认识Bob,都不属于关键执行路径。

我不是说它们不重要。

 

你现在明白了什么是关键执行路径,记住这个概念,有这个意识。

 

 

具备前端专业知识也有CEP

  • DOM API
  • JS OO概念
  • JS Functional概念
  • 异步编程技巧
  • 理解浏览器

你跳过DOM API,应用对你就是一片黑暗,你不知道页面内部发生的事情,你可以相信“有框架了,不用DOM了”,如果你以后只想做“填空”是编程,这就像一个汽车机械师只懂喷漆一样。

如果你不理解JS的OO,JS程序对你就是一片黑暗,你看不懂设计,也学不会JS程序设计,你会成为一个敲键盘的。

如果你不理解Functional的概念,你用不会异步,照猫画虎会了最终也还是不会。

如果你不理解浏览器,你就不懂平台,平台如何支撑技术,平台和技术如何共同支撑应用,你不懂用户面,你也驾驭不了基本工作流。

你可以用过几百个类库,功能实现几百遍,但你还是不知道前端编程是什么。

你可以看Javascript权威指南,看每一个字,每一页都重要,有的还很有趣,酷炫。

重要和有趣,都不是关键执行路径。

 

 

具备专业Javascript编程能力的CEP

  • 写Javascript程序
  • 碰到编程问题
  • 解决问题
  • 写下一个Javascript程序

你可以看很多书,看很多视频,觉得自己很用功,地铁上刷公众号,买课程,半夜睡不着想,我知道这些都重要,有用。

但重要有用,不是关键执行路径。

如果你不写Javascript程序,书看再多,视频看得再让你茅塞顿开,公众号再让你受启发,想得再全面透彻,最终都没意义。

因为你没执行那个关键执行路径。

 

 

成为职业前端开发的CEP

  • 获得面试机会
  • 通过面试
  • 开始工作

项目可以写很多,学得可以很好,自我感觉可以很良好,但没有工作,等于零,你还不是职业前端开发。

学五种编程语言,但没有一种能给你工作,等于零。学三个框架,没工作,等于零。参与开源项目注释,commit几千行,没工作,等于零。写很多文章,粉丝上万,没工作,等于零。

学好不等于找到工作,找到工作等于找到工作。

 

 

成为专业前端开发的CEP

  • “设计”程序而不是“写”程序
  • 碰到设计问题,架构问题
  • 解决设计问题,架构问题
  • “设计”下一个程序

你可以写十年Javascript,但仍然不知道Javascript程序“设计”是什么,前端架构是什么。

你可以会三个框架,公司里写过十个项目,你还是不知道程序“设计”是什么,框架用得溜,很好。

但专业前端不是只框架用得好,你我都知道。

用得好,是高级用户,“设计”,“设计”得好才是关键执行路径。

不会设计,何谈“专业”。

 

 

特斯拉说过“现在的人们想如何极力思考得深,却忘记了如何思考得清楚(thinking clearly)”

我喜欢CEP,因为它是“clarity”,它不是“importance”,不是“level of interest”,它是不容置疑的“clarity”。

思考清楚,就不需要过多思考,思考不清楚,就恐惧贪婪,因为觉得成功就是“必须做一切”。

恐惧贪婪驱动,而非清晰策略驱动的人,都说自己“很努力,很上进”,但还是觉得“很失败”。

 

Critical Execution Path,记住这个概念,有这个意识。

我是怎么选人的

人要自己选,我有教训。

我记得第一次做领队,队里原本五个哥们,因为工作卖力,我当了领队,结果不好。

队里每个人都有用,都不专业,我也一样,程度不同而已。

第二次做领队,新创公司,进去做领队,第一项工作就是招聘,八个人都是我选的,结果好,披荆斩棘,让一个虚弱的公司活了下来。

我招的人有专业,也有不专业,但都是我选的。

那时候开始,我就有这个感觉,如果有机会去带人做事,有条件,人要自己选,这样最好。

 

看到公告的小孩微信联系我,问有没有名额,我都说看人。

你也许觉得“给你钱你还装”,不是的。人和人不一样,我想我是年龄大了,能说出来人和人哪里不一样。

 

我在公告里说,人活着就是要成功,别无选择,你骗自己平凡是真也行,但你的心总有一部分会想成功,如果不这样人类社会一定会腐朽的。

没哪怕一点点小小的成功,我觉得你也不会明白什么是“平凡”。

所以,我想选出最有可能成功的小孩,赚他们的钱,给他们时间,教给他们我有限的经验。

你想象一下如果你将来自己做了某个公司的领导,你愿意给谁机会?愿意提拔怎样的人?

好好想一想,假设现在有一个重要任务,从你的眼中看到的谁是当值的,你想用的,用得放心的?

 

我能说出很多来,其实你想的和我想的,不会有什么不同。

有勇气的,但也重视细节的,有追求的,不随随便便的,有条理的,不马马虎虎的,有精神的,不用牺牲,但要会奉献,能自我管理的,不会碰到问题自暴自弃,有恒心的,不用坚持也能把事业做下去,能学习的,自我更新与时俱进的人。

简单地说,是有“领导能力的”,他有领导能力,既能领导好自己,也能带好别人,我作为领导,就不用领导了,只要开几个没用的会,显示下存在感就行,这就是我想要的,我和所有人类一样,都很懒。

 

你和我的交流,不是从微信开始的,而是你给我写的第一封邮件。

有的小孩期望我从微信给他们个所以然来,微信是方便自己,但未必方便别人,如果小孩习惯了方便自己,没有让别人更方便的意识,我认为可以说明两点,第一,缺乏耐心,第二,不习惯条理。

如果你第一封邮件给我发几个字,语言都没有组织好,扔给我“看看”,我还是认为你没有耐心,不会有条理,你很急。我从不认为你们中谁会没有时间,你们的时间有的是,比我的时间多。

如果你连一封小小的邮件,介绍你自己的情况都懒得写,都觉得强人所难,你就没有机会了。我不是说我这里的机会,我是说你以后的各种机会,你得学会付出点时间,先方便别人,别人才会来方便你。

所以,请写好第一封“邮件”,你能学到的第一课,就是怎么把邮件写好,让自己的态度和价值观让对方看到,你可以再好,但别人看不到,有什么用?

虽然我一口一个小孩,小孩,但你已经是大人了,别人再没有义务教你怎么有勇气,怎么认真,怎么有条理,怎么把事情做下去,怎么得到机会,这都是你自己的事了,如果你二十来岁还没有准备好,人生的很多高质量的机会,可能就不属于你。

一个真不耐心的人,是教不了的,你以后可以去试试,会明白我的意思。我的培训不是把榴莲教成苹果(这不是我的责任),而是把竹笋教成竹子。

 

有时候我会看一看你的github,你的网站,你做过的东西,问一问你看过的书,用过的工具,了解你的兴趣在哪里,每个人都不同,哪怕都想做前端,做全栈,做后台,也还是不同。

我寻找的不是你技术有多好还是多坏,而是寻找蛛丝马迹,你的每一块代码的处理,都多少体现一点你这个人。你以后到了我这个年龄,能明白我在说什么。

只有做过事的人,才能提出好的问题来,我是相信好问题和坏问题的,区别在哪里?

如果你水都没碰过,就问“老师,我怎么游完100米”,这就是一个坏问题,不是我回答不了,而是回答了也没意义,我回答了,你还是从下水开始。如果你游了很久才游过10米,问“老师,我怎么都游不过10米,游着游着就沉了”,我会告诉你“这样来呼吸,不要动得太多太有力,动的节奏才是关键”,然后你去练,练着练着,就不知不觉游五十米了,这有意义。

你做过事,来找人指导你,即说明你做这件事充分的意愿,也证明了你的能力。这个世界上是有蠢人的,蠢人做白日梦,不做事,白日梦做不下去拉个人和他一起做,蠢人不理解学会一件事的正常途径是什么,蠢人有很多梦,很多假设,就是忽略正确的道路。“明白”做不好事怎么去提升,是一种战略自觉,是你的能力。

 

还有两个问题,让我警觉。

一个是问:“要多久,两个礼拜行不行?” 我跟他说你的情况可能要长得多,也许六个月,在保证每天训练的前提下。

一个是问:“你打算教哪些课程,怎么教?” 我一般会说个大概,但我知道这也许没有任何意义,如果我告诉你,我的培训没有任何课纲,你会不会觉得我水的很?

 

第一个问题,我确实没有把你两个礼拜(甚至两个月)教成,然后保证你职场不败的那个水平,我觉得如果我们能每天见面,我手把手教你写代码,做设计,也许有可能,前提还是我走了以后,你没有去打游戏,而是花两倍的时间在琢磨我当天教你的东西,否则我认为没戏。

为什么?因为编程是很复杂的,非常抽象的概念,非常多的细节,非常麻烦的排错过程(哪怕借助现代工具),还有非常难得来的正反馈,非常多的负反馈,非常难形成的肌肉记忆。

这可能是人类智力活动中最有动态复杂度和细节复杂度的活动。

而且这个假设是无法成立的,我在十二个小时之外。

所以碰到特别有时间观念的小孩(他们还经常问:X是不是过时了),我特别谨慎。阳春面和大火锅是吃不到一起的。

所以你想我给你个时间承诺的,我会非常谨慎,我对编程这件事的理解,和你不一样。

 

 

第二个问题。

你可能怀疑我懒,忽悠你交了钱,把你放羊。

我知道我有各种劣迹,但不是个懒人。偶尔会有回邮件不及时,这是事实,但这偶尔里有很多是我故意的,我故意不回你,是让你充分折磨自己,折磨完了你居然发现自己就把问题解决了。

那是我想告诉你的,告诉你什么,你自己心里明白。

你可能习惯了被当鸭子来填,我没想把你当鸭子,是因为我观察了一个同事的高中小孩,她的老师就是这么教她的,所以你享受的是美国式的启发式教育:)我不是要标榜美国,但我认为这个教法对,好。

我知道这个方式老师显得很懒,你自己会很苦,但学东西的是你,你打算老师很苦,你自己很懒,那你还学什么?不纠结,不反复,不发现错误,自己不出方案,自己不解决问题,搞了半天“你”得到了什么?

我不相信课纲,其实我看过国内培训机构的课纲,内容不少,今天我们学这个,然后学这个,然后学那个,最后毕设,大家放假。清单排得很清楚,完美,但不“有机”。

但“为什么”呢?为什么要学这个和那个,为什么这样学这个或那个,为什么不那样?万一那样又怎么样?如果那样又怎样?

我希望我的教法并不是给你知识,知识是你可以找到的,也应该你自己去找到。我告诉你去找,可以去哪里找,找到了给我看,我再告诉你找什么,可以去哪里找,找到了再给我看,找错了就让你再找,哪里不对,可以如何,有没有标准答案,找到了就夸夸你,检验你,让你不停下来(因为有太多自学的人停了下来,他们觉得太累),这就是我的教法。

我到现在,用了大概半年的时间,分次带了16个学生,有2个中间不跟我玩了,有2个在这个过程中找到了实习,有1个转行做第一份程序员工作,4个换编程工作,3个在准备换工作,其他的还在大学低年级,憧憬着毕业和不确定的未来。

我说这个,不是要说你看我带了很多人了,也有好结果,你乖乖交钱吧。

我是想告诉你,人的处境可以十分不同,环境,心态,认识,观念,短期需求,长期需求,兴趣 … 可以非常不同。

有什么固定的方法能适合他们所有人呢?有人问我做着PHP,想转前端,我告诉他做实PHP,暂时不谋前端,有机会就用JS,但不是重点,这也是我早几年的经历,你没有那么多时间和精力。有人学过大半年写了JS项目,有人CSS还不会写,怎么用同样的过程?

所以,你们每一个人都会从稍有不同的地方开始,学习的过程不可能一致,我所能希望的,是你们所有人都能到达满意的终点。

我的满意,是你真正理解了编程是什么,要经历什么,我帮你扫除了怀疑,畏惧,懈怠,你真的能自己往前走了。

如果你一定要一个成文的教法给你,我会很谨慎,确实给不了,也不是我想给的。

 

 

人和人为什么会有发展的区别?我有意无意观察了快35年,现在的结论是“价值观不同”。

我不展开了,就说到这里。