前一段时间一直在面试,有不少感悟,今天分享下其中的一个话题。面试
我在面试的时候一般会问这么一个问题:你为何离职?性能优化
其中有很多同窗会提到这么一个缘由,如今的项目代码太烂了,前人留下了不少坑,我实在忍受不了了。微信
其实在我看来,这个缘由显得未免太不职业了,并且可能把工做想的太过于理想化了。若是由于代码很烂就离职,那么你跳槽到下一个公司依然会面对一样的现状,由于几乎每一个人,都会以为本身公司的项目代码很烂。架构
咱们先说说形成这种现象的缘由是什么,首先,咱们得相信,没有任何一我的故意把本身的代码写的很烂,每一个人都想把本身的代码写的很优雅,扩展性很好,可是可能当初水平不够,在当时看似还不错的代码,往后在别人看来就是所谓的垃圾代码,咱们每一个人都在进步,别说别人了,你如今看你三个月以前的代码,可能你都会以为写的很垃圾,若是你没有这种感受,只能说你在止步不前。性能
其次,技术更新换代太快,市场的变化也太快,产品天然也一直在演变,也许在当时看起来还不错的代码,随着时间的推移,功能的更新,代码的堆彻,慢慢就变成后来者眼中的烂代码了。优化
也许你说,我跳到一个新的公司,作一个全新的产品,就不用忍受那些垃圾代码了,我有信心把架构设计的很是牛逼,为以后作足够的扩展性考虑,我只能说你想的过于理想化了,咱们永远无法预测将来,随着需求与市场的变化,咱们的功能一直在迭代,咱们的产品也一直在变化,你会发现极可能你以前花了不少心思设计的架构,彻底被推翻了,尤为在新产品刚推出的阶段,这是一个快速验证快速迭代的阶段,你的理想化的技术性思惟,对产品没有任何帮助,随着产品的更新迭代,代码的不断增长组合,慢慢的你就会发现,你的那些优雅的代码设计,极可能就是你本身口中的烂代码,这是一个必然的结果。架构设计
这里也衍生出一个问题,在产品的初期,不要过多的考虑架构设计、性能优化之类的,先把主要精力把功能实现,把产品的体验提高上去,技术人老是沉醉于先把本身的代码写的完美,其实却不知,产品能不能成仍是一回事呢,先实现再优化,是当今快速发展的互联网市场最基本的原则。可是你也不必故意把代码写的很烂,想着之后单独抽时间去作重构,我以一个过来人的经验告诉你,给你单独的留出时间去作重构几乎不可能。设计
因此,若是一家公司各方面发展还不错,仅仅由于代码很烂就离职,跳槽到了另外一家公司极可能更糟,并且越是成熟的产品,代码遗留问题越多,包括 Google、BAT 等大型互联网公司依然如此,若是你以为这家公司还不错,想一块儿发展下去,代码很烂的话那就试图去改变一下,给你单独的时间去作重构很难,那就边开发功能边重构,边迭代边优化,在不影响产品迭代的状况下,尝试着去作些力所能及的改变,在这个过程当中你会发现,其实你也在慢慢的成长。开发
大部分人其实都在抱怨环境,只有极少数人会去作点改变,哪怕这些改变微不足道,有些时候,你极可能会由于这些微不足道的改变,获得一些更好的机会。产品
本文原创发布微信公众号 AndroidDeveloper,欢迎关注,听我扯淡。