做产品,到底该外包还是自己聘人?

时间:2020-06-18    作者:     822 次浏览

做产品,到底该外包还是自己聘人?

「委託外包?还是内部聘技术人?」这个问题对于非技术背景的经营者而言,一直是个两难的抉择。如果此时,你正好準备创业,拥有自己领域的商业资源,该如何让一个产品快速进入市场,发挥所有商业资源的效益?我希望以中立的角度来剖析优劣势提供各位参考,希望对于大家产品开发的过程,有更深入的帮助。

怎幺考虑要不要外包?

一般来说,如果是短期的产品或是专案开发,大部份人会选择外包,不只小公司,中大型公司开发新的技术领域时,其实也常常如此选择,然后打的如意算盘就是,价格低、开发速度快、工程团队不需要管理、产品做出来后再找来工程师接手即可。然而从我听到的、看到的案件之中,大部份的案件都不是如此的顺利。

因为当公司选择价格低的开发团队时,通常就会遇到高风险,而管理外包的方式,绝大多数就是「一纸合约」,说实在话,以我经历接案事业将近快十年的时间里,即使每个接案公司都希望在合约中详细规範规格,但从来没有遇过任何专案的业主是不会改变规格的,也因此造就业主的美好想像和开发结果天差地远,双方都有说不完的苦衷,而那「一纸合约」在此时的效力跟垫便当的宣传单差不多,通常这种案件结果就像是情侣分手,不是草草结束,就是另寻他人。

既然这是常见的外包惨况,为什幺还要选择外包呢?我认为外包提供最大的优势是「弹性支援」,因为一个月内临时要内聘到两、三个资深的开发者开发产品除非祖上有积德,然而透过找外包的话,这绝对是有可能的事情。

自己人是否比较好?
做产品,到底该外包还是自己聘人?

上图是我最常用来说明聘人会遇到的问题,简而言之,当公司刚开始开发产品时,很可能聘用多个领域的工程师,但是当产品发展逐渐迈向稳定时,工程师的工作量随之降低,代表产品更新的需求减少时,工程师的管理成本显得大幅浪费,甚至有的工程师在团队就直接乾脆被拉去当业务,当然这对公司经营而言应该不是最好的配置,套句乡民的说法,凡事还是让专业的来比较好。

公司聘人,很多人会觉得优点当然是自己的人比较好使唤,或是起码资料不会外洩,要不然就是开发能量充足的时候,想做什幺都可以做,如果公司制度和配套全面,这些理想状况确实可行,偏偏笔者也常听到许多「意外」,除工程师能力不够全面等普遍问题,公司文化跟工程师不合造成工作效率低,或是工程师拿翘,自己在程式码里面留一手,甚至擅自离职,当然也有公司业务成长或资金扩充时,工程师认为自己的技术成本应该提升,导致团队失和,偏偏请神容易送神难,让产品开发原地打转。这类「人的风险」状况都相当常见,也成为内部聘人最大的隐忧,只能说聘人的成败,多取决于老闆自己看人的经验。

如何做出选择?

要回答这个问题,我认为最重要的因素为「公司内有没有技术架构者?」。这位架构者或许是 CTO,或许就是 CEO,当然也有神人等级的 UI 设计师有能力自己规划系统架构。担任「技术架构者」有个极为重要的工作:切割系统并且分派工作。大部份刚成立的团队,有些成员是工程师,但一般工程师并没有能力构筑整个系统,举例来说,假设今天要做一个像是 Instagram 的 App,架构者必须明确定义资料结构,并建构资料库大概的样貌,然后拆解 App 要处理的工作项目与 Server 端要处理的工作项目,最后再用 API 的规範文件规範出来,这样剩余的工作,就可以分别找 App 工程师、 Server 工程师个别开发,此时可以选择再搭配外包进行单纯且密集的合作,运用外包的弹性,在短期内完成工作。

如果公司没有架构者就进行开发,光在釐清产品规格时,就会遇到很大的阻力,因不清楚产品的技术架构,也没办法实践找寻从开发到上线的最短路径。此时,我通常建议团队至少招聘两种人,UI 设计师以及后端工程师,UI 设计师必须对于使用者经验有认知的,这两种角色都必须要思考整个产品面向的规划,聘到这两种人,对于产品的开发过程来说,绝对会是很大的帮助,也可以将从这两种人手开始训练成公司的架构者。

关于降低外包的风险

在产品开发的过程,为了规避工程师掌权的风险,最重要的两件事情,就是技术文件以及程式码的透明管理,不管聘人也好、外包也好,一定要在早期就规範这两者资料文件,笔者已经耳闻太多工程师离职后,接手工程师乾脆整个案子做重构的惨案,或是外包跑掉,连资料库的密码都没留下。

因此在我管理的专案中,都十分要求技术文件以及程式码的管理,即使这会让成本上升,却会大大降低风险,如果你是属于非技术底的创业者,不管你聘用自己的 CTO 或是外包团队为你开发产品,请一定要记得让他们教会你怎幺看资料库、怎幺进到产品的 Server、所有系统的帐号密码、程式码放置的位置以及产品设计的原图一定要留下来,这都是为了追溯产品架构的最佳资料,即使多花点钱,都会是值得的。

做一个尊重技术专业的老闆

我们总是听到业主说:「既然你们是专业的团队,应该大小事都要能够处理好,我就不用担心这些事情,应该时间到了,产品就要完整呈现在我眼前」。通常遇到这种业主,我建议接案团队,有机会就不要跟这个客户合作了,因为他们对于软体服务的产品开发毫无概念。

在产品开发的过程,一定会有规格的改变,哪怕是一个按钮的位置要改变或是颜色要调整,甚至是一连串改变设计的过程,都是常见的状况,在这过程中,业主不愿意了解为什幺改变一个东西,会造成工程师的困扰,会造成架构的改变,或是业主连最基本的技术架构都不愿意花时间理解,说要做软体服务的领导者,这实在是一件可笑又可怕的事情,当然不只是业主,很多公司的老闆也都是如此。

我目前合作的伙伴,对技术开发的专业都是相当尊重的,即使改变产品方向,也知道取捨,尽量减轻开发工程中的负担,一起了解也许会多花一点时间,但也一定会让产品的营运端跟开发端合作更为紧密顺利。渐渐的,你也会发觉,即使你并非技术背景,但也会知道什幺是 Git、什幺是 Linux、什幺样的工作是 Backend 的人在做、什幺样的工作又是 Frontend 跟 app 开发者在做的工作,这些眉眉角角,会让你了解产品开发状况的最佳切入点。

不管找外包还是自己人,找对人最重要

对我而言,不管是外包也好,自己聘人也好,都希望是以「长期合作」为双方共识,该付的价钱先谈好,大家合作的底线也都说好,遇到不愿意提供程式码的工程团队,我会宁愿不合作,也不要为了赶进度硬要合作,因为那只会造成后续开发的问题。我最强调的是,不管在哪种合作模式下,诚信一直都是最重要的事情,找到跟自己最合调的工作团队,即使遇到了问题,也可以一起共度难关,一起为开发延迟的状况找个最好的解法,而不是互相归咎责任,毕竟,增加产品开发的速度还不是为了把产品更快更完整的销售到市场上,依此共识,不论是聘人也好,外包也好,只要大家目标一致,剩下就是创造双赢的分润过程了。

关于文章,如果大家有任何想法,欢迎在下方留言指教或交流!

照片来源:Andrew Magill、Geekettes

欢迎加入「Inside」Line 官方帐号,关注最新创业、科技、网路、工作讯息
做产品,到底该外包还是自己聘人?
做产品,到底该外包还是自己聘人?
    相关的内容在这里>ω<