程序员可谓是我曾见识过的最为乐观的一群人了。而且,很荣幸地告诉你,我也是其中一员,嘿嘿!
但是我绝对没有贬低其他人的意思,我的意思是我们程序员只是凡事都习惯性地会往好的方面想。项目、技能、技术、规格、以及各种的未知因素……
特别是一些未知的因素——因为无法预测,所以可能随时会出现问题。变量实在是太多了。
有时候我们觉得自己完全能在一小时以内完成任务,但是却因为突发情况导致不得不忙上一整天。
但是作为程序员,我们总是设想为最简单的情况,甚至是在需要考虑PI的条件下也是如此。
还有一种职业,也常常需要给出各种不确定的猜测——医生。但是,当医生预估错误的时候,很多人常常会觉得很开心,有木有?
下面让我给你讲个关于这两种职业预估的故事。从中我们或许可以对程序员的乐观主义略知一二。
关于这两种职业预估的故事
上周五,我的肩膀受伤了,具体说来是锁骨和肩膀之间关节位置,当时我正在玩长板,不知道是怎么回事,重重地砸在了柏油路面上,疼死俺了!
然后早上我就不得不用左手吃早餐,右手甚至连勺子都拿不起来。
在急诊室的时候,医生告诉我,骨头和关节看起来没什么大事(错位什么的都没有),但是我肯定是伤到筋了。听到这里,我想3个星期的痛苦肯定是免不了了的。“如果特别地疼,就吃点止疼片”,医生郑重其事地表示。
然而,今天,才过去6天,我的肩膀就已经好了90%了。今天早上我咬咬牙就可以做60个俯卧撑(平时能做150个)。甚至跳绳都行了。而且,昨天我的右臂拿了4公斤的重物也丝毫没事。
一两天以后,我就彻底痊愈了,大大短于医生的预估时间。但是我毫不介意,心里非常开心。
至于程序员的预估
我需要做一个网页分割算法,目的是决定一个网站中哪部分是标题,哪部分是侧边栏等等。这是一个很有意思的问题,因为任何人都希望主要内容能做到生动有趣。
该算法在本周早些时候开工,要做的就是合并结果返回给原始的HTML,以便于利用这些信息。
“星期五早上就能搞定!”我信誓旦旦。
但是其实这真的很难的好不好!因为需要用的是我最讨厌的编程语言(Java),相关的经验一点也没有,这种范式也是我不喜欢并且以前都是尽量避免的,再则这个库也是我在两周前刚开始接触的。
但是我相信自己哪怕并不完全理解这个任务,周五上午肯定能交工!当我预估项目完成时间的时候,这个想法就这么自然而然地映射在我的脑中。我的第一反应就是这应该没错,因为我是一个资深的程序员嘛!
但是,我并没有按时完成!
一开始,我不明白什么是boilerpipe的对象层次——我花了很多时间就为了扩展特定对象的相关功能。
接着我发现我使用的HTML解析器是线性的,所以没有明确的方法可以确定哪些子节点属于什么父节点。
最后我几乎将所有的时间都用在了将计算结果添加到HTML中——在DOM中的每个节点前添加数字。
我的个神哪!
乐观的程序员
当你和一个程序员交流的时候,最好谨记,这个群体都是乐观主义者!是的,即使是最最心灰意冷、总是四处碰壁的老程序员也经常出奇的乐观。因为我们是这样一类人:
- 总是研究技术方案会改变的项目
- 使用一堆未知的工具,然后应用于未知的领域……直到win
- 每一个新项目的环境各不相同
- 每隔几年就需要更迭所有的工具
如果你不够乐观,那就无法作为一名程序员存活下来。
话说,其他行业的人,能像我们这么乐观吗?