为什么大型互联网公司,技术和管理这么差劲,是怎么形成的? 一个不可否认的事实是,并非所有一流大公司的所有软件研发部门都这么差。 大公司的一些项目团队技术差、管理差的现象在江湖上并不少见,尤其在软件工程基础和意识多年来都很薄弱的中式江湖就更不奇怪了。即便是一流企业,通常也会有一些表现差的二(三)流团队和部门。按照通常的逻辑,我不相信这些现象会出现在一流龙头企业的核心产品研发部门,所以最大可能这些是题主在一个二三流、非核心、管理较差的研发部门实习过程中看到的情况。 造成一个团队或部门技术差的原因其实也很明确: 主要是因为管理水平(如工程管理、技术管理、研发管理、项目管理、质量管理等等)差造成的。所以,板子应该打在相应的领导、管理者(如架构师、项目经理、研发经理、技术主管等)身上,而基层的码农可以说基本无责。码农的表现差,那也是因为领导把他们招进来,培养、培训、管理、带出来的。所以,团队技术差的主因通常是因为技术领导、技术带头人(架构师)的水平差。 还有一些其他相对次要的原因,例如,公司发展太快,招人太多(大部分是低技能的编程新手),一时技术管理更不上,领导顾不过来,等等。 那么,为什么“糙快猛”开发模式无论对于中式江湖、美式江湖都是有效的? 西方的软件工程专家们对此有个很好的比喻和解释:Design Debts(设计债)。题主所列举的这些问题和想象无非是软件工程中一些常见的设计债、技术债或管理债(Management Debts)。用负债来打比方是很贴切的。 首先,不要忘了,我们开发软件的目的是为了什么?纯粹为了技术而搞技术?这种想法太嫩,太天真。IT/软件/互联网企业的第一要务无疑是赢利、赚钱,有了充足的现金流企业才能生存、持续发展,所以经济面的考虑、搞经济必然是第一位的(Money First),搞政治(让公司权力掌握在谁手里)排第二(或第一位)。 可是公司赚钱一定要有很好的技术,很好的管理吗?不一定啊,你看江湖上不是还有很多二三流企业活得很好很滋润么。把东西、服务卖出去,首先靠的是销售(Sales)、营销(Marketing)、关系(Guan Xi)等等那些最重要的手段。必要的时候还可以来点忽悠,不要小看了忽悠,几千年来人类社会的实践充分证明忽悠也是生产力,高水平的忽悠更是一门艺术。而技术差点、代码乱点,只要不捅大篓子,问题其实不大的,只要产品能买得出去,系统还能运行,公司还有源源不断的现金流,还能掌控足够的市场份额,有什么必要劳师动众、劳民伤财来改进管理、改进技术,让现任领导们难堪么?产品和代码质量差不多、马马虎虎就可以了嘛,怎么算这都是一笔划算的经济帐、政治帐。所以,像改善软件工程管理、提高代码质量、提升员工技能水平等等这些科技、技术方面的考虑因素顶多排在许多领导优先考虑的第三位。 当然,技术差、代码质量差、架构设计差、项目管理差等等这些日常开发中的诸多缺点、问题和不合理现象是以一种负债的形式欠下了,而且债务还再不断地累积,这有影响吗?不要忘了,欠债总是要还的。为什么这些差劲的现象不严重,还可以持续,领导们也不重视?因为:从量变到质变,还没有到发生质变的临界点(还债)的时刻。问题来了,什么时候还债呢? 以上,我从软件工程学、公司政治经济学、管理学的角度对为什么中国软件业的一些一流大公司也会存在一些软件工程技术差、管理差的团队和部门作出了解释。不服可以来辩。 以下对题主所列举的一些 Bad Smells 进行简短分析。 架构师水平差一个项目里,httpclient竟然出现了四种。 一个项目里采用的同一个功能构件竟然同时出现 4 个来源不同的版本应该说是反常的,也许在一个大公司的几个不同部门、产品线之间出现这种现象还能容忍。这个项目组的架构师去哪里了?难道就不能做点深入的技术调研,尽量作出一个统一的选择?当然,也许这个项目组正在同时对这 4 个 httpclient 进行比较实验。排除这种情况,感觉这个项目的技术管理是失控的,或者是因为这个项目的架构师岁水平不行,无法服众。 打接口请求响应日志,竟然不知道用拦截器。 同上,我还是觉得这个项目的架构师水平不行,没人懂 Logger 的价值,自然不会有人来作出规范。 所有服务间通讯,都没有设requestId,导致跟踪会话很困难。 同样是架构设计的问题,requestId 这应该很容易想到吧。 几乎没有文档,全靠从代码反推逻辑。 这个项目组的架构师会写文档,有时间写文档吗? 程序员们都是得过且过的态度,怎么把代码灌进去,跑的通测试,就算交差了。 一个项目组、团队没有一个靠谱的技术带头人,结局必然是这样的。 码农技能差为啥一个项目组的码农技能差,代码惨不忍睹?因为大公司图便宜和高性价比,招了大量的嫩手,却又不给有效的在岗培训。 开发自测,居然要把代码全丢到公共机器上,而且都是走svn,他们把svn当ftp用。 难道是半拉子的 CI?可怕的是这个团队没有一个严格的开发流程规范,怎么提交代码,怎么集成,怎么测试。。。基本采取放羊式管理,责任还在架构师。也有可能是新员工培训的问题。 有枚举他不用,非要在每个页面上,把枚举值挨个儿写死,知道后面改代码多么费劲吗? 江湖俗称 Hard Coded。可见大公司招了许多嫩手。 代码写的一团糟,全是复制粘贴,连作者都没改,大家普遍不写注释,也不格式化,代码歪歪扭扭。 估计这个项目组是不可能有代码规范的,也没有 Code Review(包括工具),当然也可能规范神马的都有,就是无法有效执行。 知乎作者:张恂老师 |
| 本文出处: http://www.toutiao.com/a6399011772791177474/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|