可能外包的代码质量更好。

在程序员的鄙视链里,大概外包是最最底端的一环。如果你找一个程序员咨询做出一个IT项目的方法,哪怕他毫无办法,他也会加一句说,千万别找外包。

他的理由大概是外包的代码质量很差。

在以前,可能真的是这样。我也见识过拿DedeCMS强撸电商和OpenCart强撸门户的代码……醉得我不要不要的。

感谢移动开发时代的到来,毕竟是全新的平台,之前的随便拿套开源的PHP代码强行二次开发的时代基本上过去了。在我创业开展外包业务这一年来,还没有见到拿套“熟悉的代码”强撸新业务的高人,同行们都兢兢业业地根据不同的平台、不同的硬件小心翼翼地逐步构建项目。

这为交付的代码质量提升注入了可能。

外包公司有几个动力来提升代码质量:1,外包公司希望人员成本降低;2,外包公司希望提升代码重用;3,外包公司希望业务转型。以下来详细说说。

1,外包公司希望人员成本降低。

和其它行业人要,要降低人员成本,有两条路,一是减少项目的单位人员投入,二是降低人员素质要求。这两条路其实是矛盾的,如果不高人海战术,那就得每个人都高精尖;或者反之。解决这个矛盾的办法是好钢用在刀刃上。少量的高精尖人才不直接投入业务项目,而是构建一个高度可扩展的、高质量的“引擎”,然后由较低素质的人员基于“引擎”开发业务,从而实现人员成本降低。这个“引擎”的代码,如果能够通过外包项目来获得,大概可以省去一个创业团队一年半载的时间。只要一个外包公司,有能力开发出一个“引擎”,大抵就不会出现拿DedeCMS做电商,拿OpenCart做门户这种事。

2,外包公司希望提升代码重用。

除了“引擎”之外,外包公司其实很希望把代码重用提升到业务级别。所以外包公司做久了,慢慢会专业于一两个行业,开始号称“行业供应商”什么的。为什么外包公司要聚焦?因为很多同行业的不同客户提出的业务需求就是相似的,那么许多业务模块也像“引擎”一样可以重用,这些业务模块往往经过了多个项目锤炼,逻辑周密,配置丰富方便,典型的高质量代码。

3,外包公司希望业务转型。

这是一个必然。外包公司的老板,就像工地的包工头,干的是客户和员工两头讨好两头讨不了好的活,要是遇着点行业波动、员工离职,分分钟没得玩。所以外包公司的老板,都有一颗包藏的“产品心”。只有有了产品,他才能像养儿防老的遗老添了新丁一般放心。这个产品,一般是一个行业适应性很强的、满足行业基本需求的、来自真实项目的一个战略级产品,比如OpenCart。后续外包公司会逐步转向这个产品的二次开发服务、咨询服务,从而达到转型目的。比如我们公司也通过社区型项目初步研制了一个自己的讨论型社区App产品QDiz,春节后也会发布。

综上所述,如果仔细考察,遇到有点追求的外包公司,收获的可能不仅是一个项目的业务代码,里头可能还含有他们的高内聚的引擎、超灵活的业务模块和基本开箱即用的产品原型,这里面的代码质量可能远远超出一个创业团队在生存高压下写出来的代码。

时间: 2024-10-12 14:26:59

可能外包的代码质量更好。的相关文章

常用的6种代码重构方法帮你提升80%的代码质量

在过去做了不少代码走读,发现了一些代码质量上比较普遍的问题,以下是其中的前五名: 臃肿的类: 类之所以会臃肿,是因为开发者缺乏对最基本的编码原则,即“单一职责原则”(SRP)的理解.这些类往往会变得很臃肿,是由于不同的且在功能上缺少关联的方法都放在了相同的类里面. 长方法: 方法之所以会变得很长主要是有以下几个原因: 许多没有关联性的.功能复杂的模块的代码都放在相同的方法内.这主要是开发者缺乏SRP的概念. 多种条件都放在同一个方法内,这在长方法内经常会发生的.这是由于缺乏McCabe代码复杂度

ESLint 检查代码质量

利用 ESLint 检查代码质量 其实很早的时候就想尝试 ESLint 了,但是很多次都是玩了一下就觉得这东西巨复杂,一执行检查就是满屏的error,简直是不堪入目,遂放弃.直到某天终于下定决心深入看了文档,才发现其实挺简单的,只是当时没有看到合适入门教程而已.我相信很多人也有着跟我一样的经历,所以希望将自己的踩坑心得记录下来,让后来者更轻易地掌握 ESLint 的使用,因为它确实是个好东西. JavaScript 是一门神奇的动态语言,它在带给我们编程的灵活性的同时也悄悄埋下了一些地雷.除了基

【转载】三年0故障总结,提升代码质量的秘诀

该文章来自于阿里巴巴技术协会(ATA)精选文章. 个人经历 对我代码质量影响最大的是在一家外资企业,在这家公司我觉得有以下几个方面做的很不错. 团队编码风格统一 统一到什么程度? 不看代码作者,你很难区分代码是谁写的(在目前公司一些团队也能达到这个标准). 个人观点: 这样做有什么好处?团队中每个人阅读代码都很容易,减少很多沟通,维护成本( 代码阅读的次数远远大于变更的次数),并且心情非常愉悦.有人肯定觉得愉悦有点夸张,举个栗子: 有一些代码,如果不是由于与工作内容有关联,你是否有种这辈子都不情

提高php代码质量 36计

1.不要使用相对路径 常常会看到: ? 1 require_once('../../lib/some_class.php'); 该方法有很多缺点: 它首先查找指定的php包含路径, 然后查找当前目录. 因此会检查过多路径. 如果该脚本被另一目录的脚本包含, 它的基本目录变成了另一脚本所在的目录. 另一问题, 当定时任务运行该脚本, 它的上级目录可能就不是工作目录了. 因此最佳选择是使用绝对路径: ? 1 2 3 4 define('ROOT' , '/var/www/project/'); re

如何提高C#代码质量

本文将<Effective C# Second Edition>一书中适用于 Unity 游戏引擎里使用 C# 的经验之谈进行了提炼,总结成为21条(一开始总结的是22条,后来发现第22条也是.NET的特性,Unity版本的mono并没有实现,所以严格意义上来说是21条)准则,供各位快速地掌握这本书的知识梗概,在 Unity 中写出更高质量的 C# 代码. <Effective C# Second Edition>一书原本有50条原则,但这50条原则是针对C#语言本身以及.NET来

提高代码质量:如何编写函数

阅读目录 命名 函数参数 编写函数体 总结 函数是实现程序功能的最基本单位,每一个程序都是由一个个最基本的函数构成的.写好一个函数是提高程序代码质量最关键的一步.本文就函数的编写,从函数命名,代码分布,技巧等方面入手,谈谈如何写好一个可读性高.易维护,易测试的函数. 回到顶部 命名 首先从命名说起,命名是提高可读性的第一步.如何为变量和函数命名一直是开发者心中的痛点之一,对于母语非英语的我们来说,更是难上加难.下面我来说说如何为函数命名的一些想法和感受: 采用统一的命名规则 在谈及如何为函数取一

追求代码质量: 用 AOP 进行防御性编程

原文出处: IBM中国 开发人员测试的主要缺点是:绝大部分测试都是在理想的场景中进行的.在这些情况下并不会出现缺陷 —— 能导致出现问题的往往是那些边界情况. 什么是边界情况呢?比方说,把 null 值传入一个并未编写如何处理 null 值的方法中,这就是一种边界情况.大多数开发人员通常都不能成功测试这样的场景,因为这没多大意义.但不管有没有意义,发生了这样的情况,就会抛出一个 NullPointerException,然后整个程序就会崩溃. 本月,我将为您推荐一种多层面的方法,来处理代码中那些

如何提高代码质量

一.代码质量 软件是交付给用户,并由用户体验的产品:代码则是对软件正确且详细的描述,所以代码质量关系到软件产品的质量.虽然软件质量不等于代码质量,但是代码上的缺陷会严重的影响到软件产品的质量.因此,为提高代码质量的投入是值得的. 二.软件产品质量通常可以从以下六个方面去衡量 功能性,即软件是否满足了客户业务要求: 可用性,即衡量用户使用软件需要付出多大的努力: 可靠性,即软件是否能够一直处在一个稳定的状态上满足可用性: 高效性,即衡量软件正常运行需要耗费多少物理资源: 可维护性,即衡量对已经完成

MDU某产品OMCI模块代码质量现状分析

说明 本文参考MDU系列某产品OMCI模块现有代码,提取若干实例以说明目前的代码质量. 本文旨在就事论事,而非否定前人(没有前人的努力也难有后人的进步).希望以史为鉴,不破不立,最终产出高质量的代码. 一  质量现状 不考虑业务实现,现有的OMCI模块代码质量不甚理想.无论是理解上手.修改扩展和测试排障,可以用举步维艰形容.尤其是二层通道计算相关代码,堪比令史前动物无法自拔的"焦油坑". 本节将不考虑流程设计,仅就函数粒度列举目前存在的较为突出的代码质量问题. 1.1 巨型函数 通过S