程序员是我见过的最乐观的一些人。要问我们完成一件事情需要多久,而我们的估计通常和实事相差十万八千里。
不是因为我们讨厌你(才故意说错),也不是因为我们不能估计得更好。我们只是对所有事情都太乐观:项目,技能,科技,规格书,未知的事物……
未知的事物尤其是个大问题 —— 要判断出所有可能出错的事情几乎是不可能的。
现在看起来我们可以在一个小时之内完成,但奇怪的事情接连发生,可能我们要耗上一整天。
作为程序员,我们要假设最简单复杂度的情况,甚至是乘以Pi。
还有一种职业在面对不确定性时通常给予很多预测——医生。当医生预测错了,人们通常欢欣雀跃。什么?
让我来告诉你一则两个有关预测的故事——一个保守的预测和一个程序员的预测。
两个关于预测的故事
上周五我的肩膀受伤了,更准确的说是锁骨和肩部的连接处。是因为我玩滑板时,作了错误的动作,重重的摔在了碎石路上。
早上我需要用我的左手吃早餐,几乎不能拾起勺子。
医生告诉我,嘿,骨头和结合处看起来还好(没有脱臼),但我把肌腱弄伤了。要我做好准备三个星期都会很疼。“如果很疼的话就用些止痛药”,他们说。
今天,第六天,我们肩膀肩膀已经90%痊愈了。咬咬牙,今早我还是可以完成60个伏地挺身(我通常做150个)。跳神也不是什么大问题。昨天我甚至可以用右手提起4公斤重的滑板提很长一段时间。
一两天后我会痊愈,医生个估计足足有3倍的误差。我开心得不得了,一整天都很兴奋!
(Photo credit: Wikipedia)
程序员的预测
我在做一个网页的分割算法,就是要拿到一个网页,判断哪些部分是头,哪些是侧边栏等。这是个非常有趣的问题,因为其他人只关心最主要的部分。
这个算法从这周初起就成功了,仅仅要做的是将最后的结果和原始的HTML代码合并。
我说我这周五早上会完成。
我意思是这有多困难吗?我只是用了一种我讨厌的语言(Java),还有我没经验也不喜欢还试着去回避的图表,以及两周前才开始碰的一个库。
我想我在周五早晨之前可以完成一个我没有完全理解的工作!这个估算脱口而出,它必然是正确的。我是个经验老道的程序员!
不,我最终食言了。
我发现我并没有理解boilderpipe对象的层次——在扩展某个对象的功能时花了我好多个小时。
然后我发现HTML分析器是线性的,所以没有简单明了的方法可以确定哪些子节点属于哪些父节点。
最后我几乎花了所有的时间,仅仅去设法找出如何用最原生态的方法将算法的结果添加到HTML中去——在DOM中的每个节点前加个数字。
哎哟。
程序员都是乐天派
当你和程序员聊天时,请记住,他们都是乐天派。是的,就算是最沮丧的邋遢的老程序员也是乐观得要命。我们是这样的人:
● 带着侥幸的心理投入到时时在变的项目
● 碰到一堆没听过的工具,并在一些未知的领域中使用它们,最后还奏效了
● 每个新项目都是完全不同的世界
● 每隔几年就要更换所有的工具
● 谁不是乐天派的话就不可能成为一个程序员。
其他的职业的人会怎么描述自己?
老程序员的忠告:不要做浮躁的软件工程师
IT人生路精彩博文精选导读
成为Java高手的25个学习目标--非常经典
为程序开发人员量身定制的12个目标
程序员编程技术迅速提高的终极攻略
最新“特色985”大学高校名单
健康养生博文精选
Android技术开发精彩博文精选导读
中国最高等级实验室——“国家实验室”名单(仅20所)
2011年3月最新“211工程”大学名单(共112所)
技术精英谈IT程序员的出路在哪里——很经典
让IT人远离慢性疲劳,长时间操作电脑需要养成的几个好习惯
技术开发人员应该多吃的15种健康食品
周立功谈嵌入式:我的25年嵌入式生涯
IT技术开发人员35岁之前应该做的十件事
技术开发人员为什么会无奈苦逼?
印度和中国程序员的区别
2012年全国本科毕业生就业率最高的50大专业