最近一个朋友进入梦寐以求的大公司,和我抱怨了下,他们大公司代码写的也不怎么好,连他一个菜鸡都能看出逻辑漏洞,都没人改。让他有点怀疑人生了。那么为什么有的大公司代码也会如此烂呢?

很多人第一个给的原因就是:历史原因。可能这是最重要的点,如果是老项目,几乎每个人都是一来接手一个项目,如果之前维护这个项目的人,水平比较高,代码行云流水,代码规范,逻辑严谨度都很高,恭喜你,你获取一个学习优秀代码的成长起点。对于你是幸运的,鱼哥之前接触过这样的项目,真是写的好,巧妙的设计模式,逻辑清晰,和读系统源码一样。但是你没那么幸运,接手一个水平不是很高的团队维护的代码,那你就有事情做了,重新写,还是重构。烂代码跟一坨屎一样,很多时候就是和一坨屎共处千万别深挖,说不定把哪里挖塌了把你埋了,扔一坨代码到屎山上,达到自己目的,能跑就行了,你还要搞清楚山上的屎哪一坨是谁拉的,拉的人吃了什么,就没什么意思了。能在超级大的屎山上扔一坨代码进去,把自己的事干了,也是本事真的,毕竟谁没维护过烂代码。复杂度足够大,都会成为屎山的,什么设计模式都没什么鸟用。这时候可以花时间加班来重写吧,不然你干不下去的,等着你的要么走人。

大公司业务逻辑复杂这点很容易理解,一个系统和N多系统集成,一个业务对象上百个字段和几十种状态,一个流程几十个环节。大公司人员变动大很多开发的还是外包人员,外包人员的流动性可想而知。技术更新换代代价太大。但没有人敢去推倒重来,单单修改后的测试工作量就不可小觑。而且改好了无功(不出绩效),改出问题了谁都负责不起,所以只要代码能工作,后面的开发都是在上面修修补补,导致整体代码千疮百孔惨不忍睹。技术leader只关注功能,不关注代码很多leader其实根本不是写代码写上去的,而是直接就去做了“架构师”,说实话他自己都写不好代码,这也是很主要的一个原因。

还有,领导也不会关心你什么技术实现,不会关心你是10行代码还是1000行代码。所以,这种背景下,要把代码写得好到好像一个人写的一样人能看懂,还是很难的。老代码只要没有毛病,没人会去优化装饰,没有人会去干这些吃力不讨好的工作,代码重构/代码评审很多时候是流于形式,只是说说而已。有些大项目每年的代码量以50%速度增加,真是好大的负资产啊!

那有人说,大公司不是每个人技术都很强的么?有这个想法的人,你就大错特错了,大公司每年都会校招很多应届生,有些应届生在短短几年后成才起来,跑路了,有些没有成长起来的,还是要持续写代码,那么自然就有隐患了,如果不是很精干的工程师来负责review代码的话。就会变成一个一坨屎坑。面试时,招大牛是需要价钱的,很多公司由于成本原因,并不会这么去做。

一个团队,在任何时候,都应该分辨得出:
分辨什么样的烂是真烂,什么样的烂是业务复杂;
分辨不出,就不要去修改。

也应该积极寻求:如果是业务复杂,能不能更简化更抽象一些;如果是烂,能不能在有限的成本中改好一些。

为什么有的大公司代码也很烂?相关推荐

  1. 大公司程序员 VS 小公司程序员 | 差别在哪?

    很多大学生毕业之后,都希望能进互联网大厂,但是大厂并没有那么好进,不说别的有的学历就会把你卡在门外.但是大厂有大厂的优势,小公司有小公司的优势.根据自己的需求选择自己合适的公司,才是最重要的. 大公司 ...

  2. IT人的纠结:去大公司还是去小公司?

    对于 IT 人来说,选择到大公司工作的理由可能有:觉得"钱多人傻,干嘛不去?";有人认为 "机会多,有发展"; 也有人被小公司的眉毛胡子一把抓吓怕了. 去大公司 ...

  3. IT 人的纠结:去大公司还是去小公司?

    对于 IT 人来说,选择到大公司工作的理由可能有:觉得"钱多人傻,干嘛不去?";有人认为 "机会多,有发展"; 也有人被小公司的眉毛胡子一把抓吓怕了. 去大公司 ...

  4. 【实习】在大公司实习六个月后的收获

    从大三的暑假开始,我就一直在某互联网公司一直实习到来年的一月份,算起来也六个月了,经历过这六个月的洗礼,颇有感想,假如自己没有这段经历的话,或许自己会错失职场和技术上的收获.我始终相信,所有的经历无论 ...

  5. 做产品,大公司克制,小公司放纵

    前段时间,微信小商店开放了个人版,相信大家都知道.抱着试一试的心态,申请了一下.整个过程还是挺快的,很顺利的完成了开店.商品上架. 这些东西全部弄完后,有一个直观的感受,那就是小商店比我想象中的要简单 ...

  6. 程序员找工作时,大公司 VS 小公司,应该如何做出正确的选择?

    找工作跟找对象差不多,在确立关系领证前,彼此要多些了解.在了解的基础上,你再确认是否真心喜欢对方,彼此身上有没有相互吸引的特质,两个人的性格是否互补.三观是否匹配.契合度越高,往后才能相互扶持.彼此成 ...

  7. 大公司 vs 小公司,你会选哪个?

    找工作跟找对象差不多,在确立关系领证前,彼此要多些了解.在了解的基础上,你再确认是否真心喜欢对方,彼此身上有没有相互吸引的特质,两个人的性格是否互补.三观是否匹配.契合度越高,往后才能相互扶持.彼此成 ...

  8. 大公司里怎样开发和部署前端代码

    作者:张云龙 链接:https://www.zhihu.com/question/20790576/answer/32602154 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

  9. 大公司里怎样开发和部署前端代码?

    这是一个非常有趣的 非主流前端领域,这个领域要探索的是如何用工程手段解决前端开发和部署优化的综合问题,入行到现在一直在学习和实践中. 在我的印象中,facebook是这个领域的鼻祖,有兴趣.有梯子的同 ...

最新文章

  1. python进程监控 supervisor_python supervisor进程监控工具的使用
  2. python画笑脸-python 学习笔记——学会用turtle画笑脸
  3. python简单代码运行_python代码如何运行
  4. html5 div css 页签,div css 实现tabs标签的思路及示例代码
  5. ora-00955: 名称已由现有对象使用_ai使用路径的方法是什么?ai怎么使用路径查找器?...
  6. ArcGIS 10.5河流水系左斜体样式经典设置方法
  7. hash hashcode变化_Web安全 | 没想到 Hash 冲突还能这么玩,你的服务中招了吗?
  8. Flutter进阶—Firebase数据库实例
  9. 部署Nginx+Keepalived
  10. Martin Fowler谈微服务的优缺点
  11. 小程序生态化,Hybrid App要崛起了?
  12. LaTeX排版软件安装包及安装方法(texlive + TeXstudio)
  13. 如何把大写金额变为小写数字_excel表格技巧:怎么快速把阿拉伯数字小写金额转换成大写金额...
  14. VO、DTO、BO、DO、PO、POJO、Entity的概念、区别和应用
  15. hhkb java_为什么知乎上这么多人推荐 HHKB,却不反复强调说该键盘不适合大多数程序员?...
  16. 前后端交互流程,如何进行交互
  17. PHP微信支付 “商家转账到零钱”一文概述
  18. stm32f407 休眠模式_STM32进入和退出睡眠模式
  19. Hive基础08、Hive引入Struct结构体
  20. UltraISO 制作系统启动盘教程

热门文章

  1. 英飞凌 AURIX TC3XX 系列单片机的 NVM-Flash 介绍
  2. java 计算圆的面积
  3. teablue数据分析_智能图像分析–智能外币检测与识别-艾科瑞特(iCREDIT)【最新版】_图像识别_商业智能_数据API-云市场-阿里云...
  4. 【SymbolicLink】利用软连接将已安装程序搬迁到其他盘符
  5. 中国 CV(计算机视觉)公司大佬们的故事
  6. 吉林大学计算机学院高尚教授,【壮丽70年·人物】张松灵:肩上有担当 脚下有力量...
  7. or1k启动文件分析
  8. jsp页面在tomcat部署后访问为源代码页面
  9. java ceph_后台开发高级工程师必备技能-分布式存储ceph介绍
  10. Windows网络服务渗透测试实战-跨网段攻击