外包项目承接的 2 个教训~经验分享 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
BeiTianSoftware

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

  •  
  •   BeiTianSoftware 2020 年 6 月 28 日 2300 次点击
    这是一个创建于 2127 天前的主题,其中的信息可能已经有所发展或是发生改变。

    做了几年的外包技术提供商,和正在通过外包谋生的朋友分享 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 年 6 月 28 日
    挺不错的
    dioxide
        2
    dioxide  
       2020 年 6 月 28 日
    期待分享更多经历.
    cocoismywife
        3
    cocoismywife  
       2020 年 6 月 28 日
    -u 不就是 up-steam 吗
    deppwxq
        4
    deppwxq  
       2020 年 6 月 28 日
    支持一下
    konakona
        5
    konakona  
       2020 年 6 月 28 日
    我感觉第一个例子,你想表达的应该是“只给当前已完成的”(一次)而非“后续每次提交都推送”(静默每次 push 都去了那个绑定本地 master 的远端仓库),对么……
    kmdd33
        6
    kmdd33  
       2020 年 6 月 29 日
    upwork 推出了一个 contract 功能,类似于支付宝的担保交易功能,北美这边很流行的。
    HolyBible777
        7
    HolyBible777  
       2020 年 6 月 29 日
    谢谢楼主分享, 使我们避免入坑
    BeiTianSoftware
        8
    BeiTianSoftware  
    OP
       2020 年 6 月 29 日
    @konakona 是的,就是钱货两清这个原则,我们做技术外包,货物==我们的技术产出,源码之类的
    BeiTianSoftware
        9
    BeiTianSoftware  
    OP
       2020 年 6 月 29 日
    @cocoismywife 会顺带指定后续的静默推送远程仓库地址
    hantsy
        10
    hantsy  
       2020 年 6 月 29 日
    Git 这骚操作,还真少见。

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

    不要去去看他们公司装修怎么样,很多大城市的一些公司,表面都是做得很好,老板实际都是流氓一样。
    foo123
        18
    foo123  
       2020 年 6 月 29 日 via iPhone
    针对教训 1,我觉得把甲方 master clone 下来,然后你们 merge 、commit 一次不就好了么,如果甲方不让 clone master 那么配置下 set-upstream 也行,push 完后重新配置下 set-upstream
    BeiTianSoftware
        19
    BeiTianSoftware  
    OP
       2020 年 6 月 29 日
    @hantsy 所以靠谱的客户很重要
    BeiTianSoftware
        20
    BeiTianSoftware  
    OP
       2020 年 6 月 29 日
    @foo123 当时没考虑这些东西的,只是甲方那边给过来的操作步骤提示,这边原封不动地就执行,这一点太草率了
    xwhxbg
        21
    xwhxbg  
       2020 年 6 月 29 日
    我去我这边直接 push 的,我要代码也没啥用啊,我都是按周结算,小时收费,真想不到有这种甲方,看来我还是天真了。
    1044523901
        22
    1044523901  
       2020 年 6 月 30 日
    尾款未收到切记,不要提供任何项目代码。
    vansouth
        23
    vansouth  
       2020 年 6 月 30 日
    不是应该收到大部分钱才会提供代码的吗?未接触过所有不解
    BeiTianSoftware
        24
    BeiTianSoftware  
    OP
       2020 年 7 月 1 日
    @1044523901 实在甲方说要体现诚意,给初期代码(反正都是有提交历史,选一个比较靠前的版本)也行
    glovebx
        25
    glovebx  
       2020 年 7 月 2 日
    这两条建议还是很实在的,有干货的一帖
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     923 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 69ms UTC 19:31 PVG 03:31 LAX 12:31 JFK 15:31
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86