程序员为什么(1):为什么会有烂代码

在比较长的一段时间内,我一直都是尽力做好每一件事情,因此,做好,是最后的目标,当然,很多事情也就花费了比较多的时间。比如我把格式调整好,把测试做足,把注释加全,把测试代码写上,这些都是需要消耗时间的。因此,我之前在Autodesk工作9年的过程中,平均每年进入产品的代码行数,也就是3000行~4000行的。不可否认的是,Autodesk,特别是我们以前的AutoCAD Architecture这个产品,代码的质量,不管是宏观的设计上,还是微观的具体实现上,质量都是非常之高的,怎么说明这个问题呢。我们的同事先后陆续去了Microsoft,Google,EMC,Cisco,Paypal,EA,各家公司都是响当当的大头,体量都远大于Autodesk,然而,当大家聚会的时候,每次必说的一个话题,就是现在的代码质量怎么糟糕,以前的设计和质量控制怎么好了。当然,一个原因,可能是大家当初都是刚从学校毕业,没什么经验,现在大家工作一段时间以后,水平都提高了,因此对于同样的东西,现在的看法和以前是不一样的。但是至少说明了一个问题,AutoCAD Architecture,代码质量还是非常高的。

但是到了今天,我经历的事情渐渐多了,一些事情修正了我这个代码必须写好的观点。首先,我们来想想,既然我们以前产品代码质量这么好,为什么在市场上的规模,比同事们后来服务的产品,要小很多呢。因此,产品的好坏,并非由代码质量来决定。我们作为职业的程序员,写好代码,当然是我们的本职工作和追求的目标,但是并不能一味追求这个目标,在需要的情况,允许设计不好、实现不完美的代码产生。而且,当个人水平进步以后,当时觉得完美的解决方案,可能也会存在很多问题,因此这个追求是永无止境的。

那允许烂代码的产生,在什么情况下是可以的呢?那我来举个最近发生的例子吧。我现在这家公司,一直强调“快”,快速响应用户需求,快速应对市场变化,快速解决线上的bug。“快”是公司的文化。我以前一直不太理解,总想改变点什么,直到最近发生的一件事情,让我开始认同这个文化了。事情是这样的,我们做奶粉从英国到中国的快递,所有的货都会正规报关交税。但是海关总署突然出了一个规定,所以的奶粉,必须按照官方核定的价格交税,而不是市场的价格,比如一罐爱他美的奶粉,在英国超市货架上的价格,大概是9.5英镑,我们按照这个价格换算成人民币来报税,但是海关总署这个规定突然出来,那要按照200的价格来交税了,每买一单货,都会亏本。那怎么办呢,我们只有16个小时响应这个变化。三种选择,一是相应提高价格,那销量肯定会被影响,二是下架,暂停销售,直到我们确认执行情况,三是调整我们进关的地方,尽量根据当天的不同海关的执行情况,还有我们商品在不同海关的备案情况,选择不同商品发往不同海关报关,尽量降低成本。实际的情况要比奶粉复杂很多,一方面我们几十种奶粉,在不同海关备案的情况是不一样的,当然税率也不一样,还有海关执行情况也不一样,另一方面,客户除了奶粉,常常会一包买其他东西,这些东西应该走哪个海关入境,都有不同的策略。还有就是对我们系统的影响也比较大,突然做这个调整,系统很多东西都还没准备好。公司上上下下,英国、中国、加拿大的团队,想了很多策略,提供了很多方法,来尽快地完成这个调整,整个过程大家都非常齐心协力,最后我们在第二天用户大量开始进入以前,对大部分奶粉的价格只是做了小幅度的调整。销量被影响的幅度不是太大。当然,我们在这个过程中实现了很多烂代码,甚至直接把商品的ID hard code到了代码中,目的是节约时间,力保上线。那么如果我们不这么做,是什么后果呢?看看我们在英国最大的竞争对手就可以了,他们直接下线了一批产品,导致一个老客户,后来转投竞争对手的老客户,第二天发来100多个包裹,这是我们始料未及的事情。

你可能感兴趣的:(程序员为什么(1):为什么会有烂代码)