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

外包项目承接的 2 个教训~经验分享

  •  
  •   BeiTianSoftware · 2020-06-28 19:31:19 +08:00 · 1930 次点击
    这是一个创建于 1609 天前的主题,其中的信息可能已经有所发展或是发生改变。

    做了几年的外包技术提供商,和正在通过外包谋生的朋友分享 2 个经验教训:

    ###教训 1:

    项目尾款结清前,除非是 双方合作很久并且相互信任了 。此时甲方提出将源码提交至他们的代码仓库,如果使用的是 Git,那么请注意下面的提交指令:

     “git push -u origin_JiaFang master” 
    

    其中的 -u 参数 不能加,否则后续有新需求、改动,你如果在提交的时候图省事,直接用:

     "git push master"
    

    那么代码会被默认推送到甲方的代码仓库,而不是你的

    得到这个教训,是某一次的项目合作中,本来和甲方说好了尾款结清再推送所有源码。后来临近交付,甲方一直催,说大家都是自己人,不用这么担心,可以先把代码提交过来。这边也就同意了,但由于不清楚怎么添加多个远程 Git 仓库并执行推送,所以就问甲方负责人怎么搞,之后甲方给出了下面的指令步骤:

    git remote add origin_JiaFang http://git.xxx.cn/2019/proj.code.git    
    git add .
    git commit
    git push -u origin_JiaFang master
    

    大部分人可能和这边当时一样,没多想就直接照着做了。 然后最近在做个项目,需要将项目代码迁移到另一个代码托管平台,不知道怎么弄,忽然想起来之前有个甲方提供的方法好像可以试试,这边试的时候发现好像 push 指令不加 -u 参数也可以,即像下面这样:

    git push origin_anotherPlatform master
    

    这边就好奇,这个 -u 参数到底是啥意思,为啥好像不加也可以,于是去网上搜了下,得到如下的解释:

    -u 表示将本地的 master 分支推送到 origin 主机,同时指定 origin 为默认主机,后面就可以不加任何参数使用 git push 了。

    卧槽,好在这边有个习惯: 即每次 push 代码到远程仓库的时候,都会指定远程仓库名,即下面的形式:

    git push origin_mine local_dev develop

    如果这边图省事,直接

    git push local_dev develop

    代码就直接到甲方主机了,并且可能此时甲方还未付预付款!

    ###教训 2: 如果有同行或者合作伙伴说要给你介绍个项目,你为了感谢他,也为了尽快拿下这个项目,于是就允诺项目完结之后给他一笔好处费,那这里要注意的是:

    1. 适度给好处费,送礼品是 OK 的,做一个知道感恩的人挺好
    2. 接上一条,重点是“适度”。如过一个总预算 11 万的项目,你允诺给他: 首先免除之前的欠款 4k,另外在项目完结之后再支付 1.5w ,总计 1.9w 好处费

    上面的第 2 条中的例子,是一个 极其错误的做法。此举直接导致该介绍人决心直接自己招 App 开发,吃掉这个项目的后续单子,而这个介绍人,他们的团队之前是只做 Web 和 Server 端的。

    你以为,他会因为你大手笔的好处费而认为你是个很厚道的人?

    ---- Too young too naive !

    有句话叫做“食骨知味”,百度下就知道了。
    尤其是,你们做的东西质量体验比他们好得多,利润也稍微比他们高的情况下,越要注意这点。

    所以正确的做法是,可以给好处费,但不要太傻,像 11w 给个将近 2w 的好处费。最多最多,给个 2k 就可以(送等值购物卡也行)。

    别问这边怎么知道的,照着做肯定没坏处。

    25 条回复    2020-07-02 00:26:31 +08:00
    darksky
        1
    darksky  
       2020-06-28 19:49:39 +08:00
    挺不错的
    dioxide
        2
    dioxide  
       2020-06-28 22:19:28 +08:00
    期待分享更多经历.
    cocoismywife
        3
    cocoismywife  
       2020-06-28 22:33:31 +08:00
    -u 不就是 up-steam 吗
    deppwxq
        4
    deppwxq  
       2020-06-28 22:37:11 +08:00
    支持一下
    konakona
        5
    konakona  
       2020-06-28 23:19:41 +08:00
    我感觉第一个例子,你想表达的应该是“只给当前已完成的”(一次)而非“后续每次提交都推送”(静默每次 push 都去了那个绑定本地 master 的远端仓库),对么……
    kmdd33
        6
    kmdd33  
       2020-06-29 00:00:34 +08:00
    upwork 推出了一个 contract 功能,类似于支付宝的担保交易功能,北美这边很流行的。
    HolyBible777
        7
    HolyBible777  
       2020-06-29 02:15:46 +08:00
    谢谢楼主分享, 使我们避免入坑
    BeiTianSoftware
        8
    BeiTianSoftware  
    OP
       2020-06-29 08:34:38 +08:00
    @konakona 是的,就是钱货两清这个原则,我们做技术外包,货物==我们的技术产出,源码之类的
    BeiTianSoftware
        9
    BeiTianSoftware  
    OP
       2020-06-29 08:35:42 +08:00
    @cocoismywife 会顺带指定后续的静默推送远程仓库地址
    hantsy
        10
    hantsy  
       2020-06-29 08:42:39 +08:00
    Git 这骚操作,还真少见。

    一般我也就 origin ( Fork 到自己的账号下), upstream 两个源,其它特性什么开发都是自己 origin master 基础建立分支完成,比较 origin branch 和 upstream master 发送 PR 。
    hantsy
        11
    hantsy  
       2020-06-29 08:45:56 +08:00
    @kmdd33 守规矩的国家 Contract 才有用。中国作外包基本都是靠关系,后面扯皮,我参与过国内的一些项目,基本尾款都收不到。
    ivslyyy
        12
    ivslyyy  
       2020-06-29 09:32:53 +08:00
    很久以前我也参与过接活,做完了后,不断提新要求,语气也很粗鲁,感觉我是讨饭呢?然后说我做不到就不给剩下的钱了,好在也不多,我做的几百块前后端服务器数据库都包了
    meathill
        13
    meathill  
       2020-06-29 10:05:34 +08:00
    第一条太贱了……
    BeiTianSoftware
        14
    BeiTianSoftware  
    OP
       2020-06-29 11:47:58 +08:00
    @ivslyyy 这种后续直接不要做了
    BeiTianSoftware
        15
    BeiTianSoftware  
    OP
       2020-06-29 11:49:57 +08:00
    @meathill 也可能是甲方直接复制粘贴其他地方的命令步骤,但还是说明要谨慎一点
    BeiTianSoftware
        16
    BeiTianSoftware  
    OP
       2020-06-29 11:50:54 +08:00
    @hantsy 一般靠关系趟出来的业务(不是刚性需求),很容易这样
    hantsy
        17
    hantsy  
       2020-06-29 12:05:57 +08:00
    @BeiTianSoftware 说实在中国做项目,关键看对方人品怎么样。

    不要去去看他们公司装修怎么样,很多大城市的一些公司,表面都是做得很好,老板实际都是流氓一样。
    foo123
        18
    foo123  
       2020-06-29 14:10:38 +08:00 via iPhone
    针对教训 1,我觉得把甲方 master clone 下来,然后你们 merge 、commit 一次不就好了么,如果甲方不让 clone master 那么配置下 set-upstream 也行,push 完后重新配置下 set-upstream
    BeiTianSoftware
        19
    BeiTianSoftware  
    OP
       2020-06-29 15:11:19 +08:00
    @hantsy 所以靠谱的客户很重要
    BeiTianSoftware
        20
    BeiTianSoftware  
    OP
       2020-06-29 15:12:35 +08:00
    @foo123 当时没考虑这些东西的,只是甲方那边给过来的操作步骤提示,这边原封不动地就执行,这一点太草率了
    xwhxbg
        21
    xwhxbg  
       2020-06-29 16:06:02 +08:00
    我去我这边直接 push 的,我要代码也没啥用啊,我都是按周结算,小时收费,真想不到有这种甲方,看来我还是天真了。
    1044523901
        22
    1044523901  
       2020-06-30 17:22:48 +08:00
    尾款未收到切记,不要提供任何项目代码。
    vansouth
        23
    vansouth  
       2020-06-30 17:43:47 +08:00
    不是应该收到大部分钱才会提供代码的吗?未接触过所有不解
    BeiTianSoftware
        24
    BeiTianSoftware  
    OP
       2020-07-01 11:25:30 +08:00
    @1044523901 实在甲方说要体现诚意,给初期代码(反正都是有提交历史,选一个比较靠前的版本)也行
    glovebx
        25
    glovebx  
       2020-07-02 00:26:31 +08:00
    这两条建议还是很实在的,有干货的一帖
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2930 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 00:13 · PVG 08:13 · LAX 16:13 · JFK 19:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.