这篇全是网上写的,不过可以很好的解释一个面试问题。

面试的时候通常会被问这么一个问题:你为什么离职?

其中有不少人会提到这么一个原因,现在的项目代码太烂了,前人留下了很多坑,我实在忍受不了了。

这个原因显得未免太不职业了,而且可能把工作想的太过于理想化了。如果因为代码很烂就离职,那么你跳槽到下一个公司依然会面对同样的现状,因为几乎每个人,都会觉得自己公司的项目代码很烂。

我们先说说造成这种现象的原因是什么,首先,我们得相信,没有任何一个人故意把自己的代码写的很烂,每个人都想把自己的代码写的很优雅,扩展性很好,但是可能当初水平不够,在当时看似还不错的代码,日后在别人看来就是所谓的垃圾代码,我们每个人都在进步,别说别人了,你现在看你三个月之前的代码,可能你都会觉得写的很垃圾,如果你没有这种感觉,只能说你在止步不前。

其次,技术更新换代太快,市场的变化也太快,产品自然也一直在演变,也许在当时看起来还不错的代码,随着时间的推移,功能的更新,代码的堆彻,慢慢就变成后来者眼中的烂代码了。

也许你说,我跳到一个新的公司,做一个全新的产品,就不用忍受那些垃圾代码了,我有信心把架构设计的非常牛逼,为之后做足够的扩展性考虑,我只能说你想的过于理想化了,我们永远没法预测未来,随着需求与市场的变化,我们的功能一直在迭代,我们的产品也一直在变化,你会发现很可能你之前花了很多心思设计的架构,完全被推翻了,尤其在新产品刚推出的阶段,这是一个快速验证快速迭代的阶段,你的理想化的技术性思维,对产品没有任何帮助,随着产品的更新迭代,代码的不断增加组合,慢慢的你就会发现,你的那些优雅的代码设计,很可能就是你自己口中的烂代码,这是一个必然的结果。

这里也衍生出一个问题,在产品的初期,不要过多的考虑架构设计、性能优化之类的,先把主要精力把功能实现,把产品的体验提升上去,技术人总是沉醉于先把自己的代码写的完美,其实殊不知,产品能不能成还是一回事呢,先实现再优化,是当今快速发展的互联网市场最基本的原则。但是你也没必要故意把代码写的很烂,想着以后单独抽时间去做重构,我以一个过来人的经验告诉你,给你单独的留出时间去做重构几乎不可能。

所以,如果一家公司各方面发展还不错,仅仅因为代码很烂就离职,跳槽到了另一家公司很可能更糟,而且越是成熟的产品,代码遗留问题就越多,包括 Google、BAT 等大型互联网公司依然如此,如果你觉得这家公司还不错,想一起发展下去,代码很烂的话那就试图去改变一下,给你单独的时间去做重构很难,那就一边开发功能一边重构,一边迭代一边优化,在不影响产品迭代的情况下,尝试着去做些力所能及的改变,在这个过程中你会发现,其实你也在慢慢的成长。

大部分人其实都在抱怨环境,只有极少数人会去做点改变,哪怕这些改变微不足道,有些时候,你很可能会因为这些微不足道的改变,得到一些更好的机会。