乐观的程序猿
(本文发表于《程序猿》2015 07 B)
有一次看到来自Instagram用户findheart的话:
程序猿是一个懂得享受生活的群体。每几个月或者几周,他们就会庆祝一个叫“Deadline Eve”的节日。在这一天晚上准备大量的食品饮料。通宵达旦地工作,并互相致以“下个milestone绝逼不再迟延”的美好祝愿。
我从这个笑中含泪的小段子看到了程序猿的一个特点:乐观。
是的,你没看错。乐观,就是乐观。
程序猿是我见过的最乐观的一群人。这也是我作为一个程序猿回想自己的开发生涯时发现的一个秘密。
要知道,程序猿的生活充满未知:未知的项目,未知的语言。未知的框架,未知的工具,未知的进度。未知的天坑,未知的Bug。未知的交付日期,未知的绩效评估,未知的KPI……
So,在这样的茫然四顾一切皆不可知的环境中生活。你要是不乐观,你绝对扛不住,你根本不可能见到明天的太阳。由于,未知会产生恐惧,这是人之天性。恐惧堆积多了人就会崩溃。而伟大的程序猿,坚韧的程序猿。不可思议的程序猿,拥有超强耐受力的程序猿,倍受蹂躏仍踯躅前行的程序猿,不但奇迹般地在这个非人的环境里存活了下来,还每天乐乐呵呵屁颠屁颠的。这不是乐观是什么?还能有哪个群体如此乐观吗?
看,项目估算就这么简单
当程序猿在白色的电脑屏幕上写下“printf(“Hello World!”)”时。他确信,仅仅要按下CTRL+R或者点击执行button。黑黑的命令行窗体就会对他们说“Hello World!”。
是的。就是这个样子。
当你写下“Hello World”这句骇人听闻的咒语。电脑绝不会用“Goodbye World……”这句更震撼人心的话来回应你。
我们程序猿面对的世界是0、1世界。简单而直接。我们在软件开发的世界里徜徉得越久,就越easy受到这样的逻辑思维潜移默化的影响。我们崇尚简单。讨厌复杂。不管是在数字世界,还是现实生活。
程序猿喜欢看到确定的、可预知的结果,而我们的世界里却有这么多的不确定性,我们的办法就是仅仅往优点看,仅仅青睐那些我们把握得住的东西。
:Begin //请注意,此处的Begin为用于goto跳转的标签
当我们被迫评估项目进度时,我们会先採取大事化小小事化了的策略。然后把那些人见人爱的小家伙一一拎出来,乐不滋滋地给他们分时间,这个4小时。那个3.5……OK,非常快我们就认为胸有成竹。一切尽在掌握。吧啦吧啦我的魔仙棒。傲娇地转上一圈再伸臂一点。整个项目大概须要4个人月。预留一些时间比方1个人月应对随时可能出现的天外来客,我们有8个人,啊哈,半个月哦不。2周半搞定。
大家伙分头行动。哼哧吭哧咣叽咣叽开搞了。
第一周的时候,我们报告说:“工作正在有序进行,一切都在掌握之中。”
第二周的时候。我们报告说:“出了点儿小意外。但加两个晚上班儿就能够追回进度,我们能够搞定。”
第三周的时候,我们报告说:“又出了点儿小意外。你知道。软件开发就是这样,惊喜不断。只是我们周六和周日已经摆平了意外。我们非常快就能够搞定了。
”
第四周的时候。我们报告说:“嗯,情况比我们想象的复杂,在集成时遇到了不明状况。整个团队搞了一个通宵才搞定,结果第二天没办法干活,所以,进度比预期的要晚一些。只是。请相信我们,非常快就能够搞定了。
第五周的时候。我们报告说:“这周肯定能够搞定了。相信我们的能力。
”
第六周的时候,整个团队都一脸黑线在加班……
第七周的时候,我们报告说:“系统集成完毕啦,第一个Beta版本号能够内測了。这尽管比我们预期的时间晚了一点点。只是,我们的内測版本号堪称完美,差点儿不可能出现Bug。”
……
第十周的时候,整个团队都在加班加点改Bug,人人一脸黑线外加两个青肿的眼袋,每当焦虑万分的老板询问上线时间时,项目经理都会说“快了快了,就这两天就搞定了。”
等到第十四周要结束的时候,版本号终于公布了。
皆大欢喜啊。
老板已经被这群猴子逼疯了。心里恨得要冒火,还得咬着牙说:“兄弟们辛苦了,你们的努力大家有目共睹。”
我们报告说:我们公布的版本号质量非常高,easy上手,用着也方便,用户一定会惬意。相比之下,少许的延期是值得的。
goto Begin
好吧,项目估算简单吗?
你看过《人月神话》了吗?
“一切管理理论都是扯淡。哪一种也不适用我们的团队,由于我们这些程序猿是独一无二的。都有着与众不同的个性。我们必须找到自己的项目管理方法。而且,我们如今的团队已经在我们独特的管理模式下运转良好,全然不必要引入学习成本那么高的控制手段,况且那样对大家也是一种刺激,认为公司不信任大家,这会大大的减少士气。毫无疑问。我们如今的团队士气高昂,必须要保持……”
这可能是某个项目经理说的话,我不记得了。他终于的结论是:“尽管这次项目Delay了,可是下次,绝逼不会了!我们一定有办法控制进度。”
看到了吧,这就是我们的乐观。它生动地告诉我们什么是真正的乐观:即便无数次实践已经证明我们的估算和调控手段不靠谱,我们还是会信誓旦旦地在下一个项目来暂时许下“绝逼不会延期”的诺言。
这非常easy。两天搞定
程序猿群体的乐观是由一个一个个体的乐观汇聚而成的。
有多少次我们被问到这个问题须要多久解决时。我们都说出相似“两天搞定”的话……
有多少次我们看着同事深陷泥沼无法自拔完工无望时,我们说出“要是我早就搞定啦”之类的话……
有多少次我们要学习未知的技术并把未知的技术应用到未知的业务上终于交付给客户一个可用的系统时。我们都会天真的从我们既往的经验池里抓几枚硬币来撒撒,然后说出“大概须要半个月”这样的结果……仅仅有程序猿,彪悍的程序猿,无所畏惧的程序猿。敢于乐观地面对未知的一切拍拍脑袋给出一个确定的工期。
……
这都是由于我们程序猿倾向于把事情想得简单,在我们这些崇尚简单的程序猿眼里。即便你秉持着不惮以最低的效率来评估的原则,也会给出一个终于看来还是乐观的预计。
这让人绝望吗?
No!恰恰相反。这正是我们程序猿之所以为程序猿的一个关键特征。惟其如此不能活也!
没什么难的。只是如此嘛
万事开头难。
非常多事情仅仅要我们突破了最初的障碍,后面就会顺风顺水势如破竹。对程序猿来讲。这样的规律非常easy被强化,由于,我们有太多机会学习新技术新框架新业务,而大多数的语言和框架。写一个万能的“Hello World”就入门了!
这样的学习新技术的感觉,和开车相似。我学会开车后,一直没有上路跑过。提车后犹豫了几天,总认为城市里路况复杂,非常多车不管红绿灯总在强抢黄三秒,行人又乱闯,电动摩托总是突然呼啸而过。左转右转与直行同一时候被同意,想多了总认为自己不能应付这样的状况。就在考虑要不要请个陪练陪着我上路跑几天。后来由于着急上牌,没办法就直接上路了,早上五点多起来。从家开到了车管所。办完手续后又战战兢兢地开回了家。这是第一次单独一个人上路,没磕没碰没撞没出事儿。竟然!
好吧,成功的经验会让你找到自信,于是后来我就敢上路了:怕啥,就那样嘛。
程序猿的情况与此相似。
比方你让一个C++程序猿去开发一个AndroidApp,他可能仅仅须要两个星期就能学会Java和Android开发。做出一个DEMO。然后呢,跨过门槛,一切障碍都不存在了。前面都是坦途,没什么能阻碍这个程序猿解放全人类的伟大理想了。
这样的体验的不断反复使我们由衷地相信好的開始是成功的一半,所以,当我们哪怕仅仅做出一个小小的DEMO程序。也会兴高採烈的公布我们的结论:啊。我们已经突破了关键技术,从已有的DEMO来看,技术上的问题不再是问题了。
当然事实并不是如此。前路险滩无数,泥沼遍布,暗坑随处都是。当你迈出第一步。欣喜地以为天下独握我手一切尽在掌握的时候。那些你难以预料的艰难险阻也已悄然出发,高速向你围拢过来。
我开车还没超过100公里,就遭遇了第一次交通事故,和保险公司打了回交道。作为程序猿,你说难题已被攻破技术上已经没有风险,事实上仅仅是你过于乐观了。真正的旅途还未開始,让你挠头的事儿还未到来。
就是这样。
当然。程序猿是乐观的,他们说,不管前路怎样,仅仅要逢山开道遇水搭桥见佛杀佛见鬼杀鬼就可以通关,天塌了有个儿高的顶着呢,项目黄了有项目经理扛着呢,公司关门了大不了换个地方再战江湖。爷有手艺。到哪儿混不来一碗饭吃……
好吧,我们就是如此乐观。
假设你要和程序猿打交道。一定要谨记此点,他们的职业习惯使得他们倾向于把事情简单化,仅仅看好的一面。未知的风险他们会一笑而过。
所以。你要有预期。他们经常前半程轻轻松松高歌猛进。后半程心情沉重步履维艰。
很多其它精彩文章,參看“漫谈程序猿”专栏。
我开通了微信订阅号“程序视界”。关注就可以第一时间看到我的原创文章以及我推荐的精彩文章:
posted on 2018-02-02 12:32 yjbjingcha 阅读(141) 评论(0) 编辑 收藏 举报