V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
cho
V2EX  ›  程序员

远程协作-替代外包的最佳实践

  •  1
     
  •   cho · 2015-05-18 14:28:38 +08:00 · 4300 次点击
    这是一个创建于 3513 天前的主题,其中的信息可能已经有所发展或是发生改变。
    远程协作-替代外包的最佳实践

    本文提到程序员客栈并不全表示我是软文狗,因为我后面也会大量提到tower,但我完全不认识他们。

    在做程序员客栈 http://proginn.com 之前总有朋友问我:“我需要做一个App找外包太不靠谱了,你能不能帮我找个人兼职一直帮我做下去,远程的也行啊。”确实当下在一般有经验的技术需求方的观念里,外包是越来越不靠谱了。但是受制于各种因素暂时也不能有自己的开发团队,前期兼职,甚至远程协作的兼职成为了一种出路。

    经历过“程序员客栈”这个到今天为止一个纯远程协作的项目,我想就此谈谈“远程协作”这个将来也许会替代外包解决企业临时用人问题的最佳实践。本文会以我的实际经历讲三个案例:一个是外包为什么不靠谱;再是一个不成功的协作经历-我帮圈圈Android(一个校园社交网站);还有一个成功的协作经历-程序员客栈。



    外包为什么不靠谱

    之前在“单独程序员做外包为什么会是坑 http://v2ex.com/t/176500#reply16”这篇文章中我已经大致谈过这个问题。

    大体可以归纳为:

    需求方

    1. 需求不明确

    当然我接触的外包都是已经有明确的需求文档,并且有估算人头和开发周期的excel表。在一大篇需求文档里面经常间杂有这样的内容:这个聊天完全模仿微信;登录完全模仿豆瓣;这个照淘宝购物车一模一样的做。简单几个字,开始双方都觉得没有问题,项目结题的时候双方都蛋疼直到最后闹翻。比如第一个栗子 “这个聊天完全模仿微信” 开发者就是做了个聊天,能够发表情、语音、图片。心里就想啊,我语音都做了并且也不是主要的需求,应该很好了。结果到了客户各种问题就来了:表情为什么不支持emoji,为什么网站不显示emoji,表情为什么不能自定义,为什么不能发视频,为什么不能发红包,他想要的甚至是红包支持银联...同样的道理“登录完全模仿豆瓣”,支持短信验证不,支持邮箱验证不,第三方登录支持QQ、微博不?这些都是需求不明确带来的大坑。不注意这些问题,你们就扯皮去吧。

    2. 对于软件开发认识小白

    a.低估开发难度,不理解软件开发周期,存在严重的催促习惯。好像本来2个月做的项目一个星期就能做完。感觉催、加人、加钱能解决问题一样。

    b.搞不懂到底什么产品质量好质量坏:什么!你做个购物网站都要上十万?我在猪八戒上发布最多1万块好多人抢。我在淘宝上面买套态度几十块钱就够了,你们太黑了。

    c.不知道会有bug这种东西存在,难以理解运维工程师这样的职业。遇到问题就怀疑合作开发者的人品。

    d.客户不懂自己要什么,就是要自己看得爽,完全不管自己的用户爽不爽。我给你出了这么多钱,你做个网站空白处这样一大块一大块的。这里加个留言版,这里给我搞个投票…

    3. 占便宜

    a.你看,小王啊,我们网站聊天都有了,加个发语音的功能吧,这个肯定是需要的,也蛮简单的;我们官网的产品加个购买吧,就一个按钮,我知道谁买的就行了;我们网站都做好了,之前我们自己有个服务器环境都差不多的都是php,你帮忙部署一下吧,不要搞乱其他上面的网站。这种客户老是感觉加功能和拉屎倒茶一样简单。还理所当然 “我就是加这么一点,你帮我个忙” 或者责备 “项目给了你这么多钱,就这个小忙都不帮”

    b.这个App真的非常简单,我们就不需要原型设计这个阶段了吧。直接开发,就按XXX直接抄过来,这样这个阶段钱我们就不出了。哦!你不懂是吧?要不要我再给你讲一遍?

    总之,一般需求方问题总结起来就是:把自己局限的产品认识强加到开发者头上,不知道自己到底要什么。然后各种压榨成本把本来具有生命流程的软件质量都寄托于1.0版。出了问题就感觉开发者不负责。

    开发者

    1. 水平参差不齐,没有开发流程

    最基础的一批人,就是觉得自己技术过关。所以接外包的态度是:你有什么项目啊,我这里什么都可以做的。没有具体流程,想怎么做怎么做。这是非常初级的外包者,这样的项目八成烂尾,纠纷不断。

    2. 低估开发难度,没有进度安排

    这种团队有了流程“产品原型->设计->后端前端 ->测试->售后”。但是安排不够,通常我们可以看到一个项目在产品原型、设计阶段都是好好的。结果到了开发环节各种问题就来了。这就是低估开发难度,没有进度安排带来的问题

    3. 偷懒懈怠

    开发者也是人,当然会各种偷懒。不然需要程序员鼓励师干嘛?当然也有一些是人品不好的,刷狡猾,忽悠客户不懂,一个企业展示网站自己收几万结果在猪八戒上面1000块给上面的人做了。

    4. 接外包缺乏战略思维

    不注意筛选行业市场,什么都做,导致什么都不精通,你做哪个方面就要做到那个行业外包的市场份额第一嘛,这才是有战略思想的外包事业。再高级一点,提高产品复用率,就做一个产品。

    其他原因

    项目层层外包,款项扣押严重。接单子的公司要扣一半左右,他们又二次外包出去,真正的开发者只拿到50%。我之前就碰到过一个微信公共号的开发,客户给了3w,结果转包两次,到开发者手里就只有7k。后来做完了才明白为什么客户老觉得开发者设计不满意,这也不行那也不好。



    一个不成功的协作经历-我帮圈圈Android

    2013年我做了一个校园社交网站“我帮圈圈”,需要开发Android。我们的技术是写java的没有写过Android。那时候招人来不及了,所以就搞了两套方案:一个是技术尝试边学边写;二是也去找有过开发经验的人来兼职写。最后找到一个一年多工作经验的童鞋。但是他不能保证每天都过来,所以干脆就让他远程兼职做开发。他做东西非常快,开始还是没有问题,结果过了个把月还是做不出来,原来他自己的公司任务加重了,所以就自动降低了我们这个App的优先级,没有时间做各种诉苦,最后还是烂尾了。

    我们也有问题,那时候沟通工作也是扯淡,产品交流、工作管理就是用QQ。我们也没有做原型,直接都交给开发者,因为觉得简单啊。开发说不懂,然后这边就讲:“你不懂是吧?需不需要我再讲一遍。” 结果讲了四五遍还是不懂,做出来出入好大。后面反思:产品原型设计是怎么也不能偷懒的,就是要让开发者心里清楚各种情况,甚至要让他知道你们未来希望大大的。开发者是你的伙伴,不是小时工。



    一个成功的协作经历-程序员客栈

    程序员客栈这个产品到目前都是纯远程协作做出来的。最开始我一个人写代码,今年初上线。虽然自诩为全栈但是我知道自己是什么都会点但都不精通。现在我们团队iOS、Android、web+后端、设计、产品经理6个人一起远程协作,几个人都在大公司工作过,经验丰富,总算基本补齐了我们差的技能。

    我们都知道做事情方向一定要坚定。但有时候到了局部,很多身临其境的推动力会让你稳不住阵脚,从而把队伍带偏犯错。在做我帮圈圈校园社交网站的时候发现学校里有很多外卖宣传单,我们那时也偶尔发传单宣传网站。所以就想:外卖是如此高频刚需,如果让大家点餐等饭的时间来社交吐槽,既有了SNS的盈利模式也增加了用户粘度,简直是天衣无缝的好点子。这个想法让我整整一夜没睡着,然后就傻里吧唧的开始做了。后面发现真的是扯淡,外卖做起来了社交不行了。外卖就是外卖,社交就是社交,一毛关系都没有,产品战线越长越容易奔溃。产品变动的过程中,那时我们按照传统的“产品经理->设计师->前端后端->测试”这样的流程来做探索,成本太大了,拖累死其他小伙伴,团队看到方向不坚定做外卖,都迷茫了,工作也累然后一个个的走了。后来我就给自己定了个规矩:就是当自己判断力不足的时候,一定不要瞎想点子,不要乱指挥。就像到了十字路口,都不知道前面的路了,总需要一个人先跑上前去看一看情况。需要有人当好这个探子,这样才是爱惜人力的表现。所以程序员客栈这个产品,前面遇到这样探索性的问题我就先顶上去做实验了。想也是,就好比你媳妇又做饭又搞家务又是工作,所以常常这个时候她就像是火药桶,一点就炸。开始不理解啊,后面慢慢理解了。这是累过头了,然后就乱。吴起兵法里不是也有写“凡行军之道,无犯进止之节,无失饮食之适,无绝人马之力。此三者,所以任其上令,任其上令,则治之所由生也。”大致意思是,带队要让大家休息好,吃得好,路要选得近。否则都不听你指挥了,不是故意和你作对,而是他们真的太累了。后来合伙人和我就总结出来了,产品的修改一定要慎重,不要拍脑袋。改之前一定要调研,屏蔽自己主观的意愿。多问几个为什么么。之前程序员客栈也有一个非常靠谱的后端小伙伴,我们不停的给他指派任务,结果他就不干了,东改西改,这都是不爱惜人力导致的,值得反思。当然我们团队也经历了一些人员的变动,由于我们经常和技术朋友交流,知道了解他们的情况,所以人员变动没有让我们的进度有很多耽误。

    对于程序员客栈我们的大方向始终是坚定不移的:汇聚程序员,程序员来了为他们搞好服务。但是局部方向也经历了很多变动,这些变动让我们付出了代价。从“社区”切入,到“外包”切入,再到“解决方案”,最后才转到做好程序员的展示,见下图。当然,这里面看似产品形式上在不断变化,其实我们的骨骼并没有变化,不然这样的变动会导致项目流产。后来这些产品方向的问题得到产品合伙人的梳理才改善,定准了切入方向。
    https://i.v2ex.co/P4q0n58f.jpeg


    稳定的方向真的非常重要。创过业的小伙伴也许都有这样的体会:开始方向上偷懒,一说做什么就上了,结果一个阶段整天忙死,遇到困境然后又一闲好多天,不知道做什么,两眼望天花板。

    我们方向定了之后再就是流程分工的问题了。由于人少人靠谱,我们就直接责任到人了,这个问题不是太严重。

    还有一个进度问题,我们团队开发任务的安排基本是好的,不会太累,也不会闲着,这都得益于产品经理的良好安排。我们制定了详细的进度表,每周一次周会,大致这样:
    https://i.v2ex.co/XK369rfM.png
    https://i.v2ex.co/VkT58lu9.png


    现在还发现一个问题,就是总结不够,比如产品经理提到了一个开发问题或者建议,记录到了tower,结果很多天过去了还是老样子。之所以出现这个问题主要还是“问题或者建议”没有转化为实际的原型,所以开发理解困难,理解了也不知道怎么下手。这是产品上太过于放手带来的问题。

    远程工作需要做好经验总结,发扬成绩,纠正错误。只出主意,只摆问题不做具体产品原型,委派责任不清,或者有委托而无检查。这些都是远程协作中非常忌讳的,我们需要纠正。

    在一步步解决上面的问题过程后我们做出来的Android 1.0直接就被豌豆荚评为了优秀。

    工具层面:我们使用tower管理项目,用微信及时沟通。每周一用微信开会,本来准备使用skype但是发现远程会议光听声音不好,我们需要文字,为了方便大家翻看就用了微信,会后我们也在tower里面写会议总结。

    当然,做远程协作最重要的还是人一定要靠谱,这是基础。以上我们能够很好的进行远程协工作,就是建立在这个基础之上。

    我们远程协作其他的重要问题嘛。我觉得还是团队建设不够,各位小伙伴离太远,关心不了大家的生活,不能一起经常搞活动。待遇问题也需要逐步提高,这样所有人才团结。毛主席搞抗日民族统一战线的时候,并不完全是发动大家去打仗,而是把重要精力放在了“解决农民土地问题,解决工人阶级的待遇问题,解决学生自由抗议问题...”然后大家都团结起来打鬼子去了。邓小平搞改革开放,也不是一来就以经济建设为中心,而是先平反了好几年,肃反冤假错案。 所有团队组织一定要关心个人,解决个人面临的困难,一群人帮一个人肯定是办事既靠谱又快,然后大家才能一心发展,只有发展才能进步,只有进步才能更团结,把事情越做越好。



    这次成功协作的经历也让我们有了新的总结。相比于前面失败的远程协作经历,主要还是表现在以下方面。最后也顺便总结一下,怎么做好远程协作?

    1. 理解什么样的开发能远程协作

    前期主力开发还是要掌握在自己手里,把部分责任清晰的工作用远程协作方式来进行:比如Android端或者iOS端等。不要全部放手外包项目,根据人员熟悉稳定情况,然后逐步安排所有远程协作开发工作

    2. 开发者一定要靠谱专业

    必须善于识别好的开发者。不但要看开发者的一时一事,而且要看开发者的全部历史和全部工作,这是识别开发者的主要方法。

    3. 需求分工明确,规划清晰

    总之需求、分工一定要明确,这样才不会有抱怨。项目开发流程以及进度安排等规划一定要清晰,这样才不会迷茫。

    4. 使用先进项目管理工具,做好阶段性总结工作。力戒只安排,不总结。




    最后发点小广告

    欢迎加我探讨远程工作 或者也许能帮你远程搞定一个项目

    [email protected]
    8 条回复    2015-08-07 14:10:58 +08:00
    Keinez
        1
    Keinez  
       2015-05-18 15:05:05 +08:00
    几点建议:
    1、微信太吵,我个人认为工作和生活应该分开。因而推荐Slack+Skype或者Telegram+Skype(后者我并没有使用过)。
    2、会议节奏建议一天一次,每次严格控制在半小时。
    3、文档协同使用Github/GDocs,文件传输(产品-->设计-->开发)使用Dropbox。
    4、有关Project Management工具,我也在寻找合适的,tower使用过,感觉并不好。等我找到合适的再推荐吧。

    另外看起来你们好像缺设计师?
    andye
        2
    andye  
       2015-05-18 16:37:12 +08:00
    @Keinez trello不错
    Keinez
        3
    Keinez  
       2015-05-18 18:00:34 +08:00
    @andye 也挺不好用的。
    icedx
        4
    icedx  
       2015-05-18 18:37:26 +08:00 via Android
    Tl;dr
    miaozaiye
        5
    miaozaiye  
       2015-05-19 00:30:01 +08:00
    不断总结,不断学习,不断前进。
    zhouquanbest
        6
    zhouquanbest  
       2015-05-19 09:41:58 +08:00 via Android
    我觉得最好的远程工具是YY (逃
    mongodb
        7
    mongodb  
       2015-05-20 10:26:50 +08:00
    @zhouquanbest 真的是YY好用。。。
    crayonyi
        8
    crayonyi  
       2015-08-07 14:10:58 +08:00
    微信做im工具,查询历史消息很不方便,最后还是觉得qq好用。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2756 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:12 · PVG 20:12 · LAX 04:12 · JFK 07:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.