| by YoungTimes | No comments

拥抱不确定性

整个世界从来不是线性的,以人类目前的认知能力,尚无法知晓整个世界的运行机制,它们只能处理线性或者近似线性的问题。

程序员每天的工作却是追逐确定性,同样的代码逻辑、同样的输入条件,必须有严格一致的输入。如果我们发现不满足确定性,那么这个程序一定是存在缺陷的。

日复一日的与机器协同合作,极大的摧毁着程序员的创造性,大部分程序员沦为一台翻译的机器,把人类的逻辑翻译为机器的语言。它们追求程序运行的精准性,却逐渐丢失了自我对于不确定性的处理能力。

中国的大部分程序员处理不确定性的情况很少,原因在于原创性的技术确实不多,大部分时间都在做业务。它们拿到手的已经是经过层层理解形成的MRD文档,文档规定了每个页面的大小、位置、配色、交互、点击触发流程等等,它们只需要把它翻译为机器能够看懂的产品就大功告成。

但对于高阶程序员,或者追求卓越的程序员,它们的工作性质会发生本质的变化。它们的工作内容不再是coding,而是从纷繁的线索中求解出一个方向,并在这个方向中定义出要解决的问题。级别越高,寻找近似最优解的空间就越大。解空间越大,不确定性就越强,对处理不确定性的能力要求就越高。

不确定性是横跨在初级程序员与高阶程序员之间的一道鸿沟,很多人都在这里停滞不前。交给它一个任务,它处理的非常的优秀,但是要让它lead一个方向或者接收一个需要多方协作的项目,它会茫然不知所措。在多年的工作生涯中,见到听到过很多优秀的程序员,它们到了一定级别,甚至做了一段时间的leader之后,难以规划团队的技术方向或者畏惧高昂的沟通成本,最终又退回到一名“两耳不闻窗外事,一门心思写代码”的码农,不禁为其扼腕叹息。

不确定性的处理能力,是一个高阶程序员的必备素质,拥有它,你的职业生涯才能越长久,才能在持续的竞争中不断脱颖而出,不断成长。

发表评论