写代码、做项目与人生的相同之处

110 阅读7分钟

写代码,做项目也有几年了,可能是思维比较发散的缘故,或者充分发挥了“抽象思维”和类比,时常感觉,这些事情跟我们过生活还是蛮像的。

tips:本文没有太多的科学依据,仅为个人生活经历和观察总结(鸡汤)。

时间管理及能力预估

在项目中,不知道是否有人统计过自己预估的时间和最后实际完成的时间。现实中,不少人都容易高估自己的完成时间,尤其是新手。

即使考虑到侯世达定律,它也总是比你预期的要长 —— 侯世达定律

生活中,大家对于自己完成一些任务的时间也是容易高估,往往在 deadline 到的时候才“半夜熬油补裤裆”(我们那的一句方言)。都是学生过来的,估计也深有体会。

人对于自己的能力也普遍是高估的,有这样的段子说,80%的人,认为自己的开车水平,处于平均水平以上。

项目如果没有规划好,或者只会“水多了加面,面多了加水”,那并不是从根本上去解决问题,一旦遇到无水,无面的情况,尴尬可想而知。

如果不提高根本的能力,只是通过外援、金钱等方式逃避式解决问题,真正遇到问题的时候,还是会举手无措。

软件开发后期,添加人力只会使项目开发得更慢 —— 布鲁克斯法则

谚语 九个女人不能在一个月内生一个孩子 与布鲁克斯法则意思类似。

做项目的时候,不可避免地需要做一些技术调研,实际生活中,有时候也需要我们去“预习”,但实际情况往往是,很多人仅仅是应对眼前的问题已经精疲力尽了,很难有时间去考虑风险,考虑比较长远的事情。今朝有酒今朝醉。当然,这个尺度确实比较难把握。

扁鹊三兄弟不仅仅是寓言故事,也更是实际生活的写照。善战者无赫赫之功更适合当做理想情况或者理论来分析,实际情况很容易被认为是“没存在感”等等。养寇自重有时候也是一种环境的产物。

项目管理及复盘

在开始编写代码或项目之前,需要有一个清晰的规划,比如需求分析、设计架构等。有经验的开发都知道,先不要写代码,先大致思考下需求,画个流程图等等。理着理着,思路有时候就清晰了。

一般来说,如果认认真真地把整个项目做下来,是非常能够提升一个人的整体能力的。

哪些功能要先做?哪些可以先放一放?哪些必须提前做?哪些是在别的功能完成之后才能开始做的?时间比较紧急的情况下,如何保证开发进度?

假如与计划不同,中间领导问你的进度该如何回答,假如团队中有人请假或者离职了该怎么办?

这些都是实际开发中会遇到的问题。而这些能力,无论对于从事什么工作,都是有用的。

在人生的各个阶段,我们也需要设定相应的目标和计划,有一个大致的了解更好。虽然说人的命运各有不同,但是有些大致的框架还是比较像的。小学、初中、高中等等,生老病死。

良好的文档可以帮助人们理解和维护代码。有经验的开发都知道做笔记,总结一些实际中遇到的问题。

记录自己的经历和反思可以帮助我们更好地理解自己的成长轨迹,也可以更好地应对未来。

不二过 似乎是比较难做到的。更多的情况可能是在一个坑里面重复跌倒。痛了的,可能会好点,下次会注意。

总有人嫌弃别人不写文档,但是自己也不写文档。自己写着屎山代码,然后在维护屎山代码的时候问候几句前人。

DRYDo not Repeat Yourself 的缩写。这个原则旨在帮助开发人员减少代码的重复性。

我们终其一生,总会有很多事情足够遇到很多次,如何避免忘记带钥匙?如何做到不迟到?如何学会沟通、学会学习?

生活总是很有趣且充满了讽刺,当你觉得自己这次就可以过去的时候,他还会在下次等着你。第三次你觉得总不会后面还会这样了,谁知道遇到了第四次。就这么在纠结和麻木中,过了一辈子。末了可能会想,假如,假如当初在第三次的时候,就总结好经验,该多好啊。

不可抗力

有时候总要接手别人写的代码,或者被拉入到不熟悉的项目中,有时候这些都不是自己能决定的。改着不是自己写的bug总是会有些怨言的。

如何快速熟悉一个项目,如何承担不属于自己的问题,如何面对困难重重的局面?这些都非常考验一个人的逆商。

实际上,反而是顺风顺水过多了 的,无法应对这种复杂的局面。越是各种高难度,非常规的情况,越是考验一个人的整体能力。

生老病死,各种意外,突发情况都不可避免,只有平时打好基本功,才能在遇到问题面前游刃有余,尽自己最大的力量。

父母(原生家庭)、出生地等等,这些都不是自己能选择的,不过可以在后天有能力的时候,及时认清对自己的影响。有时候用一句话有点无奈但又比较现实点的话来说就是,来都来了。

有时候,并不是之前的人要写屎山代码,可能是他们的时间比较紧,可能是人员是别的地方借来的,可能,,反正结果就是,事实已经定型,只能接受。

bug 、解决问题的能力以及重构

bug 是不可避免的,不是程序员不想把代码写好,而是,现实中就是会有 bug 出现。

软件开发往往采用迭代的方法,逐步完善产品。

人生亦是一个不断迭代和改进的过程,我们通过经验学习并不断优化自己的行为和决策。这是一条不管是被动还是主动,都需要走的道路,与其被动,不如主动。

重构最好发生在每周或者每个月,但是总会要有。不然可能会改起来很难,时间长了,代价更大。

人的问题也一样,年轻的时候还好说,还可以改,越长大,性格已经逐渐形成且固定,往往积重难返。如果遇到什么变故可能会有变化,否则,习惯的力量是可怕的。惯性太大,多少也会形成路径依赖。

有时候,改了重要的bug,其他bug就随之消失了,有时候,再等等,说不定产品需求做着做着就没有了。

有时候,改一个bug,还可能会引起其他的bug出来。有时候 bug 还可以变为 feature

有时候,bug 是有频率的,有些bug出镜率特别高,很多人都会遇到,提前了解下,或者把时间多花在这上面更好些。

有时候,有改 bug 的时间可能都可以把相关的知识学习一遍了。所以,与其把时间浪费在改 bug 上,不如把基础打牢。基础不牢,地动山摇。

生活中大多数事情不是均匀分布的。 —— 二八法则

总而言之,解决问题的能力至关重要