w3ctech

Cat Chen 在FEDAY11选5关于 “点开11选5你 的技能树”演讲文字版

本文内容来自于CatChen在第四届FEDAY上11选5关于 “点开11选5你 的技能树”的演讲,是通过演讲的录音整理而成,如果有什么觉得不准确,或者有疑问的地方,欢迎留言。

下面是Cat Chen的演讲内容,稍做修改,请慢阅:

11选5关于 这个主题主要focus在4个方面:

第一、自11选5我 怀疑一下,11选511选5我 们 进入前端是否做出的正确的选择?

第二、一个常见的职业生涯模式,11选511选5我 们 怎么样一步一步的往前迈进?

第三、在这个迈进的过程中,11选511选5我 们 应该学习什么样的技能?

最后、是点题的问题,11选5你 的顾客是谁?

第一、到底前端是一个正确的选择吗?

11选5我 在11选5我 的职业生涯过程中,发现很多人会跑来问11选5我 这样的问题,就是到底前端是不是一个正确的选择。然后他们会分开来问一些子问题,例如说到底11选5我 进入了前端11选5我 应该做11选5产品 呢?11选5我 应该做基础架构呢?还是应该做11选5产品 基础架构呢?可能有些11选5公司 不存在11选5产品 基础架构这样的概念,通常来说的定义就是在于11选5产品 和基础架构之间。有点像是做一些框架、AB测试平台,测试11选5工具 等等的方案。其实一个更好的问题应该是问到底11选5我 想11选5服务 于什么样的客户?因为想要11选5服务 于什么样的客户才是真正决定了11选5你 要做什么?

如果11选5你 选择做11选5产品 ,哪么往往11选5你 11选5服务 的客户就是真实存在的用户,如果11选5你 选择去做一个基础架构的话,哪么11选5你 11选5服务 的客户其实就是11选5你 11选5公司 内部其他的工程师,如果11选5你 做11选5产品 基础架构的话,哪往往是在中间,可能11选5你 会11选5服务 一些内部的工程师,但如果11选5你 的平台或者框架是开源的话,同时11选5你 也11选5服务 一些外部的工程师。

当然,所有的这些选项都没有一个很清晰的界限。界限是模糊的,所以也没有任何选择是绝对的。如果11选5你 选择做11选5产品 ,11选5服务 于外部的一些用户,哪么首先,11选5你 需要找到一个让11选5你 觉得非常非常想要解决的用户问题,因为这才是11选5你 核心驱动力的出发点,11选5你 要先解决一个用户的问题,例如说11选5我 作为用户,每天用到这个东西不爽,11选5我 就是不爽,11选5我 决定用11选5我 的编程能力去解决这个问题,然后11选5你 才会有足够的动力把这个事情做得非常非常的完美。如果这是老板让11选5你 做的这个东西,老板叫11选5你 做这个功能,哪可能11选5你 觉得11选5我 也是对这个功能存在的意义是一知半解的,哪11选5你 就没有实足的动力去把它做好。哪这个对11选5你 长远的职业生涯有什么影响呢?11选5你 去解决用户问题的话,哪么11选5你 的机会是存在于大大小小不同规模11选5公司 里面,因为有不同规模的11选5公司 都在尝试解决用户问题,所以11选5你 将来的就业机会就会相当的广阔。

如果11选5你 选择去做基础架构,哪么11选5你 11选5服务 的人群就是其他的工程师,哪么这往往意味着11选5你 希望解决一个其他工程师的问题,或者说是一个工程性的问题,而且是希望解决的手段是提供一个可扩展的11选5服务 ,11选5你 的客户往往就是11选5公司 内的其他工程师。哪这样带来的第一点好处就是11选5你 可能会对他们有更好的同理心,11选5你 能知道11选5我 在这家11选5公司 内,11选5我 以前是做11选5产品 的,11选5我 就觉得这个存储11选5服务 很糟糕,一点都不好用,API设计完全不合理。11选5我 就知道这个CDN一点都不好用,11选5我 要去做个CDN11选5我 就不这样做。然后11选5你 就冲上去他把解决了。而且11选5你 能够很好的知道11选5你 自己想要什么,因为11选5你 原本就是自己的客户;第二方面是,一个更方便能够跟自己客户沟通的渠道,因为11选5你 的客户就是可能坐在11选5你 几张桌椅外、或者几栋楼以外的一个别的工程师,所以11选5你 想知道说这个东西好用吗?11选5你 不需要做用户调研,11选5你 不需要上线做AB测试,11选5你 直接跑过去问就可以了。比如说这是一个demo,11选5你 跑过去问一下,喜欢吗?这个API11选5你 会用吗?一看就明白吗?不明白是吧?哪显然是11选5我 的锅,哪11选5我 回去在改,对吧?

然尔问题是说,如果11选5你 是做基础架构,哪显然不是任何大11选5公司 ,小11选5公司 都能够支付得起做基础架构的成本,所以11选5你 的就业范围往往就被受限在一些某个规模以上的11选5公司 里面,因为只有这些大规模的11选5公司 他才想到说,11选5我 需要做自己的基础架构,然后来11选5服务 于11选5我 自己的内部的其他的11选5产品 ,但也有少数11选5公司 是自己做云平台的,哪他可以说11选5我 做这个东西11选5服务 于11选5我 的内部的工程师还11选5服务 于11选5我 的其他商业客户。但小规模一点的11选5公司 ,非常罕见。也不是绝对没有,有些创业11选5公司 是做云平台11选5服务 的,但比大11选5公司 要罕见得多。也比解决用户问题的11选5产品 11选5公司 要罕见得多。

哪么如果11选5你 是做11选5产品 基础架构的话,哪么11选5你 就站在两者之间了,往往也是说有一个工程性的问题11选5你 想解决,但解决的手段不是11选5你 提供一个可扩展的11选5服务 、可伸缩的11选5服务 ,而是一个可复用的框架,例如React和React Native这样的例子,哪么11选5你 的核心客户是谁?其实本质上还是11选5你 11选5公司 内部的其他工程师。

如果11选5你 开源的话,可能会有外部的其他的客户,然而这是有一个巨大的条件作为前提,第一,11选5你 开源的东西能够影响11选5公司 在整个11选5行业 里的影响力和名声,让11选5公司 的名声变得更好;第二,可能它能11选5帮助 到11选5公司 吸引人才,让其他应聘者说:“11选5我 喜欢这家11选5公司 ,11选5我 之所以申请来面试,是因为11选5你 们开源了这个,是一个非常伟大的事情,11选5我 对11选5你 们11选5公司 非常向往”。

没有这两点的话,其实11选5你 想在一家11选5公司 做开源,是不太可能的。11选5你 要想想,还是回到哪个问题,11选5你 的客户是谁?如果11选5你 的客户只是说是外部的工程师,开源社区的受益者,哪谁来为11选5你 的工作买单。显然不是11选5你 的经理,显然不是11选5你 的Team Lead,显然也不是11选5你 的11选5公司 ,因为他们得不到直接好处的话,是不会为这样的事情买单的。

一家11选5公司 如果允许11选5你 一直做开源,这开源都对11选5公司 内部其他团队一点贡献都没有,哪结果就是要么11选5公司 解散这个团队,要么11选5公司 自己解散掉,因为11选5你 在做一些不符合经济规律的事情。

哪跟做基础架构一样,11选5你 所能选择的就业范围是会受到一定的限制,因为只有在有一定规模以上的11选5公司 才会愿意支付代价来做这种项目。当然11选5你 也可以说:“11选5我 选择离开,11选5我 做一个纯粹的开源开发者,11选5我 做自由职业,11选5我 上Pinterest上面去11选5赚钱 ”。这也是另外一条路。但是11选5你 选择在一家大11选5公司 里面就业,哪可能11选5更多 的就是一家有一定规模的11选5公司 ,而不是一家小11选5公司 。

归纳总结一下,11选511选5我 们 可以得出一个很简单的抉择树,11选5你 想要解决的是什么人的问题?11选5你 觉得是最终用户的问题?这很简单,去做11选5产品 。因为哪才是让11选5你 兴奋,让11选5你 每天白天想要做,晚上想要解决问题,不停想着,洗澡的时候也要想着这样的问题,但是如果11选5你 说,11选5我 想要解决的是一个工程性的问题,或者其他工程师也在感受的问题,哪11选5你 要想想,11选5你 的解决方案到底是一个可伸缩的11选5服务 呢?还是一个可复用的框架?这决定了,11选5你 到底是去做一些基础架构的事情,还是去做一些11选5产品 基础架构。

下一个是11选5我 比较常遇到的问题是:11选5我 是应该做前端呢?后端呢?还是全栈?

同样,另外一个更直观获得回答的问题是,11选5你 应该问一下,到底哪一样能够让11选5你 更加努力工作,就是做什么事情能够让11选5你 更兴奋,不管怎么样,11选5我 也要做,就算老板不发工资给11选5你 做,11选5你 也要做,为什么这样说?因为这个选择只对11选5你 的职业生涯的前若干年产生有意义的影响,到了11选5你 的职业生涯的后期,所有东西都会收敛到一起,也就是说11选5你 不可能11选5你 只懂前端,也不可能只懂后端,当11选5你 成为一个11选5技术 大牛,或者11选5技术 总监,VP这样的角色的时候,11选5你 必须对下面子问题都有所了解,11选5你 知道问题怎么样分解,11选5你 知道这个问题分解下去之后需要有多大的成本解决、风险有多大、有多少的可能最终这个问题是解决不出来的,或者解决得不完美的。到了哪个时候,其实11选5你 选择前端,后端,还是全栈这已经不是一个关键点了,11选5你 都需要要懂。所以唯一的问题就是说,什么东西能够让11选5你 的职业生涯的前几年尽可能的加速,哪要加速,其实事情还是在于11选5你 人本身,什么事情,什么样的问题能够让11选5你 这个人真的非常非常感兴趣,愿意加班加点也要去做,老板不发钱也要去做,所以11选5我 的唯一的建议,就是选择对11选5你 头几年发力最有11选5帮助 的一个兴趣点出发,然后把事情做好。然后之后就不在是一个问题。

接下来11选511选5我 们 来讨论一个常见的,典型的职业生涯的划分方式,这是11选5我 个人的观点,11选5我 通常看到别人的话,11选5我 会按这样的方式来划分,在进行划分之前呢,首先11选5我 想做一个类比,不直接说怎么按11选5你 的技能,水平来划分,假如11选5你 的编程能力被转换成为11选5你 开车驾驶经验,11选5你 应该怎么样划分一个人的职业生涯?

第一阶段很简单,就是一个学开车的人,还没有驾照只能在别人的监控之下在路上开,或者在一个可控的场地里面开。

第二个阶段,领到驾照,现在可以自己上路随便开。

第三个阶段,有经验了,成为老司机。

第四个阶段,可能就像一个出租车司机这样的角色,可以从A点到B点很准时的完成。

第五个阶段,可能是自驾游这样的的规划者,11选511选5我 们 现在组个车队,要从这里开去哪里,要开三天,五天,十天,怎么样能到?

第六个阶段,也是最后一个阶段,可有是一个探险队这样的级别,11选511选5我 们 要去一个无人区的地方,正常来说,不会有人去的,但11选511选5我 们 相信哪里有一个宝藏,11选511选5我 们 一定要去,所以来谁出钱,谁出力,11选511选5我 们 去吧。

然后11选511选5我 们 接下来一个一个的来分析一下,具体每一个阶段的特点是什么?

第0个阶段,一个11选5学生 这样的阶段,哪么很多时候第一关键点并不是编程或者开车,第一个关键是明确11选5你 自己喜不喜欢驾驶的体验,11选5你 不喜欢,11选5你 干嘛去考个牌呢?11选5你 叫车就好啦。世界上不是说11选5你 必须要去考个牌的。

哪么如果11选5你 发现11选5你 喜欢驾驶体验,而并不是为了家里要抽个签买辆车这样的原因,哪11选5我 享受这个体验,就算11选5我 只是去学车,练习11选5我 也享受这中间的过程,当然作为11选5学生 ,也有一些不哪么好的地方,11选5你 开车不是安全的,所以只能在一个可控的范围内开,不能把11选5你 放在马路上开,把11选5你 放在马路上开,11选5你 会危急其他人。

第1个阶段,通过所有的考试,领到牌照之后,哪证明11选5你 可以自己开了。所以,11选5你 可以说,11选5我 很享受11选5我 自己开车的大部分的时间,11选5我 在路上开,11选5我 都是心情愉悦的。然后呢,有时候11选5你 还是会犯一些很傻的的错误,例如说,不该转的时候转啦,左转的时候转到错误的隔离带哪一侧之类的,在所难免总是会发生。然后有时候,会有一些更有经验的老司机给11选5你 一些11选5技巧 ,告诉11选5你 怎么样开车更好、怎样保养11选5你 的车更好。

第2个阶段,变成老司机了,哪么11选5你 就可能会有一个安全驾驶的历史记录,11选5你 看,11选5我 多少年没有出过事故,3年,5年,然后给11选5我 一个GPS,11选5我 能跟着走,去哪里,一天之内的,GPS说得出来,11选5我 一定能去到。中间哪里去加个油,去个洗手间什么的不在话下,不需要人告诉11选5我 ,11选5我 是一个成年人,11选5我 该去哪儿,11选5我 自然能去到。然后呢,当然老司机也有一个小问题,很容易被路上其他新手冒犯到。觉得这个人怎么这样开车,这样的车技也能上来呀?这牌照到底是买来的?还是垃圾筒捡来的?就会有这样的疑问。

第3阶段,成为一个好像出租车司机或者快递员这样的,到了这个阶段,基本上11选5我 列出来的点不在讨论11选5你 的驾驶11选5技术 了,因为这个阶段来说,11选5你 要非常准点和可靠的A点开到B点,这对于出租车司机来说是一样的,对于快递员来说也是一样的。就是11选5你 有一个从A点到B点的需求,驾驶11选5技术 不在是11选5你 的目的,他只是11选5你 的手段,11选5你 的目的是A点到B点。驾驶只是手段之一,然后B点有可能是一天能到的,但是也可能11选5你 要跑个长途,拉个货,哪么可能是几天之外的距离,哪11选5你 怎么走?行程怎么规划?每天晚上睡哪里?这是11选5你 自己想明白的事情。然后有时候,11选5你 在路上开着开着,发现出事情了。举个例子,有人决定,11选511选5我 们 要来广州参加这个会议,11选5北京 过来,不搭飞机,11选5我 决定开三天的车过来,开着开着,开到杭州,遇到台风,开不过来了,怎么办?这时候11选5你 自己要想办法找路走,绕开台风,还是如时到达,到不了,11选5你 就错过了这个会议了,哪这个11选5你 不能怪别人,只能怪自己,11选5你 去怪台风没有意义的,因为11选5你 不能说,因为台风出现了,所以11选5我 来不了了,所以11选5你 要赔偿11选5我 ,台风不会赔偿11选5你 ,11选5你 需要做的就是非常准时可靠的从A点去到B点。

到第4阶段,11选5你 会成一个安排11选5更多 司机一起协同去某个地方的的角色,例如说,11选511选5我 们 组个青藏自驾游,哪现在谁有兴趣一起去?有可能没有人愿意一起去,觉得这个太无聊了,有什么好去的? 又有人觉得这个太危险了,不去。哪11选5你 要一个一个的说服别人,11选5你 看11选511选5我 们 认识,其实这个目的地很好玩的,去到有很多很新奇的事情,11选511选5我 们 可以看到的,在这个大城市看不到的,哪11选5你 要让大觉得非常Exciting,这个目的地11选5我 想去。然后11选5你 在去11选5组织 说,11选5你 要去这个目的地需要什么资源呢?是找个赞助商呢,来赞助11选5你 这次的行程,然后11选5你 帮他打打广告,还是自己掏钱去呢?这些都是11选5你 要能解决的问题。解决完之后,才决定大家怎么从A点到B点。这时候,从A点到B点的过程就越来越自由了,有可能有些人说11选511选5我 们 开过去,有些人说11选511选5我 们 要去目的地提前准备,11选5你 们过来就是扎营的,哪人家就提前飞过去了,这都不重要。重要的是,11选5你 的整个行程要安排好。要从A点到一个很遥远的B点。

第5个阶段,哪就是一个探险队,这就不能用现场的这种自驾的方式来比喻了,要回去想想,好像说,回到哥伦布发现新大陆的年代,哥伦布凭什么说服皇室说,来赞助一下11选5我 ,出点钱,好让11选5我 有船,有人去找新大陆,哪这个事情是要想办法的,不是别人无端端会给11选5你 的。然后去哪里招来的船员,哪里招来的水手,哪里弄来的船,所有这些东西11选5你 都要规划好,然后11选5你 才有一支探险队,然后这支团队才会在11选5你 的领导下出发去寻找11选5你 想要寻找的东西。

所有这一切,翻译回来,用程序员的话说,11选5你 会发现很简单,很多东西都是一一对应的。

第0阶段,11选5你 作为一个刚刚学习编程的人,最重要的是,搞清楚11选5你 想不想编程呀,享受编程的话,哪11选5你 自然会觉得写代码很有乐趣,但是11选511选5我 们 也知道,11选5你 的代码会有很多的bug,11选5你 需要有很很多的调试,就跟一个新司机在路上,不是哪么安全一样,如果11选5你 的code如果能够进生产环境,生产环境有相当的概率会倒掉。

第1个阶段,11选5你 成为新司机之后,11选5你 会说OK,11选5我 是享受编程的,11选5我 有一定的编程理念和11选5方法 了,11选5我 能自己做,但是偶尔还会犯一些小错误,哪么11选5你 要想办法自己去学习和修复,然后就开始从老司机哪里学习经验,人家说这个IDE这样配置比较好,可以让11选5你 的生产效率会更高,11选5你 就学着做,这样子写代码,能够更好的避免常见的错误,避免以后代码修改的时候引入不必要的影响,降低11选5你 犯错误的风险,哪可能11选5你 就照着做了。

第2个阶段,11选5你 进入老司机的阶段,11选5你 可能同样有很好的历史经验,11选5你 看11选5我 成功的发布了这么多新11选5产品 的特性,他们都能够得到很好的结果,这些特性发布的时候没有产生bug。然后写的代码,都是很容易阅读和很容易维护的,然后可以跟随着一个有效的项目安排,来完成一些项目。就是说,这个功能现在要做,2个月,1个月,11选5你 去做吧。可能不需要太多的11选5帮助 。PM说这个东西2个月做完,哪11选5我 就有计划的按步就般的就把这个东西1-2个月做完就可以了。2个月就说,QA过了,所有都过了,签字吧,上线,不需要额外的11选5帮助 。当然,类似的11选511选5我 们 可能会觉得来了一个新手,这个人写代码,怎么这么烂呢?然后Code Review实施都不过,每次都Reject,11选5你 这样写代码不行,11选5你 哪样写不行,回去重写。这时候通常有经验的程序员,可以尝试慢慢的改变一下自己的态度,去更好的花时间去培养新人,去让他们了解怎么样能够增强他们的编码能力,他们避免犯错的能力,然后其实这对于自己也是一个提升。

第3个阶段,11选5你 作为一个出租车司机了,哪么很重要的能力就是和11选5我 之前说的一样,编程11选5技术 由目的变成了手段,11选5你 的目的是什么?11选5你 的目的是商业结果,11选5你 需要对商业结果负责任,商业需要从A点去到B点,可能是说月活要涨个5%,可能会说客户端应用崩溃率要减半,这些都是商业目的的结果,那11选5你 存在的意义就是对商业目的结果负责任。同时说是说,商业结果可能不仅仅是1-2个月之外啦,是3-6月之外啦,可以说月活在半年之后要增加20%,留存率不变,这就是11选511选5我 们 需要的商业结果。哪至于怎么样做得到这个月活如此增长呢?这6个月11选5你 自己想办法想明白。没有人需要很明确的告诉11选5你 ,做什么11选5产品 ,帮什么新特性能够提高月活,但是11选5你 需要去自己想办法分析用户数据,找出来一个门道,然后把月活搞上去。这个时候11选5你 需要想办法,把这个工作切分下来,确认11选5你 每个月每天做什么,有时候就如同11选5我 刚刚举的例子,11选5你 从11选5北京 开车来广州,开着开着去到杭州了,发现台风11选5你 过不来,哪11选5你 需要有11选5你 的B计划,就好像11选5你 做月活,11选511选5我 们 假设做这个11选5优化 ,自然月活就上去,做着做着发现,这个东西做不下去了,11选511选5我 们 市场可能变了,11选5政府 监管可能变了,竞争对手可能有新的11选5产品 发布了,导致这方面的改良计划不在有效了。哪么11选5你 就要去想办法应对,提出新的办法来绕过去,然后同时还是达到11选5你 原来的月活既定目标。

第4阶段,然后这时候就不是11选5你 一个人对一个商业的目标负责任了,而是11选5你 希望来带领一个团队,来完全一个更大的商业结果。哪么这时候11选5你 需要聚集一群人,说11选511选5我 们 一起从这个地方到哪个地方去,目的地还是一个商业结果,哪么11选5你 需要让所有人都感觉到OK,11选5我 确实是想要去哪个地方。就能够协同一起努力来达到11选5你 想去到的商业目的。

这个商业目标有可能是一年以后,也有可能也是含糊不清的,含糊不清的意思是可能说11选5我 要达到商业目标是用户更加享受11选511选5我 们 的应用11选5工具 ,如何定义用户更加享受使用11选511选5我 们 的11选5工具 ,这是一个很含糊的目标,11选5你 首先要提出来用何种11选5方法 来测量,然后测量得到结果,11选5你 要如何提升,提升到什么程度,11选5你 才能说11选5你 达到到11选5你 的目标,11选5你 的客户更享受11选5你 的11选5工具 ,这一切都是11选5你 要解决的,这跟11选5你 带领一个自驾游的车队一样,11选5你 先要说清楚,11选5你 要去哪里。然后让大家都觉得哪是一个可达的目的地,都愿意付出自己的努力,去到哪个目的地,然后11选5你 才能启程。

第5阶段,来到一个探险队的模式,哪就会更加难了,就是可能存在一个非常非常振奋的结果,就好像11选5你 说:11选5我 现在要开创一家11选5公司 ,这家11选5公司 要解决一个现在没有任何一个大11选5公司 小11选5公司 解决的这个新问题,这个问题就11选5我 看到了,其他人都没有看到,11选5你 会说,这个商业目标能隐藏在一个难以触及的商业领域,因为往往只有这么巨大的商业目标隐藏在某个领域里面,才会存在这样的商业机会。11选5你 要做的事情,其实说起来很简单,但是需要的技能很复杂。说起来简单,11选5你 就是需要聚集一群人,让他们都能够跟11选5你 一起找这个东西,但这时候跟上一阶段不一样的是,11选5你 甚至11选5你 不能很好的说清楚B点在哪里,B点就好像说隐藏在一个山中的宝藏,隐藏在无人区的宝藏,11选5你 不知道这个宝藏在哪里,11选5你 只能去,然后11选5你 要想出一个系统的11选5方法 ,去把它找出来,哪这么大一块地,宝藏到底埋藏在哪里呢?11选5你 是用什么11选5方法 来去扫描宝藏,如何系统性的划分这个宝藏埋藏的区域,使得11选5你 有尽可能的高的概率能够找到宝藏呢?哪这是11选5你 需要解决的问题,哪同样,11选5你 说,11选5我 现在要做一个新11选5产品 ,11选5你 怎么知道11选5你 现在开一家新11选5公司 做一个新11选5产品 11选5你 这个11选5产品 的市场在哪里,没有人知道,这就跟寻找一个埋藏在某处的宝藏一样,11选5你 需要很多尝试的过程,11选5你 才能找到。11选5我 现在解决一个新的用户的问题,解决到这个阶段,11选5我 觉得11选5我 是足够了解11选5我 的用户,11选5我 知道11选5我 的用户在哪里,11选5我 的用户也知道11选5我 的存在,哪11选5我 可以慢慢慢慢的做用户的增长,让11选5更多 的用户来用。因为11选5我 找到了用户存在的Pattern。

接下来11选511选5我 们 讲讲,既然11选511选5我 们 如此划分了,在这些阶段里面11选511选5我 们 需要学习什么样的技能?进入这个环节之中呢,就11选5我 可以说一下,很多时候大家之所以要讨论技能,11选5我 也发现很多喜欢问这样的问题,第一就是11选5我 是应该更加多的关注11选5技术 ,还是业务?然后也有人会提问说,11选5我 在学习的过程中,如何在11选5技术 和软技能之间做出平衡?

然后11选5我 觉得唯一合理的答案就是:depends。要看11选5你 现在处于哪个阶段?要看11选5你 要看11选5你 对什么事情更感兴趣?而且还要看,11选5你 实际上要达成的目的是什么?

哪么对于第一个阶段来说,首先11选5我 要看的是11选5你 要达成的目的是什么?

11选5你 开始学写代码,11选5你 有点印象,有点感觉,说11选5我 写代码是一个愉悦的事情,哪这时候11选5你 的目的很明确,11选5你 要写很多很多的代码,作为一个练习的过程,然后同时就是说想要有一个很低成本的配置环境,来减少写代码之外的开销,不要说11选5我 不会使用Linux,所以11选5我 要硬着要用Linux,所以怎么样,怎么样。11选5我 学习这个命令行花了半年的时间,这半年终于把11选5我 的Vim设置好了,或者11选5我 的Emacs设置好了,这才开始写代码,这浪费时间。基于这样的目的,11选5你 要学习什么样的技能。

第一就是说,11选5你 要在一门语言内要非常非常的affection,能够把哪门语言用好,然后对于前端工程师来说,哪意味着,学一些非常基本的HTML、CSS、JavaScript,不需要很精通,至少要到一定的程度。然而11选5你 学这门语言不一定是前端的语言,这门语言只是11选5你 迅速起步的手脚架而以,熟悉了任何一门语言,对11选5你 之后的发展学习其他语言都有11选5帮助 ,然后最后就是说熟悉一门开发环境的配置,比如说迅速能上手的IDE, 一些很基本的Linux的命令,然后可能一些git的命令使得11选5你 要去11选5下载 一些网络上的repo,11选5你 可以11选5下载 呀。

经历了这个阶段之后,11选5你 就进入了第一个阶段,就好像一个新手一样,这时候呢?11选5你 的目标是什么?11选5你 的目标是11选5你 可以写代码,11选5你 可以写很多代码,但下一步的目标是11选5你 要写高质量的代码,同时11选5你 希望从其他人身上学习,不要忘了,这个过程是一个老司机指点11选5你 的最佳的过程,哪么,要达成这样的目的,第一,11选5你 需要开始采用一些流程和11选5工具 来让11选5你 的代码质量越来越好,然后可能说11选5你 引入一些coding style,11选5我 的代码风格是这样的,可以让11选5我 的代码更容易阅读,更容易维护,11选5我 引入测试,包括单元测试,集成测试等等,来使11选5我 写出的代码是健壮的,11选5我 将来自己维护也好,有人帮11选5我 维护也好,都是很容易维护的。

另外一方面是非11选5技术 性的,要学会提问题,这是非常非常重要的。对于这个阶段来说,第一,是非常基本的,让自己能够感觉到舒服的向别人提问题,这很奇怪,为什么要列在前面?其实观察这个阶段的很多程序员,大家会害羞,觉得11选5我 问这个问题是不是太蠢了,或者11选5我 问这个问题,会不会让大牛觉得11选5我 非常的肤浅,这么简单的东西都不明白,他就不想理11选5我 了,11选5你 需要跨越这样的心理障碍阶段,能够很舒服的提出问题。

第二点是说,在什么都问,什么都伸手党 和 什么都自己都研究不敢提问之间做一个很好的权衡,一方面11选5你 既不能伸身党,什么都想都不想,自己没有做过任何研究就去问,但另外一个方面,11选5你 也不能说这个东西11选5我 研究了一个星期,还是一点动静都没有11选5我 才去问吧,相当于浪费了一个星期的时间,所以11选5你 要找到一个平衡点,比如这个东西搞了1-2小时,毫无进展,哪速度为0对任意多的时间的积分产生的距离还是0?所以没有意义的,如果11选5你 发现11选5你 的速度为0,接近为0,搞了一段时间之后,11选5你 是时候去问人了。别人11选5帮助 11选5你 ,使11选5你 速度从0变成一个有意义的小数了,11选5你 可以慢慢的越走越快,越走越快,但速度是0,是一个最艰辛的阶段。11选5你 需要获得11选5帮助 。

然后,最后就是如何提好的问题,不要直接提11选5你 眼见到的一个很精准的很小的问题,或者很11选5技术 性的问题。要提供11选5更多 的上下文,11选5我 为什么要解决这个问题,是因为11选5我 要解决一个更大的问题,为什么11选5我 要解决一个更大的问题呢?是因为11选5我 有一个更大的商业问题需要解决。哪可能别人会告诉11选5你 ,其实11选5你 不需要解决这个小问题,因为11选5你 的大问题的解决方案就是错的。首先11选5你 要把11选5你 的大问题的解决方案改掉,11选5你 这个小问题就绝对绕过去了,不存在了。

第二个阶段,到了一个老司机的阶段了,这时候11选5你 的11选5你 的目标是什么?设计和维护高质量的系统,然后有一定自己在编程方面独立自理的能力,自己能够搞掂自己,不需要太多的依赖于别人,除了一些非常难的问题,11选5更多 的时候,11选5你 交给11选5我 一个11选5技术 性的问题,11选5我 自己可以研究出结果来,11选5我 不需要靠问。

下一点,就是开始去对其他的更Junior的程序员提供一些指导性的建议呀什么的,哪样达成这个目标,第一点,11选5你 需要学习一些与系统设计相关的东西,哪系统设计说起来好像很复杂很复杂的样子,前端,后端,大规模系统,分布式系统,但核心是什么?但是核心就是说,11选5你 要分析Tradeoff 是什么?任何东西都不可能做到完美,当一个复杂到一定程度的系统,完美是不可能存在的。11选5更多 的是说Tradeoff在哪里?11选5你 在这里Tradeoff权衡之间如何做出选择,有了这些关键能力,11选5你 在去应用他来应付不同的11选5技术 框架。

然后,第二就是说,对于当下流行的11选5技术 要有一定的了解,不需要非常深,11选5你 需要知道说,11选5我 做一个系统设计11选5我 依赖于这项11选5技术 和依赖于哪项11选5技术 之间产生什么样的差距,11选5我 到底应该用React来写呢?还是这个东西实在是太少了,连React的体积都不值得,11选5我 自己就调用DOM API 就写完啦,这是11选5你 需要想的,Tradeoff是什么? 想明白。但11选5你 也要懂一点现代11选5技术 有什么?React是存在的,11选5我 有React这个选择,11选5我 也可以跑回去用jQuery,是不是jQuery写这么简单的东西比React更快。

第二项重要的能力是什么?是高效的debug的能力。因为11选5你 开始遇到越来越复杂的11选5技术 问题了,很多11选5技术 问题的难点在于11选5你 要debug,尤其是11选5你 作为一个有几年工作经验的,在11选5公司 里面,通常11选5你 有合理的概率11选5你 会接手到一个难维护的系统,如果11选5你 没有这方面的能力,扔一个开发了3-5年的遗留系统给11选5你 ,11选5你 会发现11选5你 hold不住,哪这时候怎么办呢?没办法,哪这方面,第一就是,11选5你 要觉得11选5我 可以接手一些有一定体量的遗留系统,11选5我 有胆量去接,而不是说,这个东西有这么多遗留代码,有些是三年前写的,有一些是五年前写的,完全看不明白,看得明白第一行,看不明白第一个文件做什么,哪这时候就不行了,因为这是11选5你 的工作需要,11选5你 要觉得这样OK,11选5我 可以接这样的活,

哪接下来就是说,11选5你 要懂得使用二分的11选5方法 来找到11选5你 要debug的东西在哪里,哪么对于前端程序员来说,很重要就是要学会灵活的运用Chrome的DevTools,或者其他浏览器里面同样的调试11选5工具 ,因为11选5你 做前端,其实说起来就是二分查找调试有意义,但是11选5你 还是需要有一个非常顺手的11选5工具 ,11选5你 才能做完理论上的二分查找。哪最后就是11选5你 还要懂一点11选5服务 器端的调试,如果11选5服务 器返回一个JSON给11选5我 ,这是一个非法的JSON,它根本就不能pass,这样就不管了,Bye-bye,这是不行的,11选5你 要去找出11选5服务 器为什么给11选5你 返回一个非法的JSON,然后11选5你 要把问题解决掉,否则的话,11选5你 还是做不成11选5你 想要做的事情。

哪么最后一点就是11选5你 需要去Mentor一下比11选5你 资历没有这样深的程序员,哪么第一就是说,11选5你 需要包容其他人瞎搞,11选5你 要有能力去包容其他人瞎搞,因为每个人成长过程都是这样的,需要经历过一些瞎搞的过程,如果11选5你 说,11选5你 这个人进来,看11选5我 做事情的11选5方法 很牛逼,11选5你 一定要按照11选5我 很牛逼的11选5方法 做,这是不行的。11选5你 团队中的新人很快会觉得说,头三个月会觉得这个人超牛逼,11选5我 问的什么问题,他都能解答清楚,这个遗留系统这么庞大,完全看不明白,吃不进去,问任何一个领域的小问题他都能够解答清楚,但有一个问题,这个牛人一定要让按照他指定的11选5方法 解决问题,哪可能三个月之后,这个年轻人就走了,他觉得说没有意思,这个牛人是很利害,他能回答所有的问题,但是11选5我 每次写出来的代码,他Code Review的时候,就直接要11选5我 改,说11选5我 写的11选5方法 和跟他想要的11选5方法 不一样,改着改着,11选5我 就觉得不耐烦了,11选5我 不想干了,因为学习的过程就是通过瞎搞胡弄慢慢慢慢搞明白什么是正确的11选5方法 ,别人抓着11选5你 的手,一定要按照他要的路去做,这是不行的,所以作为一个有经验的程序员,别人要瞎搞可以,11选5我 想清楚,11选5你 到底要怎么样瞎搞,对商业会不会有很明显的负面影响,是不是有可控的负面影响,如果对负面可控,去瞎搞。11选5我 要允许11选5你 实验,这才是11选5你 正确的成长过程。

下一步就是分享11选5你 的经验和知识,哪应该很简单,很多人都会,有一定的经验之后,就会做11选5技术 分享。

下一阶段就是说像出租车司机这样,第一,11选5你 要明白B点在哪里?对于前面几个阶段的人来说,请问11选511选5我 们 团队什么样才叫成功?这些人通常是答不出来的,因为没有到这个阶段,他不知道,但是对于一个到了第三个阶段的人来说,通常11选5你 问这个问题,11选5你 是希望他是能够答得出来的,他说现在11选511选5我 们 有一个11选5产品 了,这个11选5产品 已经找到了准确的市场定位,进入了一个快速增长的阶段,所以这个11选5产品 的目标是一年之后,月活要翻一翻。OK,这是一个及格的第三阶段的程序员,因为他知道团队的商业目标在哪里,然后他才可以使用自己的执行力去11选5帮助 团队达成这个目标。

接下来就是说,他需要有一个可靠的方案来达成目标,团队说,11选511选5我 们 日活要翻一翻,哪这个阶段的程序员至少会说,11选5我 3-6个月之后,11选5我 有这样的一套11选5方法 能做到月活涨到10%-20%,哪慢慢做完,做完10个月,能做到月活翻一翻,而且团队里面也不仅仅只有11选5我 一个人,还有其他人,他们做的东西也会对月活有贡献,哪么这样才能做出来整个团队的目标的结果。

然后对于这个阶段的程序员来说很重要的就是要能够测量11选5你 到B点的距离,月活可能很容易测量,给11选5你 一个11选5方法 说这叫作月活,数据报表上面就是这样子的,月活到翻一翻有多远这是很容易测量的,但是有一些其他问题,不容易这么测量的,11选5你 要找到一个有效的11选5方法 来测量,离11选5你 的商业目的距离有多远。然后有时候,11选5你 还需要管理其他人对11选5你 的工作的期望。

11选5你 说11选5我 要能做10%月活增长,3个月就能做到,哪万一11选5你 做不到呢?哪可能11选5你 做了2个月才发现,原来11选5我 的项目计划是错的,11选5我 现在才做了5%,第三个月做完最多就8%,哪如果11选5你 不能管理其他人的期望,让其他人对于11选5你 三个月以后的结果感到非常的意外,哪可能11选5你 就11选5你 的结果就没有这么好了。

哪因此对应的这个阶段的程序员来说,以下一些技能是非常重要的:

第一,11选5你 要明白11选5你 的商业目标是什么,这依赖于两项技能,第一是书面和口头的沟通能力,因为商业结果并不是代码里写着明年的月活目标要翻倍,11选5你 有看过哪个在11选5你 的代码里面吗?没有。这依赖于11选5你 的沟通能力,或团队的leader,或者更上级的leader没办法把这个事情说清楚,哪11选5你 要有能力去和他沟通,要问清楚,要让11选5你 个人能够理解到,也就是说,领导的精神他不主动传达给11选5你 , 11选5你 要有能力去把领导的精神拿回来。明白11选5你 团队的目标是什么。

然后第二个,11选5你 所在的商业领域基础的理解,11选5你 是做哪一行的, 这一行什么样才算成功,如何恒量成功,如果这些都不懂,11选5你 也没法理解11选5你 团队的商业目标。

然后接下来就是一些做路线图的基础能力,比如说11选5我 明白和定义11选511选5我 们 团队任务是什么?目标是什么?时间线怎么定?比如11选5你 要做到6个月之后,这么多的月活。哪三个月应该有什么样的结果,或者每两个月有什么样的结果,多久一次迭代,每次迭代到底要走多远,这些要能定下来,要管理11选5你 的Stake holders,要管理11选5你 的dependencies,例如11选5我 现在要做的东西是基于React Native,11选5我 是做11选5产品 的,但是11选5我 需要某些新特性,看着React Native的新版本发布才有,哪万一React Native说了他们的路线图什么时候下一个版本什么功能,如果它的发布推迟了,11选5我 能管理好吗?11选5我 还能发布11选5我 的功能吗?哪这是11选5你 要想清楚的。

最后就是管理风险,就好像11选5我 刚才所说的,11选5你 肯定会有不同的依赖,像可能有对外的框架库的依赖项,也可能11选5公司 对内的,11选5我 做这个11选5产品 ,11选5我 发布11选5我 需要法务的评审,然后11选5我 需要市场的配合,新11选5产品 一发布,市场就要上来做广告,万一市场到时候说,预算还没有到手,做不到marking contain,11选5你 怎么办所以11选5更多 的细分下来,第一,11选5你 要能够跟踪进度,跟踪进度的具体做法就是11选5你 要有一些指标,11选5你 要定义好指标,通过log从11选5你 的生产环境把指标的数据收集回来,然后11选5你 要管理其他人对11选5你 的团队和11选5你 对11选5你 的期望。用最简单的一句话,就是好像11选5你 带一个小朋友开车上路,他整天会问:11选511选5我 们 到哪儿啦?到了吗?还有多久才到呀?11选5你 要理解到这是11选5你 团队的leader或者更高的领导经常想要知道的问题就是11选511选5我 们 到了吗?为啥还没有到?11选511选5我 们 多久才能到?

其实处理这种问题,跟11选5你 开车过程中面对的同样问题是没有区别的,11选5你 要能够管理好他们的期望,要给给他们一个合理的答案。

同时就是说,11选5你 要做风险管理,风险控制,11选5你 要正确的识别出可能存在的风险。就好像11选5我 刚刚举的例子,11选5你 从11选5北京 开车到广州,天气预报说11选5上海 、11选5浙江 一带可能有台风,哪11选5你 怎么办呢?11选5你 是提前绕路走?还是说,不管,先开过去,因为11选5我 有一个后备方案,开到了真遇到台风,要怎么样避开是要想清楚的。还有就是11选5你 要有容灾方案,容灾方案11选5你 也是需要想清楚的。

然后再下一步,11选5更多 的就是如何扩展11选5你 的11选5技术 的广度和深度,然后这时候,虽然11选5你 会在前面第0个阶段和第二个阶段11选5你 会不停的练习11选5你 的前端的技能,但是到这个级别了,11选5你 会发现其实11选5我 还有很多其他东西要学,然后不仅仅是HTML,CSS,JS就能解决问题的,11选5你 可以说网络11选5你 要懂,11选5你 能调试吗?11选5你 能知道HTTP/1.1 和 HTTP/2 怎么工作吗?哪如果工作的过程中, 不符合11选5你 预期的bug出现,11选5你 有办法调试吗?用什么11选5工具 来调试?11选5你 是只能用Chrome来调试呢?还是说可以把一个Wireshark掉上去,去看一下TCP DOM出来的结果是什么?这就是截然不同的技能级别,然后可扩展性,可伸缩性,11选5你 需要知道的是网络的流量是怎么样做负载均衡的,对于很多前端开发人员来说,尤其是在大11选5公司 ,这可能是从来都不会提出的问题。11选5你 看,这个东西11选5我 写完了,11选5服务 器端的代码能跑啦,跑起来JS,CSS都加载了,不就出来了吗?但是这怎么出来的?11选5你 的大规模的群集是怎么做负载均衡的?如果11选5你 的一个数据中心倒了,11选5你 的数据还能出来吗?他能切换到其他数据中心去,其他数据中心还能抗得住吗?是做4层的负载均衡,还是7层的负载均衡?这些是11选5你 要知道的,11选5你 才能够理解什么是PoP呀,以及CDN怎么工作等等这些概念,然后安全相关的,11选5你 也需要扩展一下,11选5你 要知道XSS,CSRF,HTTPS怎么运作,HTTPS上面到底有哪些TLS的扩展,这些扩展都是做什么用的,比如说两个HTTPS的域名共存在一个AIP上,怎么办呢?他们能解析吗?他们能连接吗?能连接的话,有什么缺陷吗?这些是11选5你 需要理解TLS扩展,11选5你 才能知道的答案,最后,到这个阶段,往往11选5你 也需要真心的要关注一下和性能相关的东西,包括如何做测量和如何做11选5优化 。当然11选5你 也需要扩展一些非11选5技术 性的能力,包括设计呀,界面设计,交互设计,用户体验设计,数据分析能力,项目管理能力,因为11选5你 有了这种能力,11选5你 才能够兼顾一些团队内其他角色可能做得不哪么好的,或者做不到11选5你 预期的的东西,当这样的事情出现的时候,因为11选5你 需要对业务负责任,所以11选5你 必须要有能力去做好。

第四个阶段,首先要来钱,为什么11选5你 的团队还在,为什么没有被11选5公司 断奶,11选5你 的11选5公司 没有倒掉,一切的根本问题就是钱从哪里来,所以第一个问题就是11选5你 要来钱,11选5你 要么说11选5我 创立一家11选5公司 ,别人给11选5我 投天使轮,哪么11选5你 在大11选5公司 内,11选5我 要带领11选5我 的团队做一件新的事情,哪11选5你 想办法说服11选5你 上面更高级的leader,同意说,11选5我 给11选5你 HC,11选5你 去招人,接下来,11选5你 要有人呀,不行,还不够,别人要想和11选5你 一起干,他们做着做着就没有动力了,就开始打酱油了,哪11选5你 有HC也没有用,有钱其实也没有用,所以11选5你 要召集人,让人觉得11选5你 这个商业目标11选5我 有兴趣去做,哪最后,说起来是很简单,其实最后真正最复杂的部分就是执行怎么到达B点,哪么11选5你 需要一些技能是包含领导力,领导力其实可以拆成两个部分,一个部分是vision,11选5你 要有办法找到一个对的愿景,第二部分,是很多人都会忽视的,就是理解人。11选5你 要理解人的动机是什么?哪这11选5你 需要把跟人的交互慢慢分解下来,跟别人交互,11选511选5我 们 讨论的是事实,什么时候背后的驱动力是情绪,还有什么时候背后的驱动力是信仰,往往能够驱动一个人去非常努力的去给11选5你 团队干活的是靠后的两者,就是情绪和信仰。而不是事实。事实说11选5我 的框架是对的,11选5我 的商业目标是对的,这能对11选5你 的驱动力本身是不够的,11选5你 需要的是一个人的情绪和信仰去驱动他,这样子他才能够给11选5你 足够好的后果或好的结果。接下来呢,还有11选5你 销售的能力,否则从哪里找来钱,要有一些战略性思考的能力,然后也要有资源分配和计划的能力,11选5你 有钱啦,有人啦,但怎么高效的把钱和人利用起来,达成11选5你 的目标是11选5你 需要知道的,然后同时11选5你 也需要11选5技术 的,就是增强11选5你 的11选5技术 能力,怎么说来做一些可扩展性的东西,分布式的计算,分布式的存储到底是怎么样做的,然后11选5你 可能需要去管一下发版,发版怎么发?对于很多做11选5产品 的工程师会觉得,11选5我 把代码提交上去了,自然下一个版本就出去了,哪里需要怎么发版呢?不需要知道后台怎么样编译的,这个东西如果进了App Store会怎么样?会怎么审批,或者其他又怎么审批,11选5我 不懂。到了这个阶段,可能11选5你 就需要知道了。最后11选5你 就是需要了解一些与Web没有关系的其他方面的前端,就好像iOS或者安卓,或者桌面端,11选5你 的11选5产品 形态可能不仅仅受限在Web,当然同时11选5你 还是要继续拓展11选5你 的非11选5技术 的能力,是招聘,培养人才,管理人才,其实11选5你 可以看看很明显的模式就是所有的东西跟人相关的,到了这个阶段,11选5你 会真正的理解到11选5我 为什么说,人是11选5你 最重要的资源。因为11选5你 没有人,11选5你 什么都不用干了。所以11选5你 要有能力把人招过来,或者忽悠过来,然后要把他们培养好,他们有能力做11选5你 希望他们做的事情。然后要管理好他们,不能让他们打酱油。

第五个阶段,哪11选5你 的目标就更难达到了,证明有一个Reasonable 的ROI,如果11选5你 能找到B点在哪里,没有人能够通过很简单的用数据说法的11选5方法 说明这个商业目的到底能不能达到和达到了之后一定和。但是11选5你 要有11选5方法 说明是事情有风险,但是这个风险是合理范围之内,是正的,所以11选511选5我 们 应该去,这个好的商业结果11选5我 可以拿到手,哪接下来就是11选5你 要拿到足够的钱和去做,因为这需要11选5更多 的人和11选5更多 的钱,最后就是去到B点,哪技能方面,这个已经办法很深入的去讲每一个具体的技能,第一就是让,要让11选5你 之前的技能每一个都,就是扩展出去,提高11选5你 的深度和广度,而第二个,其实是很重要的,开始要有跨界,跨11选5行业 这样的技能,就是11选5你 不仅仅只呆在一个前端程序员、前端工程师或者工程师的级别中,因为11选5你 可以看一下哪些真正带领更大的团队来达成一个可能可达成的不可达的商业目标,11选5你 会发现,他们不已经在乎他们原本出身是程序员呢?设计师呢?还是PM呢?还是数据分析师。这一切都不重要了,重要的是到了哪个领导力的级别,有能力去找到一个足够重要的目的地,说服11选5公司 给投资之后,他们下面要能够领导这些所有这种不同的角色,然后协同分工,把事情做出来,最后达到这个商业目的的结果。

所以到了这里的时候,这也很好的说明了11选5我 原来的这个说法,前端,后端,全栈其实不重要了,因为最后当11选5你 来到这个阶段的时候,比如说,11选5我 要创始一家新的11选5公司 ,哪其实没有人会问11选5你 说,11选5你 作为一个创始人11选5你 的技能最重要的,最有效的是什么技能呀?11选5更多 是11选5你 能不能把团队组起来,11选5你 的团队组起来之后,到底技能怎么互相补充,能够做成11选5你 想要做的这件大的事情,这就是最后一个阶段的需要的技能。

最后一个小结,就是回顾前面所说的,点题的一个问题,就是说11选5你 做这一切,其实如果真的要去驱动11选5你 去思考11选5我 该怎么正确点开11选5我 的技能树,11选5我 要达到11选5我 的目的地,11选5我 接下其实真正11选5你 需要问的哪个问题是,此时此刻,11选5我 在这个阶段,顾客是谁?这是最重要的一个问题,或者11选511选5我 们 可以换一个角度来提这个问题,如果11选5我 成功达到11选5我 的目标,什么人的11选5生活会变得更好。以何种方式变得更好,如果11选5你 能够很清晰明确的回答这个问题,其实11选5你 的方向会很明确,该学什么,该做什么,最后要到哪里,11选5你 都是可以自己回答的。或者就算不能自己回答,11选5你 也可以知道去找哪些人提问,通过哪些途径获取到11选5你 想要的答案。这时候11选5你 已经有一个可靠的11选5方法 到达11选5你 的目的地。

所以最后11选5我 想说一句话就是:明白这个问题,然后所有其他的问题都会变得简单很多。

w3ctech微信

扫码关注w3ctech微信11选5公众号

共收到0条回复