问题代码主要作者来源如下:
a)一些前员工的遗留代码其实他们写的时候比较赶时间,肉眼可见的仓促,没有doc,没有注释,没有现有员工十分了解,理解这部分代码只能靠自己看它和debug。
b)也有一些属于现有老员工(老员工定义为5-7年+)的代码其实写的也比较着急,或者原本他们是学别的专业的并不是强计算机背景,但是人家已经升职为级别比较高的老板。
c) 还有一些代码是从另一个比较老的代码库migrate过来的,基本难以知道原作者是谁,很可能是待得时间最长的大老板噢~
我很想了解安全且友善地优化代码库的方法或者经验。
从技术方面,因为上述2-5,楼主担心自己改的东西能不能足够安全的bring the change i want。毕竟现在在我看来十分应该被优化的部分,其实只要人人都避开绕着走装看不见它的缺点,也是用了这么久没出什么大问题的。
从打造自己reputation的角度讲,精力也许应该在做新项目上,这样才能有impact, 对于升职有帮助,以后即使跳槽也能简历好看。很大精力改一个已有的东西,付出的努力根本没法讲难以量化啊。.1point3acres
从人际关系角度,对于a类authors根本没有人讨论到底这个地方是否有什么深意故意写成某种,也没有文档。对于b/c类authors, 就是不想得罪上级了,因为不知道对方是否会足够open mindset不介意后辈提出修改意见。
这几点看,优化已有代码库,似乎是个得不偿失的事,费时费力影响自己主要的精力投放地点,还可能会对上级评价有影响...
我接触过科技公司,也接触过各种大中小型的金融机构(主要是银行),我的感受是:很不一样。银行里大家更普遍的想法是live and let live,保住稳定的工作就好,做好自己被ask的份内事,所以很多根本性的改变很难推进,即使大家都知道这些改变长期来讲是对的。周围也会有很多各怀心思、一言难尽的队友和领导,做出很多本质上也没有大“错”但是各种细节问题质量很低无法scale的东西,然后交到你手上,根本原因还是技术和意识落后,短视,项目也没有足够的资源,大家被逼着在规定时间内deliver(金融机构现在都是勒紧裤腰带过日子,budget能省则省,一旦批下来很难改,如果做到一半发现做错了或者scope上需要扩张,基本没有回旋余地,只能硬着头皮糊弄过去)。当然到头来,像楼主说的,经过一番cover up, 这些东西还是work的,就像纽约的地铁,摇摇欲坠,哪里坏了加班修一下,倒也养活一帮人。如果一切都做到完美,自动化,代码清晰,那很多靠嘴皮子吃饭的人是不是就要失业了。
. Χ
但是话说回来,我还是支持楼主在不overwelm自己的情况下去do the right thing的。首先这是个文化上top down的事情,楼主最好能找到跟自己想法一致、技术出身的同僚、领导,统一战线,春风化雨。然后像楼主自己说的,你要能证明impact,能showcase你的改进能带来怎么样的切实的好处,比如现状已经造成了多少的issue,cost了多少resource去修,简单讲就是画饼,往夸张了说,当然这点挺难的,很多impact很难具体化。可以挑一个相对容易改进且重要的模块做一个pilot。然后就是不管做了什么一定要有visibility 不要自己默默做了,改了,email了就完了,要follow up,要开会讨论,要check in大家force大家adopt。