大纲:
一、背景
二、我们想要的效果
三、洽谈第一家外包公司
四、洽谈第二家外包公司
五、洽谈第三家外包公司
六、总结
一、背景
在#“斜杠青年” 的年终总结#一文中说到,我开始负责公司的新业务线,真正的从0开始,所以新系统的一些业务代码和框架打算找外包进行编写,等差不多了我们再实现核心功能和后续业务。
这也是很多公司的做法,一些不核心的业务进行外包,自己做核心业务以及后期维护。我作为系统的负责人,自然也承担起项目的技术部分,所以在与外包公司主要交涉技术部分。
我在#揭秘程序员在「外包」、「技术导向型」和「业务驱动型」公司的日常生活说到我最早就是在外包的,如今要自己选公司的外包团队,有种奇妙的感觉。
二、我们想要的效果
1.时间短。我们系统需要在短时间跑起来第一版本给到运营团队进行测试,虽然我们需求文档整理的差不多,但系统的行业性比较强,跟业务强相关,也比较小众,所以需要外包团队有这方面的经验才可以。
2.技术上过的去。我们只是请他们干活,所以不管他们是黑猫白猫,能出活就行,对技术要求不会太高。但我作为技术人员,系统解耦合、合理的技术架构、基本的开发规范等等也要把关。万一他们把系统代码挤一堆,架构乱设计,代码规范乱来,那我后期维护亏大发了。
3.价钱合理。外包的价格都是按人天计算,我们需要兼职的UI、项目经理,全职的工程师,要是价格太高或者没有合适的套餐我们也不会接受的。举个例子解释一下套餐:一个项目经理,加5个X年工程师,加UI,可以套餐价。
三、洽谈第一家外包公司
第一家外包公司做过的产品几乎都是我们这个行业,而且还做过我们公司同行(竞争对手)的系统,所以业务上是相当满意,而且说不定他们还能给我们业务上的指导。
但是第二次聊的时候,他把我们公司同行的系统一五一十地都跟我们说了,包括一些细节,还直接说了源码可以打包卖给我们。
我们开心之余又有点畏惧,开心的是拥有竞争对手的系统源码,还有业务量和业务细节,畏惧的是我们公司可能成为下一个竞争对手,供外包公司作为谈资。
最主要的是外包公司也即将做一款自己的产品,就是我们现在想做的系统,路子够野的,果断放弃合作。
很多国内公司宁愿加点钱把业务交给国外的小公司做,也不愿意给国内的外包团队做,应该也是有上面的原因在的。
四、洽谈第二家外包公司
第二家外包公司第一次只来了个顾问,在他跟领导聊完之后,领导给我打了微信电话让我去跟他聊聊技术层面的东西。
一进门,领导就跟我说了他们之前没有做过相关业务的项目,都是一些电商、企业OA、网站后台管理...
我:你们公司现在几个工程师,都是多少年限经验?
顾问:现在有60几个,在上海的有40几个,其他的在武汉驻场做项目。都是3年工作经验起步,5年经验居多,还有8年和10年的。
我:你们有做过的系统可以让我看的吗?
顾问打开一个平台,在登录界面输入了手机号码,点击获取验证码,等了2分钟,短信还没到有点尴尬...
于是又打开了另外一个系统,这个系统是某大型车企内部自己使用的,员工可以在上面请假,出差买机票,订酒店等等。我看了下功能模块,还真不少,于是提了几个问题:
我:你们这个系统当时几个人在做?做了多久?
顾问:当时7,8个人吧,做了快一年。
我:按时交付吗?还是有什么问题?
顾问:第一期没做成功,我们工时没估准,第二期多派了些人手。
我:你们当时这些机票和酒店的api哪里对接的,用哪家公司的接口呢?
顾问:是他们集团的合作伙伴XXX。
我:你们这块怎么估时?对接的时候有没有出现对方不配合或者一些技术上的问题?
顾问:这个前期都有调研的,至于问题的话我还真不知道,这个得问我们技术人员。
我:这个系统用什么架构?用什么语言写的?有没有考虑并发情况?
顾问:用Java,其他的我不清楚,我不是做技术的哈哈。
我问他还有没有其他产品,他给我看了一个app,还说可以实现人脸识别等高大上功能,我内心呵呵,这不就是调个api而已嘛,于是跟领导说我聊不下去了,他都不懂技术。于是领导让他拨通他们CTO电话,让我跟他聊几句。
我:你好!请问你们那个人脸识别是调用第三方服务商api吧?
CTO:是的。接的XXX。
我:你们这个后台架构怎么设计的啊,有没有遇到比较难的地方?
CTO:没有的,这个是中规中矩的项目,我们直接复用之前的框架,就一个SpringBoot。
我:他们模块多吗?有解耦合吗?有没有用其他中间件什么的?
CTO:模块不多的,解耦合肯定有的。中间件就用了redis作为状态的记录,消息传输的话没用mq,用的直接传输。
我:你们有没有做过高并发或者数据量比较大的项目?
CTO:有的,我们最近在做一个电子厂商的平台,要处理很多他们的信号数据,数据量还是挺大的。
我:那你们有搭建数据平台吗?还是用传统数据库去做拆分?有遇到比较头疼的点吗?
CTO:我们建议甲方用Oracle,这样他们后期维护也比较方便,我们团队目前还没有搭建数据平台的能力,我们还特意招了两个统计学专业的过去建模型。
我:你们开发流程是怎么样的?然后设计规范和代码规范怎么样呢?
CTO:我们有自己的开发管理系统,会记录时间节点,完成进度,需求等等。一般的设计和代码书写都不会有问题,我们会进行测试的。
我:你们测试也只是功能测试吧?代码有review吗?IT、UT这些有吗?
CTO:我们一般只做功能测试,代码会进行抽查,不会全部review。IT、UT没有的,这个要有的话,工期和费用都得增加。
最后挂断了电话,又跟顾问聊了后期维护、人员分配、价格等问题。
事后领导问我说,这家技术是不是不怎么样。我说还可以,外包都这样,外包是只把你功能实现了就可以,他才不管你什么系统稳定性,代码写的好不好。
我最早在外包实习的时候,CTO明知你这个代码写的不好,执行效率太低,但也只是提了一嘴,也没让你改,因为赶着交付。
五、洽谈第三家外包公司
第三家外包公司是老板朋友介绍的,价格会比第二家优惠一些。也没做过这个行业的业务,上门的时候还带了一个10年经验的高级工程师进行答疑。
一进门,高级工程师就自称做C++的。。Java了解一点,但没写过,只知道Java不用处理内存回收问题。
我:你们都是C++技术栈吗?
高工:没有,就2,3个吧,Java、Python、C#都有。
我:你们C#是写什么啊?还有你们开发几个人?
高工:某zf系统。开发人员40几个。
我:你知道微服务吗?你们项目怎么部署的?
高工:微服务知道,解耦合的。项目在华为云上部署的,用一个叫什么来着。
我:Docker?
高工:对对对。
我:你们为什么用华为云,不用阿里云或其他云?
高工:我们跟华为云有合作,客户要用阿里云也是可以的。
我:你们系统开发完成后,会进行安全测试吗?之前有没有发生过安全问题?
高工:我们有购买第三方安全工具进行测试的。安全问题的话前段时间有个监控系统被入侵了,后面调查是他们自己用U盘下载其他软件导致的,跟我们无关。
后面又把洽谈第二家公司的一些问题问了一下,大部分这个工程师都不了解的,跟Java比较相关,最后聊着聊着就没了。
事后跟领导说了,这家人数不多,技术栈也比较杂,再考虑考虑...
六、总结
1.如果之前没做过相关业务,外包公司聊起来都差不多的,筛选条件可能在服务态度和价格上。
2.很多条件需要事先在合同上说清楚,因为很多东西只有在实施起来才知道,人员水平,开发效率,协调等问题,尽量用合同来约束。
3.随意透露客户信息细节,没有行业基本准则的不考虑。
4.要想开发效率高,还是得选择有行业经验的,不然光业务知识对方就得学很久。
--end--
推荐阅读:
揭秘程序员在「外包」「技术导向型」「业务驱动型」公司的日常生活
扫描下方二维码
添加好友,备注【交流群】
拉你到学习路线和资源丰富的交流群