以下文字,看看就好,笑笑就好。
最近在被一个问题折磨,大致上是,公司内部某些技术更替的关系,要把原有的一个鉴权的组件 A 淘汰掉,迁移到一个新的替代品 B 上,我估摸着也就一天时间搞定它绰绰有余了。没料想一猛子扎进去就没那么容易出来了,替换完成以后的测试傻了眼,发现了一个诡异的问题,于是追根溯源,把牵涉进来的林林总总一一拖出来检查排除枪毙,环境比较复杂,debug 起来又比较头疼,折磨了三天半的时间;最后还靠这个替代品 B 的问题列表里面,有某下游产品的工程师跳出来说是这个替代品自身有问题,分析代码怀疑是如何如何的一个 bug,于是我也按照这个思路修改它的代码,编译并且打上补丁以后,才发现确实修复了我遇到的问题。这才让我安下心来。
期间也尝试寻求过一些帮助,但是并没有人能给出实质性真正有帮助的意见建议,要么就是根据经验判断问题所向,要么就是高屋建瓴,方法论上面指导指导。这些人关注问题的角度和重点,明显都不在一个层次上。我觉得大多数时候,工程师最需要的,还是代码级别的帮助。在产品复杂了以后,对于问题的定位往往不容易进行,都说软件的复杂性是唯一的敌人。在问题解决以后,我当然需要总结和回顾始末。如果重新来一遍,如果我能够早一点涉足代码,可能浪费的时间会少很多;但是很多时候这样的总结又是不靠谱的,毕竟也遇到过过早扎进代码里面绕不出来的情形。这样的矛盾似乎永远平衡不了,就像让任何人估算工作量一样,以前觉得工程师估算不靠谱,后来发现没有人估算很靠谱。兴许软件的世界里面工作量它本身就是个伪命题。
工程师就是要解决具体问题的,工程师的层次就在代码上下,向上跑一点就到了概要设计层面产品层面,甚至某些狭义的方法论上面;向下跑一点就到了那些零零碎碎的语言细节和问题坑。但是怎么也都不能跑出这个大致的圈子太远,就好像对于正在学习实践怎么钓鱼的学徒,和他讲钓鱼对社会主义现代化建设事业的意义,或者是扯钓鱼与人生修养,都没法给他带来实质性的帮助。所谓的那些得道高僧一句两句点拨的故事,都是写在故事会里的,都是写在青年文摘里的,都是写在格言里的。真正做技术的人,是没法拥抱热爱心灵鸡汤的。工程师只想提意见,不想听委婉的否定。他们只会说,去 TMD 理论,能帮我 fix 了这个问题么。
还有一个扯淡的故事,说有位建筑民工最终成为了伟大的建筑师,他最初做的工作其实和其他民工兄弟是一样的,只不过它的境界层次不同,他看到的不只是一块砖一片瓦,而是整栋大楼的崛起。我觉得这纯属瞎掰,第一民工和建筑师几乎就不存在互相转化的可能,因为问题的关注点和需要的知识技能大不相同,第二真正整天关注整栋大楼崛起的人也不可能有精力落实好一砖一瓦。我想我砌砖头的时候考虑的多半是拖欠我半年的工资啥时候能发。
通过上面这个演绎得乱七八糟的问题我紧密相关地想到了另一件事—— 有一位同事最近在被另一件事物折磨,这个折磨纯属来源于悲惨的遗留代码,代码写得如此之烂,给人的感觉就是:面对着一坨稀烂稀烂的屎,你拿着各种五花八门的工具,用各种姿势和技艺去搅和这坨屎,以期望把它搅成各种形状。技术再高,工具再强大,屎就是屎,一点也不会改变。通常遇到这种情况我要是能有选择权的话,在我没有精神强大到一定程度以前,我肯定希望躲得越远越好。
就是面对着这些状况,伴随着各种奇形怪状问题,还要填写超级冗长的工程师工作环境的调查问卷。无可厚非这无比友善光明的伟大目的,但是就遇到的这些问题而言,身为工程师应当沉下心来把一坨又一坨该死的代码整理清楚。而不是花时间在那些已经相对还不错的物理工作环境上面继续挑三拣四,抱怨温度高了 0.4 度还是噪音响了 0.6 分贝。遗憾的是,我以为我可以在生命中不断遇得到更专注于代码的环境,后来却发现各色闲杂事务却一直挥之不去,我只能在繁忙的缝隙中寻找一丝喘息的平衡。我觉得在伟大的世界观和方法论上面,这些有影响的人物忽略了一件事情,那就是我们的层次,工程师和普通人类不同的地方,或者说层次高那么一点点,或者装那么一点点(请允许我此处如此之得意忘形)的地方,就在于除了吃饱穿暖环境优雅生活舒适以外,我们还追求代码层面上相同的标准和享受。
在越来越谨慎的部署,越来越严格的流程,越来越频繁的沟通之后,我们也自然会越来越谨小慎微,越来越想规避风险和撇清责任,屁大的针细的事情都不得不和东方爷爷解释清楚,再跑到西方奶奶那里说明过程。时不时地还有哪位不识趣的高僧过来催进度,其眼中似乎只有时间点。这是我在几年前看到的一种伟大境界(另一种更伟大的境界是眼中只有人力和时间点,那要更高级一层),曾经以为这样的现象会渐渐消失,后来发现世界还是五彩缤纷的,我见到过的一切都只是世界这个万花筒中的一小部分而已。你关心的,往往很难会有人关心,他们关心你,更多的是对于普通人类的关心,友善而且细致,但你是奇异物种软件工程师,你知道你关心的问题并不一定会有人理会。
所有这些,我知道我抛出的所有观点都会得到不同的认可以及非议,我也尝试过让自己反省并且寻找一个合理的解释,后来发现其实我本来就没有错,最根本的原因,也许,只是,我们层次不同。
文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接 《四火的唠叨》
细节.
对工程师来说,学习一个技术过程中,踩坑型的实践肯定帮助最大,而且大家都会这么成长
但逐步娴熟后,就会遇到瓶颈,这时一些所谓的高屋建瓴往往能打开你新的思路,所谓大师一般不会教你趟坑技巧
仍在人力和时间点里挣扎,努力寻求上岸中。
兴许软件的世界里面工作量它本身就是个伪命题。
我喜欢这一句。
同意,只知道催进度,掐时间点,然后不断开会。
工程师需要踏实的去砌好每一块砖,那些高屋建瓴的,或者模棱两可的都是扯淡。
当然结局大家都看到了,没人去认真的读代码,设计代码,结果中国的软件业还是这样。
最多就是在 master 上面打几个补丁,那些国内已经开源出来的,基本上可以认定已经奄奄一息。
文章写的真好