软件项目是自主开发还是外包给IT公司?
不少创业的CEO朋友,由于自己并不擅长技术研发,所以经常会找到我问一些技术相关问题。比如“我的O2O项目是外包好还是自己招开发好?”“我要 怎样判断一个程序员是否优秀?”“如何才能吸引到靠谱的CTO?”“我不懂技术,如何管理技术团队?”“如何评估技术团队的产出?”等一系列的问题。
其实这些创业CEO们关心的问题大致可以分为以下几类:
首先,自己没有技术背景,不知道如何寻找技术合伙人和技术团队。关于这点,我曾在上一篇文章《创业CEO如何寻找CTO》中 ,基本上讲清楚了如何寻找和判断优秀的CTO。至于如何快速组建技术团队,则主要考验的是CTO的技术影响力和人格魅力。对于CEO而言,他最需要注意的 知识主要是,除非你的CTO在Go、Ruby等较新语言领域比较强,否则建议还是更多考虑Java、PHP等主流编程语言,不然找不到合适的程序员,将会 严重制约你们的软件研发进度。
其次,对于创业项目的程序应该选择外包或自研拿捏不准。我有一位资深的外包软件开发公司的朋友和我说过,他接 手过上百个企业软件外包项目,不夸张的说,80%的外包项目可能都算是失败的,要么是交付周期远超预期,要么是预算高涨,或者是花了数十万开发费用交付的 软件产品被业务部门束之高阁,并没有得到有效利用。
简单来说,如果你要开发的软件项目复杂度较低,模块少于3个,属于主流的OA、HR管 理、邮件等系统,可以考虑采取外包开发的模式,减少自主研发较高的时间成本。但是如果你的软件需求较为复杂,与企业的管理流程深度结合,可能更适合的方式 还是自主研发,比如跨境电商系统、业务搜索引擎等等。
不论采取哪种研发模式,CEO都要知道一点,一个定制化的软件模块的开发成本是通用软件模块的20倍,华为每年用于内部管理系统研发费用是过亿的,一定要控制自己个性化定制的欲望。
在人力和资源一定的前提下,对于研发你要有合理的预期。对于一个软件研发项目而言,项目范围、质量和交付时间是一个三角形关系,当你扩宽了项目范围,要么会牺牲项目质量,要么会影响项目进度。
再 次,不确定怎样是管理技术团队的合适方式。创业公司CEO很容易在初期高估技术人员的作用,在中后期低估程序员的作用。在刚开始组建技术团队的时 候,CEO可能会对CTO和技术团队说“我们没你们不行”;系统上线了会说“你们很赞”;出了某次运营事故后可能会吐槽“你们怎么回事?”;到了要上新的 重要系统时又说“公司的未来就在你们身上了”;系统稳定趋于成熟后,CEO们可能会想“技术团队跑得还没有销售团队勤快,凭什么他们拿这么高收入,这么多 期权?”对于CTO而言,最悲剧的情况未必是项目失败,而是项目发展不错,甚至项目离IPO都不远了,但是自己被踢出局了。
CEO们需要注意,对于程序员而言,他们看重的更是信任和授权。知识工作者无法被驯养,他们需要的更多是激励和自我发展。千万不要从每天写代码的行数衡量一个程序员优秀与否,这是要闹笑话的。
在腾讯云,我们衡量一个程序员或者是技术人员优秀与否的标准,既不是单纯的每日代码行数,也不是单一的代码缺陷密度,而是看作为一位高级工程师甚至是专家工程师,技术相关的问题是不是到你为止;哪怕有些问题你不能马上解决,也要能够积极寻求答案。
最 后,缺少关于技术知识的整体框架,不确定如何评估技术团队的产出。在互联网研发的流程中,我们需要综合的评估相关技术团队的贡献:我们可以主要看研发团队 是否按时交付软件以及代码缺陷密度,可以查看测试团队最后的生产问题缺陷密度,可以测试运维团队维护的系统可用性SLA ,产品和运营团队则可以考察他们所负责的DAU日活用户数量和每用户收入ARPU等情况。
综上所述,CEO自己靠谱,才能招到合适的 CTO;CEO们需要多多善待程序员,不要总在初期高估技术价值,后期低估技术的价值;简单的程序适合外包、模块多复杂的程序需要自己开发。对于真正优秀 的程序员而言,各类问题到他为止;CEO对于技术团队的管理,更多需要对CTO的信任和授权,同时以交付时效、质量和用户体验来最终衡量。