关于程序员,有个用人大忌,那就是用人不疑,疑人不用,但现实生活中,怀疑一个程序员的能力这种事情却经常发生。如果您怀疑对了还好说,如果怀疑错了,再想去收回这份怀疑,估计程序员是很难接受的,我恰恰就遇到了这样的事情!

打开网易新闻 查看更多图片

在一个项目中,我写的一份算法本来特别稳定,但缺点就是耗时比较长。客户找到我,问我有没有办法将算法的耗时稍微减少一点。我研究了下我写的算法,没看出来有什么可以优化的地方,于是就建议客户升级计算机硬件来提高算法的执行效率。

同事觉得我的算法写的有问题

客户本来都已经同意了,但是我们公司有一个专门写算法的程序员小Z觉得没有必要,然后看了下我写的算法,说可优化的空间还很大!

因为我不是专门写算法的,于是就请教了下小Z。他告诉我,我写的算法从开始的思路就是错的!

这里的所谓算法说起来比较复杂,我举个例子吧!可能不恰当,但可以帮助大家理解。

比如现在有一片草原,草原上有花有草,算法所需要做的事情就是判断花是什么花。

我的做法是先获取到所有非绿色区域,这样剩下的就只有花和其他杂色,比如说一些枯萎的草会呈现黄色,然后再根据非绿色区域的形状和颜色判断它是枯草还是花。

耗时的部分主要是判断剩下的区域是枯草还是花的那部分代码。

但是,小Z跟我说我的这种做法不对,他建议我先把绿色区域直接先过滤掉,再去获取花,这样算法就会好处理很多。

注意下我俩算法的区别,我是直接获取花,他的做法是把绿色过滤掉,再获取花。从算法角度说,虽然我的做法只有一步,他的做法需要两步,但是他的做法是会比我的算法耗时少一点的,这里是一个知识点,涉及到专业知识,这里就不说了。

但不管怎么说,他的做法虽然能够提升一定的速度,但产生的影响非常小,打个比方吧,如果客户要求省1秒时间,他的做法虽然省时间,但是只能省10毫秒。

所以,我就把我的想法告诉他,并且说为了省这10毫秒,我后面的算法几乎要全部重写一遍,不划算。

然后,他说我算法里有很多没必要的判断,也可以优化。我告诉他,我代码之所以有那么多判断,就是因为项目在实际运行过程中出现过得,去除了这些判断虽然会提升算法效率,但是却会影响程序稳定性。

然后他就一一针对我代码里的一些判断语句逐一询问,问我这段代码有什么用。

因为这个项目比较久了,有些判断我也迷糊,所以有几个判断我一时记不起来当初加进去的目的是啥。

小Z就说,不知道是干嘛的就去掉!

听他这么说,我肯定不干,因为我知道目前项目之所以这么稳定,就是因为有这么多判断语句在里面起的作用,删了肯定会出问题。

见我不干,小Z就当着客户面阴阳怪气的说:“那没办法了,自己算法写的有问题还不愿意改,那只有升级硬件了!”

硬着头皮改算法

客户此时也觉得,我怕麻烦,不愿意改代码,因为这块的算法的确麻烦。虽然客户没有像小Z那么直接,但也让我尝试着去改下算法。

我见客户发话了,我也没办法,所以就只能硬着头皮改了算法,并说我不敢保证我算法改完以后程序还能保持现在的稳定性。

客户连连答应,此时客户给我的感觉就是他更加信任小Z,对我的能力产生了怀疑。

果然,程序没跑多久,就频繁出现各种问题,因为这个算法是用来检测产品的,因为算法出现问题影响了客户那边的生产。

然后,客户找到我,让我把问题解决掉,而客户那边生产出现问题后,我根据问题又重新回忆了一下我之前在算法里面的一些判断,之前说不清楚的判断条件现在都清楚了。

然后我又把这些判断加上去了,最后程序又稳定了,但是问题又来了,时间又增加了!

当然,又回到了刚开始的问题,那就是继续改算法还是升级硬件。

我仍然建议升级硬件,但小Z依旧认为算法还有优化空间。

此时我觉得他在旁边有捣乱的嫌疑,但是因为他是专门写算法的,专业性比我强我又不好反驳,于是就跟客户说:“不行你就让他写一版算法吧,在我这里我已经无能为力了!”

结果,小Z还答应了,非要跟我杠到底!

结果

文字有限,这里就不多说了,总之,这个小Z写的算法跟我开始改的差不多,因为考虑不周,总是影响客户生产。

过了一段时间,客户又找到我,问我还有没有办法,因为他感觉现在比以前更差了!

但是,此时我已经不负责这个项目了,就是因为小Z的介入这个项目,我就被调到其他项目里去了。

想起过去种种,实在不想理这个客户了,但是看他诚恳的样子,我说我可以将算法代码恢复到以前的版本,但是解决办法还是我之前说的那样,升级硬件!

最后,客户只能采取我的方案了!

结语

我和这个客户的关系其实一直很好,客户一直一来都非常认可我的能力,后期项目之所以特别稳定,主要还是我俩相互信任的结果。

但是,就是因为有人横插一脚,让客户对我的能力产生了质疑,最后客户白白折腾了很长时间,还是选择了我的方案。

最后,我想说的是,可能我的算法的确没有小Z写的好,但疑人不用,用人不疑!最后即使项目又重新变得稳定了,但不是白耗了那么长时间吗?