V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Brentwans
V2EX  ›  程序员

如何确保外包的代码质量?

  •  1
     
  •   Brentwans · 2021-07-25 23:58:21 +08:00 · 7774 次点击
    这是一个创建于 1215 天前的主题,其中的信息可能已经有所发展或是发生改变。
    希望各位彦祖能够推荐一些实操书籍,方向或者相关点子也行。

    问题背景是这样的,我们团队是基于云上的数据分析产品的,功能和代码已经基本开发完成,并且已经上线,效果还凑合。为了通用和降低维护成本,现在计划把公司用到分析的模块都替换成这个产品。这就太多了,需要支持非云部署的,lib 形式,基于内存的数据分析等等乱七八糟各种适配开发。
    我不打算让我们团队自己去做,因为有其它更重要的事情要做,而且适配这部分难度并不大,而且一圈问下来大家伙意愿也都不高。所以我想找一些外包同学来完成,但是我又担心是否能确保完成的代码质量。
    总得说来,我不需要开发完整功能,计划让外部同学开发的实际上类似定制一个数据库 jdbc 的实现的感觉,因此我并不想花费太多时间在这个上面。结构和功能设计,我能够提供,剩下的代码实现又外包同学来完成,问题就是如何确保代码实现的质量。

    因为我从来没有和外包同学合作过,目前我的不成熟想法是:
    1. 找个有经验的测试同学,提供充足的测试用例。
    2. 抽出一个同学,持续跟进开发和 review 实现结构和代码。
    3. 规范开发流程

    我总是觉得,这样后续维护是个大问题。
    各位彦祖怎么看?
    第 1 条附言  ·  2021-07-26 13:27:52 +08:00
    没有描述清楚,让不少同学误解了。
    替换公司其他产品,这个工作本身是为了统一,降低未来维护成本。

    但是找外包本身降低成本不是首要目的,甚至都没有考虑过为了降低成本而去找外包。找外包实际上是被动的,因为事情本身不难,只是比较多和杂,我们一个团队总共十来人,都是做偏底层的,上层业务也不熟悉,最关键大家伙没有意愿去开发,为了这事去招人也来不及。所以才想起看能不能试一试外包的。
    上午找了一个外包朋友聊了下,计划先试一个产品,如果可行就继续,至于质量管理跑起来在看吧,没经历真是没头绪。如果效果不好就让对应产品的团队出人来处理了。
    57 条回复    2021-07-28 08:35:09 +08:00
    wangbenjun5
        1
    wangbenjun5  
       2021-07-26 00:02:03 +08:00   ❤️ 1
    哈哈,既然不重要,那扔给外包随便搞,还在乎什么质量,能跑就行啊
    renmu123
        2
    renmu123  
       2021-07-26 00:25:12 +08:00 via Android   ❤️ 2
    确保不了
    ca1123
        3
    ca1123  
       2021-07-26 00:27:32 +08:00
    多做几份选最好的?
    yitingbai
        4
    yitingbai  
       2021-07-26 01:21:02 +08:00   ❤️ 3
    写代码的责任心很重要, 该抽象的要抽象, 该封装的要封装, 要把项目看成自己的, 写的时候要考虑到以后的维护性. 甚至很多需要花时间的代码并不能实现某个具体的功能, 只是让整个逻辑更清晰, 潜在的 BUG 更少. 但是外包就完全不会考虑的这些, 能复制粘贴就绝不抽象封装, 实现功能越快越好, 谁管你以后维护方便不方便, 反正不是自己维护
    cszeus
        5
    cszeus  
       2021-07-26 05:13:21 +08:00
    跟几家外包合作过,除非长期合作,只要你付钱,他们能维护。要是一次性的,代码基本就是垃圾。
    ljzxloaf
        6
    ljzxloaf  
       2021-07-26 07:21:48 +08:00
    钱给足。1 块钱有 1 块钱的写法,10 块钱有 10 块钱的写法。好的代码都是时间堆出来的,即使他这次没用那么多时间,也要为他达到如今的水平曾经所付出的时间买单。
    Ariver
        7
    Ariver  
       2021-07-26 07:55:11 +08:00 via iPhone
    code review

    -—
    但是也很难
    gccdchen
        8
    gccdchen  
       2021-07-26 08:02:20 +08:00
    说清后续可能的需求就好
    ianva
        9
    ianva  
       2021-07-26 08:18:00 +08:00   ❤️ 1
    你太理想化了,带过外包,手把手教都写不好代码,东西做出来能用,上线隔三差五出 bug,code review 的时间和指导的时间都够我自己实现的了,后来清退掉后,他的所有代码基本都是被重构掉或重写掉的。

    当然不一定所有外包的代码一定质量差,但面试过的外包来看,素质也基本承让不多
    ianva
        10
    ianva  
       2021-07-26 08:19:38 +08:00   ❤️ 1
    有些时候你会发现,有些人确实不适合干这个职业,无论是逻辑思维能力,还说学习能力,和自省的能力
    samin
        11
    samin  
       2021-07-26 08:36:12 +08:00   ❤️ 2
    作为一个开发同学,您提的三点,外包都可以非常有效的攻破
    1. 找个有经验的测试同学,提供充足的测试用例。
    他们的开发就是针对你的用例去开发的,这个本来就是验收标准的一环,所以这项不能作为手段
    2. 抽出一个同学,持续跟进开发和 review 实现结构和代码。
    外包就会玩的就是商务,随便给点甜头就可以让这位同学反水
    3. 规范开发流程
    又回到你的问题,如何确保外包用了你的规范开发流程
    a719031256
        12
    a719031256  
       2021-07-26 08:41:25 +08:00
    钱给够就行了

    很多人说外包质量差,但说这话的人绝对不会说给的钱有多低
    auh
        13
    auh  
       2021-07-26 08:43:05 +08:00
    责任心这个东西,像一堆东西。怀疑到底是一种道德行为,还是一种非理智行为。
    pigspy
        14
    pigspy  
       2021-07-26 08:46:07 +08:00
    建议自己弄
    Rheinmetal
        15
    Rheinmetal  
       2021-07-26 08:51:07 +08:00
    长期被坑的经验就是拆成足够小的抽出人力 code review 里程碑支付
    问题就是人力节省少 花钱教外包写代码

    还不如开实习 招大学生来干活 不行就换
    weichengwu
        16
    weichengwu  
       2021-07-26 08:52:28 +08:00 via iPhone
    接手过外包代码,差到令人发指
    tanranran
        17
    tanranran  
       2021-07-26 08:59:41 +08:00
    大多数外包是不考虑维护的,领导一心只要求在最短时间内出结果
    JerryCha
        18
    JerryCha  
       2021-07-26 08:59:48 +08:00
    让外包帮你招大四实习生
    gouflv
        19
    gouflv  
       2021-07-26 09:02:40 +08:00 via iPhone
    代码质量没有标准一说,所以对外包来说 产生不了交付价值
    IvanLi127
        20
    IvanLi127  
       2021-07-26 09:05:11 +08:00 via Android
    找驻场可能还能控制得了质量吧
    xuanbg
        21
    xuanbg  
       2021-07-26 09:08:51 +08:00
    人力外包,代码审核。可保质量,但你会很累。项目外包,十有八九会让你很气。。。
    andy2415
        22
    andy2415  
       2021-07-26 09:16:51 +08:00
    找外包, 等于默认接受功能能用就行
    chengkai1853
        23
    chengkai1853  
       2021-07-26 09:22:55 +08:00
    其实关键还是钱给得足不足。复制比整理代码、抽象、运用设计模式用的时间完全是不一样的。给他 1 块钱,极少人会付出 10 块钱的责任心和时间吧。毕竟人家出来做外包大多也是缺钱,熬夜用时间换钱。外包的时候就说清楚要什么质量的代码,评估的价格都完全是不一样吧。
    Rache1
        24
    Rache1  
       2021-07-26 09:25:11 +08:00
    @ljzxloaf 😂 有没有想过,1 块钱的和 10 块钱的是同一个公司,同一批人搞的
    Cielsky
        25
    Cielsky  
       2021-07-26 09:32:02 +08:00
    总结:事多钱少
    liprais
        26
    liprais  
       2021-07-26 09:44:42 +08:00 via iPhone
    jdbc 驱动不好做,cornern case 太多,还是自己做吧
    4ark
        27
    4ark  
       2021-07-26 09:51:32 +08:00
    找外包 = 自己嫌麻烦 = 自己不想做 = 希望短时间内完成 = 节省成本,你说代码质量怎么会好?
    leafShimple
        28
    leafShimple  
       2021-07-26 10:01:49 +08:00
    确保不了. 自己要实时跟踪项目,人员定时 review 代码.沟通需求.成本还是不低的。抱着能跑一个就行的心态的话,那还是可以放手的
    php01
        29
    php01  
       2021-07-26 10:06:11 +08:00
    别说找外包了,哪怕是自己团队,你多给点钱给程序员跟少给点钱给程序员,质量也完全不一样。
    fengjianxinghun
        30
    fengjianxinghun  
       2021-07-26 10:19:20 +08:00
    你真在乎质量就会自己写,想节省成本外包还讲质量?
    del1214
        31
    del1214  
       2021-07-26 10:19:50 +08:00
    体力活可以外包,脑力的就算了
    Rwing
        32
    Rwing  
       2021-07-26 10:20:39 +08:00
    确保不了
    linbiaye
        33
    linbiaye  
       2021-07-26 10:43:08 +08:00
    又要质量又要便宜,哪有这种好事?会要求代码质量的大概就是 epam, thoughtworks 这类公司了,但是他们肯定不便宜。
    jswh
        34
    jswh  
       2021-07-26 10:44:34 +08:00
    1. 给够钱
    2. 找对人

    其实可以找 thoughtworks 那种偏咨询的外包,而不是单纯的人力外包,可能会稍微好点。
    moochan
        35
    moochan  
       2021-07-26 13:45:53 +08:00
    用 golang
    jeeyong
        36
    jeeyong  
       2021-07-26 13:51:24 +08:00
    如果你就是要从技术角度入手去解决这个问题..那他就是个没完没了的坑, 你需要一直去填填填, 直到最后审核的成本接近于自己建设团队. 然后换了一个问题开始纠结, 填填填...

    换个思路, 从非技术角度入手, 有条件上两家供应商互补协作.
    一家供应商, 谈好要求, 你只管测试和提出问题. 剩下的, 让他们去解决.
    钱要给到位.
    chenmobuys
        37
    chenmobuys  
       2021-07-26 13:58:55 +08:00
    如果钱给的多,而且后续还可能要维护,就会考虑代码的质量,至少不能坑自己。
    如果钱又少,后续又不需要自己维护,那不是怎么快怎么来吗?
    westoy
        38
    westoy  
       2021-07-26 14:03:31 +08:00
    外包订制省成本省的是长期的人力成本, 而且要形成规模效应, 因为自己还需要投入一定人力。 也许某个大厂要突击一个项目, 临时调了三四百个外包, 本身也投入了大几十人去做项目管理、对接业务、审核代码什么的, 但你这边可能只需要两三个人,但要保证这两三个人代码质量和业务别写偏, 也需要四五个人去做对接, 那你为什么不直接让自己的四五个人去写..........

    外包另一种可以省成本的方案是出垂直方案, 某家企业专门做某个垂直方案, 你找个对口团队, 对方改改就给了你, 因为他们专门做这块的, 坑被上家们已经趟地差不多了, 但你耦合业务的大量定制那就没办法了

    所以无解的, 自己写吧
    dk7952638
        39
    dk7952638  
       2021-07-26 14:18:37 +08:00   ❤️ 1
    同时请多个外包,让他们内卷
    caroline1022
        40
    caroline1022  
       2021-07-26 14:49:34 +08:00
    接 sonar 等代码质量测试工具
    按里程碑时间点进行 code review 验收
    若抽查有问题形成对对方项目完成度的考核上的压力(这个估计需要体现在合同上)

    如果还需要解决后期维护的问题,那就需要派一个项目经理去盯这个事儿了,保证对方开发人员的关键文档的输出以及文档质量
    Leonard
        41
    Leonard  
       2021-07-26 15:05:21 +08:00
    确保不了。干过外包,有的公司项目代码真的差得令人发指,烂代码你想改人家还不让你改,嫌你浪费时间
    charlie21
        42
    charlie21  
       2021-07-26 15:15:25 +08:00
    作为 IT 行业内最历史悠久也最广泛的生意形式,说保证不了外包质量、外包质量是无法保证的,真的 IT 行业的从业人员吗?真是隔行如隔山 行内也有山 行内子行业也是隔行如隔山
    totoro52
        43
    totoro52  
       2021-07-26 16:10:48 +08:00
    我们公司收回了由外包公司一直在维护的项目,代码拿回公司下发给技术人员并要求迭代功能,一星期后跑路了好几个技术
    psirnull
        44
    psirnull  
       2021-07-26 16:14:58 +08:00
    再招标一家代码审计公司。
    jsjgjbzhang
        45
    jsjgjbzhang  
       2021-07-26 16:41:40 +08:00
    钱给够 做代码审核
    3dwelcome
        46
    3dwelcome  
       2021-07-26 17:47:52 +08:00
    可以让外包结对开发。

    一个人有可能时间一长,写代码会摸鱼。两个人就会相互催进度,相互监督代码,自然没办法摸鱼了。

    当然需要一定的入门考核,水平也不能找太差的,要不然钱花了,代码有一堆 BUG 也用不了。
    Pichai
        47
    Pichai  
       2021-07-26 18:21:34 +08:00
    你需要的外包人员少,管理起来也不方便。中间还需要对接的人,项目好坏取决于对接人员的管理水平。真不如自己招聘一两个专门负责改业务的人。
    aaniao002
        48
    aaniao002  
       2021-07-26 19:09:00 +08:00 via Android
    无法。外包拿来的只能运行。各种 bug,各种逻辑错误,各种偷奸耍滑,反正你只要不点,什么都是好的,点了什么都是错的。准备好 wireshark 抓包吵架。
    lscho
        49
    lscho  
       2021-07-26 23:07:29 +08:00
    钱给够,时间给够,找对人。

    钱给不够,时间给不够,自己团队的代质量都保证不了,还怎么要求外包呢。
    caliburn1994
        50
    caliburn1994  
       2021-07-26 23:44:06 +08:00
    1. 谁来对接
    2. 怎么找到一个质量相对“好”的外包团队
    gamexg
        51
    gamexg  
       2021-07-26 23:50:59 +08:00
    临时单人外包
    各种你能想到的问题*100 倍大概就是实际效果


    找到靠谱的太难了
    公司找过单人外包,近乎全军覆没
    现在在尝试外包公司,还不确定最终效果


    我以前接过外包,发现的情况是:
    靠谱的外包开发者如果是全职外包,基本接几个客户就会碰到想让你直接全职上班的客户。
    即使兼职干外包的,也会碰到希望你能长期兼职的客户。
    如果比较核心的业务,功能修改甚至有客户愿意等半年排期。
    基本靠谱的外包,老客户业务就能填满时间,很难有时间接新客户
    karott7
        52
    karott7  
       2021-07-27 10:06:58 +08:00
    楼上就没遇见过钱给够还给你喂屎的外包吗?
    andyL
        53
    andyL  
       2021-07-27 10:44:32 +08:00
    楼主提出的想法很成熟。

    要想不出 Bug,就需要编码的人很清晰的理解需求、了解边界条件。

    面对细小的用例验收通过这个目标来开发。

    需求要清晰、任务拆分要清晰、用例粒度要小。

    要商量好技术栈、架构、文件组织。

    codereview 的时候注意模式、封装。

    这些需要付出很多的沟通成本和时间,和你们自己带团队没什么差别。

    要是如同回复中有些,已经瞧不起的对面、觉得对面是教不会 ifelse 的原始人、还不想给多少钱别人,以上步骤还做个奶子。看运气吧。


    个体互动 高于 流程和工具
    客户合作 高于 合同和谈判
    PMS
        54
    PMS  
       2021-07-27 11:19:44 +08:00
    这太简单了,再雇一个第三方的外包测试及质量控制的团队来控制质量。
    所谓的外包影响质量的本质就是甲方因为完全不在乎质量而决定了用不可能保障质量的预算来外包。
    最后再让外包方来背锅。
    softempire
        55
    softempire  
       2021-07-27 12:18:16 +08:00
    给够钱,给五分之一的钱要求百分之百的质量,那怎么可能
    NutChocHoney
        56
    NutChocHoney  
       2021-07-27 15:23:11 +08:00
    看了看回复 很多朋友都说外包质量有多差 有可能很难想象有些做外包的同学被公司压到敲代码的时间真的是少到可怜 说不定还需要同时负责多个项目
    encro
        57
    encro  
       2021-07-28 08:35:09 +08:00
    1,钱够人家团队驻厂吗?
    2,质量真的重要吗?用过一段时间扔掉重新来过或者重构怎么样?
    3,自己团队只会做底层?招个做交互的大神怎么样?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1052 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:14 · PVG 03:14 · LAX 11:14 · JFK 14:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.