作为一个程序猿,总有消退的前辈、或更年轻的同行。牛逼的人总是羡慕。
让我们搞自己痛苦的日子 BUG 。头发很快结束了抓,人们扫两。修改一行代码。问题得以克服;例如,他们自己开发的十年,少付 10K ,人们刚毕业签约 16K 合同;苦加班工作还干不完,人家嘛事儿不干每天就喝喝咖啡,结果写出来的软件竟然比我的稳定多了好用多了。这样的事情太多太多,怎么办?
陈胜起义时说:王侯将相宁有种乎!
作为程序猿,面对牛逼的同类,事实上我们也能够愤而追之:大丈夫当如是也。
有梦想有追求总是好的,关键是,如何才干牛逼起来耶?
程序猿的分类
早上翻看陆其明陆老师翻译的Jeff Atwood的书《高效能程序猿的修炼》。里面有一篇文章。名字是《程序猿的八种境地》。讲得非常好,受益匪浅。只是我打算从另外一个角度为程序猿分一分类。
来自古老的儒家经典《论语》的说法:
“
生而知之者,上也;
学而知之者,次也;
困而学之。又其次也;
困而不学,民斯为下矣。
”
博主鲁钝。不知道谁能生而知之,我本人是困而学之,而后学而知之。一切从自我出发,窃以为困而学之、学而知之这两类,都能够牛逼起来。有兴趣的话。能够评估一下自己是哪种类型的。
10000个小时法则
迈阿密大学的 AndersEricsson 教授写过一篇论文——《有目的的训练在专业人才培养中的作用》(The Role of Deliberate Practice in the Acquisition of Expert Performance),介绍了他在研究“最好的音乐家”有什么共同点时的发现:卓越的音乐家的练琴时间,没有一个人小于 10000 小时。
2008 年,畅销书作家 Malcolm Gladwell 。将这篇论文写进了他的新书《异类:成功人士的故事》(Outliers: The Story of Success)。
Malcolm Gladwell 概念化了原始论文的结论,宣称存在一个“ 10000 小时法则”(10000 hour rule),即成功至少须要 10000 个小时的投入。
你造吗,这本书出版后。成为《纽约时报》畅销书排行榜的第一名。
10000 个小时法则背后的思想是:真正决定一个人成就的,不是天分,也不是运气。而是严格的自律和高强度的付出。
看到这里你可能以为博主扯淡又扯远了……事实上不是的,刚開始而已,真正扯的在以下。
我想非常多人看过古龙大师的《边城浪子》。里面的主角是傅红雪。傅红雪的绝技是拔刀术。我靠,简单吧。苍白的手。漆黑的刀,刀过人亡。血还没见着刀又还鞘了。这就是傅红雪的拔刀、收刀之术。关键在一“快”字。天下武功,唯快不破。
傅红雪的刀,已超越了速度的极限。
但是你造吗。傅红雪是癫痫症患者。资质也仅仅是中等,比起叶开。那是差了一大截,比到处留情的楚香帅。也差了一大截。关键是,傅红雪永远看着都那么苦逼:在苍茫的关外,握着刀。拖着腿,背负着于己无关的血海深仇,在“一入万马堂。刀断刃,人断肠”的歌声里寻觅不是仇人的仇人。
这下扯大发了,事实上我想说的是,捡来的孩子傅红雪,资质平凡又身有残疾,结果却炼成了举世无双的刀法,其秘诀非常之简单。卖油翁一言概之:无他。惟手熟尔。要知道。傅红雪被不是妈妈的妈妈每天逼着练一本残缺到仅仅有拔刀式的白家刀法。苦逼地每天拔刀两千次以上,拔了十几年,你试试,要是你拔刀拔十几年。不疯掉的话肯定也能炼成个无影刀什么的。
傅红雪是另一个 10000 小时法则的实例。
我们来对照一下帅到一塌糊涂的钟汉良版的傅红雪与老派功夫帅哥狄龙的傅红雪:
再来一张:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZm9ydW9r/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
我非常喜欢狄龙的扮相,钟大帅哥嘛……
爱是众妙之门
我在前面介绍了“ 10000 小时法则”。当然那仅仅是一个必要条件,不是充分条件。我以为要想让 10000 小时法则有效。另一个条件。
安·兰德说过:
“
为了将事情做好。首先你得喜欢做这件事。而不是喜欢这件事情的结果,那仅仅是第二位。
”
想牛逼的程序猿。不能仅仅盯着一个项目干完后的奖金吧。也不能老想着忙过这阵子就能够歇息了吧,也不能盼着应用能 Run 就交差了吧……也不能老想着我学了 Scala 就能拿到 20K 的薪水吧……
牛逼的程序猿非常多是酱紫的:喜欢干,干得牛逼了。收益来了,机会多了。
要说你不喜欢一件事情。有时被逼着也能胜任。但要说你讨厌一件事又能干得出类拔萃,那我不相信。最好你也别让我相信——我怀疑你早晚有一天会人格分裂。
伟大的科学家爱因斯坦(他的宗教观也非常有意思http://en.wikipedia.org/wiki/Religious_views_of_Albert_Einstein)说过:“兴趣是最好的老师。”这就是说,一个人一旦对某事物有了浓厚的兴趣,就会主动去求知、去探索、去实践,并在求知、探索、实践中产生愉快的情绪和体验,而这样的愉快的情绪和体验反过来又会促使他继续去求知、探索、实践。
这样就产生了良性循环。“成为达人”的欲求就会推动着你不断前行。
你爱编程。享受做设计、写代码、解决这个问题的过程。再遵循 10000 小时法则,那你想不牛逼都难啊。
牛逼的方法论
前面是开胃酸汤,如今到正题了。我们来聊聊一个程序猿。要如何才干一步一步慢慢牛逼起来。
编码
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZm9ydW9r/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
毫无疑问。你必须得编码。持续不断地编码。要达到一定的量。
量变会引起质变,但不是必定。
持续编码的结果有两个,一个是达到质变。水平不断提升;一个是反复反复再反复终于麻木。
要哪个?
回想与思考
要想质变与提升。必须有目的地停下编码!
仅仅编码,不走心,那是万万不行的。不走心的程序猿非常多,干多少年了水平还和初干时差点儿相同,十年如一日。
走心就不一样,走心一日如十年。
我们要周期性的回想自己,看看曾经的代码,分析下如今的设计,看看哪些能够改善,有多少种改善思路……这样就能看出曾经的自己与如今的自己这两者之间的差距。假设你认为自己曾经的代码是翔。那恭喜你。你绝对提升了不少。
要回想曾经,还要分析如今。程序猿还要常常梳理一下自己的状态。看看我如今都掌握了什么技能。在哪些方向和领域有所成就。再加上对过去的回想,看看哪些是延续性的前进,哪些是无心插柳。哪些是冤枉路,哪些是意外之喜。这样就会对自己的能力边界有所了解。知道自己知道什么,也知道自己不知道什么。更重要的是,你会发现自己能把什么东西学好用好。还能发现自己为什么能够把这些东西学好。那样你就能够找到自己擅长的方向。做得更好。
回想了曾经。分析了如今,还要想想将来。在技术上,我要在哪些方向继续前行深入挖掘?这点非常重要。我们伫立如今,回首过去,仰望未来。这是上山的姿势啊。哈哈。上山好啊,值得期待的仅仅有前方。
有人说上到山顶就仅仅有下山喽……那,这也是真的,只是,顾城有首诗《避免》能够看看:
“
你说
你不爱种花
由于害怕看见花一片片的凋落
所以
为了避免一切的结束
你拒绝了全部的開始
”
作为有追求的程序猿,我们不必这样操心吧。仅仅管积累我们的 10000 小时去,仅仅管思考如何有效地利用这 10000 小时去,不但过程是漂亮的。将来也会是漂亮的。
多学一点点
台上一分钟。台下十年功。那些牛逼的程序猿。无一不是付出了比普通程序猿很多其他的精力。
我们在开发时。会接触各种各样的新技术。
有时由于项目时间原因。非常多技术仅仅能是走马观花的用,解决这个问题为目的。项目结束了可能就扔一边儿去了。
但要想让自己有更大的成长,那我们就应该学多一点,用一分学两分,广里一分。深里一分,不能不求甚解一带而过。
对于用过的技术,最好在当时,项目的间隙或者项目结束时。抽时间了解它的背景、好处、机理,让自己对用到的技术都有相当程度的了解。惟其如此,我们的知识面和技术深度,才会随着开发经验而不断递进。
实践新技术
选择或者学习一门新的技术,必须要实践。能够把它应用到工作中的项目,假设工作条件限制,那也要自定义一个自己喜欢的项目,坚持使用你的新技术做下来。唯有实践。你的新技术才干理解得更为深刻。
知道有那么一门技术。与实际使用过,其间的差异可不止一点。
沟通
非常多人认为程序猿比較难沟通,说程序猿不会好好说话……你认为呢?
我想说的是:要想成为牛逼的程序猿,沟通一定要过硬!
程序猿是干嘛的?不是写代码的。而是解决这个问题的。
解决这个问题才是程序猿的职责。
要解决这个问题,离不开沟通。
客户会找你,市场会找你,产品经理会找你,UI设计师会找你,开发同事会找你。測试妹妹会找你,老板也会找你,女盆友会由于你的投入与执着爱上你也会在爱上你后由于这些而不断与你争执……
哪一样离得开沟通呢?
当然我不是说程序猿要像销售、市场、营销等等岗位的兄弟姐妹们一样妙语生花。事实上沟通最重要的是能听懂别人说什么。能把你想说的以对方能理解的方式说出来。至于是妙语连珠还是磕磕绊绊。是语言沟通、眼神沟通还是书面沟通。仅仅要达到目的即可。
有人说我天生不爱说话,跟机器打交道才认为踏实。事实上这没关系,你要找到自己的沟通方式。看如何才干让别人理解,也调整自己的聆听和理解方式。看如何才干理解别人说的话。
如何才干让别人正确理解你的话,如何你才干正确听懂别人的话,这都须要不断的学习、练习。这方面有非常多的书啊视频啊,可供參考。
这没什么不好意思的啊,我认识一些朋友,认为学习说话技巧是非常不好意思的一件事儿,好像这样做就说明自己心怀鬼胎就多丢人似的。事实上不必。我们的目的不是巧舌如簧地骗取别人的信任然后来谋取利益,我们的目的非常easy。就是让别人理解我们也让自己理解别人。
理解沟通模型
沟通这事儿真是一门学问,尽管我在这方面一向鲁钝。还是想以我们程序猿的方式。打个比方来说明一下沟通模型。
首先每一个人心里都有一个 TCP Server ,监听到某个port上。等待陌生人或者熟人或者半生不熟的人来訪问。
其次呢,不同的人对自己的port是否开放持不同的态度,OPEN的人就会监听到知名port,比方80、21、7、13、22、23等等。这样别人就知道我们找这个 OPEN 的家伙说事儿该连接哪个port。当然。仅仅开放port还不够,灵慧的人还会慢慢把自己的协议 SHOW 给别人,这样想找他聊天的人就能够遵循这个协议来说,事情就easy多了,两方就都能理解。
另一些人呢,比較内敛,尽管内心非常饥渴,希望别人找自己聊聊天谈谈心,但是不知道怎么把自己的port开放给别人,或者出于某种原因隐藏了port。比方他本来是监听到 21 port上,走 FTP 协议,由于被别人通过port扫描的方式黑了两次受了点不大不小的伤害,就小心地封掉了 21 port,把自己的服务挪到了其他port上,而且也不告诉别人。
这就出问题了,别人找不到port号,怎么和你沟通咧……
另一些人呢,自己也不知道该监听到哪个port上,不能有意识的训练自己,今天是 21 。明天就 80 。后天又走 37 了,结果不但自己混乱,跟他打交道的兄弟姐妹们也混乱:昨天这么说还挺融洽,今天再这么说他竟然翻脸了呢!
这是我们每一个人内心的 TCP Server 。事实上每一个人另一个 UDP Server ,是为那些夹生的人或者拥有特别标签的人准备的。你能够知道我的 UDP port,但是你发消息过来我就不一定搭理你,被拆穿了我还能够说 UDP 协议不可靠。我没收到……。这两个 Server 就是我们每一个人身上主要的沟通模型。
最后呢,假设你要想向别人说明你的意图并让别人按你的意图去做某件事。那就要花费精力去研究如何找到对方监听的port、使用的协议。和 OPEN 的人沟通比較easy,訪问 80 port,走 HTTP 即可了,或者夜半三更FQ过去幽会也能成。而针对那些隐藏了port和协议的,就要启用port扫描这样的神器,扫到port。再抓包分析协议,成功的可能性总是有的,仅仅只是费些力气罢了。
用这样的模型来解释现实生活中的沟通问题,程序猿们就能够释然了:啊哈。原来我给他说的事儿他老不反应,是搞错了port或者走错了协议。
表达自己
理解了沟通模型,找到了对方的port和协议。另一个问题须要解决:你怎么准确地表达你的意图。
对于相当一部分程序猿,这是个难题。有的人本身就寡言少语(我是这类的)。有的人非常厉害,与别人说话时脑子转得比别人快几倍。脑子里转的是长长的带上下文的句子,从嘴里出来后就成了嘎嘣脆的词语。还以为自己说过了别人都能理解。有的人写代码一二三四条理清楚。说话时就比較发散,正说股票呢忽然就转到APEC蓝上了。有的人比較羞涩,大男人说话却声若蚊蝇……总之各类情况都有。你见到的绝对照想到的多。
无论你属于哪一类。要想能顺畅地与人沟通,先要训练自己。让自己能够准确地表达。
我是不会表达的人呢,你看我洋洋洒洒长文千字,事实上我不大会说话。只是我要说的是:假设你说不好。那就想办法先写好。
“写”这个事情,比说更easy让人条理清楚。由于写这个过程时间相对宽松。上下文简单。不像与人沟通那样你来我往还要时刻注意话外音整个过程比較复杂。所以,写。是一个非常好的锻炼自我表达的手段。写作能训练你表达的精确度。
你能够通过写博客,写日志等等手段,把自己的想法表达出来。然后呢。过一段时间。你能通过写作来表达自己的了。再回头来影响说话,你把嘴上说的当作纸上写的。多练习练习。就能准确的表达自己的意图了。你看人家*讲话还须要先打打草稿呢不是,更甚之的还有念稿子的。
找到你的小伙伴
程序猿干的是技术活,找到一个谈得来的小伙伴非常重要,能够相互促进,消除登顶路上的寂寞。
胡一刀和苗人凤就是好伙伴。两人常常切磋,水平都非常高。
可能你须要在不同的阶段找不同的伙伴,最好是找某方面比你牛的人一起研究技术,这样能够学到东西。
或曰:牛人为毛要搭理我撒……
“在你全部的能耐中。至少应该有一样是拿得出手的。不会做非常多事情并不可怕,可怕的是没有一件事情能做好。
”
要培养自己在某方面的好处,这样就能够互补喽。
事实上有相当一部分程序猿离职的一个原因是:在这个公司真的太寂寞了。都找不到一个能够讨论技术相互促进的人!
分享
这个,真的非常重要,千万别掖着藏着。对待向我们求助的兄弟姐妹,要像春天般的温暖……
此处略去5w字……
-----------回想切割线-------------------
版权声明:本文foruok原创文章,博客,未经同意不得转载。