当年“你说什么,我都能实现”的软件公司,后来都是怎么死的?

在 #“我,80后,曾经靠副业的收入买车买房”# 的评论区里,有读者问,十几年前,圈内有不少软件公司,规模大小不一,遍布各个行业,但这几年似乎都没动静了,他们还活着吗?

我说,撇开纯做 “劳工” 输出的外包公司,或者有后台背景的机构,除非产品化转型成功,那些做项目的,尤其是那些曾对客户信誓旦旦保障 “你说什么,我都能实现” 的软件公司,几乎全死了,而且死相还挺难看的。

为什么这么说呢?有句话说得好,能靠堆机器突破的瓶颈,通常都不是瓶颈,能用钱解决的问题,几乎都不是问题,但可悲的是没机器、没钱。

在我已知的范围里,假如你不惜成本,基本没有招不到的人,也没有解决不了的技术问题,但这是伪命题,无论是互联网公司,还是软件公司,在技术上都是成本驱动,任何技术研发的投入必须对业务产生正向收益,反之,投入和收益一旦产生逆差,这场戏就很难唱的下去了。

本来嘛,你搞软件的,距离 “一次投入,多次获利” 这项标准越近,那就越赚钱,离得越远,那就越亏钱。

十年前,我在某金融软件公司工作,刚开始,一个团队才2-3个人,只做一家客户,只维护一套代码,你要啥,满足你就是了,你高兴,我也嗨皮。

渐渐地,随着客户数的增多,研发人员的增多,变成了“一堆人,同时维护几套代码”,这样一来,Bug增多,客户投诉越来越多,成本与效率/质量的矛盾日益凸显。面对这样的困境,当时的老板分别采取过3种应对措施:

  • 一对一服务 – 项目制:多个团队,多套代码,多套标准,服务多家客户,但这样一来成本又难以承受,时间一长,肯定资不抵债。
  • 一对多服务 – 标准化:一个团队,一套代码,一套标准,服务多家客户,但客户不买账,客户说我的需求都是个性化的,你别来某某标准来引导我,叫你咋做,你就咋做,不愿意?那您走,我找别人家做。
  • 一对多服务 – 产品化:一个团队,一套代码,多套标准,服务多家客户,通过技术与配置化的手段,利用SOA思想,打造自己的产品化平台,但对技术投入要求较高,尤其是核心人才的依赖较大,中小型企业一般都很难留住这些人,只要他们一走,公司基本完蛋。

显然,这是一个悲伤的故事,虽然主动寻求改变,但结果却不尽如人意。于是,业务每况愈下,抱怨也随之变多,幸福感下降,效率打折扣,再加上甲方挖人,最后老板顶不住,逃去了香港,团队土崩瓦解,Game Over……

或许是天生爱总结的癖好,前几年,我曾对 “软件产品化” 这个话题进行过一些调研和分析,下面与大家分享一些思考。

关于软件产品化的几点思考

与其他行业类似,国内的大部分软件公司都是从开发一、二个软件项目起家的,而且项目规模和复杂度也不大,依赖某几位高手(或创始人),他们能够在客户适度满意的状态下成功完成项目。在我看来,面对这种定制化项目,成功的因素主要有如下几点:

  • 需求明确且范围不大,变动不多:要么客户方需求明确,要么企业对需求足够了解,于是,双方至少有一个人对需求有全面并且细致的了解,双方合作氛围很好,这可以减少需求变更的量和避免冲突尖锐。
  • 创始人都是技术或业务的高手,或者手下有1-2名得力干将。
  • 项目使用的技术涉及面不广,往往一两个人兼而关注就可以把握。
  • 一点运气:正好选对了技术平台;正好高手没有离职…… 

然而,随着时间的推移,企业承接的项目多了,人员多了,企业规模也扩大了。这时候,企业的内外部环境都发生了很大的变化。先从外部环境来看:

  1. 客户行业发展迅速,需求在宽度、深度、变化频度上发生了持续的变化。具体来说,要求软件系统支撑的业务多了(需求宽度增加),并发使用软件系统的人多了、时间长了,业务过程复杂了(深度增加)。
  2. 竞争加剧,客户需要经常进行业务的调整(变化频度多了)。这种变化,往往会使客户的需求管理成为一个专业、持续、并且工作量相当的过程。也就是说,企业具有需求管理与软件开发进行分工的需求。
  3. 软件系统开发使用的第三方技术平台种类多,且复杂,更新换代也快,如果软件系统在性能、持续稳定性有要求,并且软件使用周期设计要求满足一定的年限,就要求企业对第三方技术平台的发展进行跟踪,并寻求有效应用的实际经验(最佳实践规范)。这样,企业就逐步有将集成应用技术(含软、硬件集成应用技术)进行专业分工的需求。
  4. 市场技术竞争的重要性增加,关系竞争弱化,企业发现为了获取合同,他们需要有研发能力的保障,并且要在技术竞争考察中胜出。迫使企业对客户关注的重点专业技术进行投入。 

再从内部状况来看: 

  1. 企业同时运作软件项目数量增多,但依赖于高手的项目模式没有改变。各项目都需要高手来保障,如果没有高手,项目就停滞不前,而且往往以非正常手段结束。
  2. 随着软件项目的深入展开或软件的升级换代,企业会发现有些模块的开发总是在重重复复地做,上一个版本做了,这个版本还要继续做,同时开展几个项目,都有类似的事情在重复做。但要直接使用之前的内容,又不行。
  3. 技术人员总是有很多理由不去写文档,如果不是一个人将一个模块从分析设计负责到代码,后一个环节的人总是得意于自我创新,并容易发生设计人员和开发人员的扯皮。
  4. 软件项目在前期开发时候是一路凯歌,到了快要交付的时候,却又难产,总是达不到要求,改改代码重新测试,没完没了。而技术人员又非常辛苦。甚至出现部分或大全部返工现象。
  5. 软件项目开始的时候,谁也不知道什么时候能完成,领导说三个月就三个月,半年就半年,实际上,没有按期完成的,延期3-5个月是常事,1-2年也是有的,甚至不得不换班子重开炉灶。 

面对以上变化和问题,企业的解决办法之一是延续原有项目的成功模式——高手主导的项目模式,即给每一个项目配备高手。但这样问题来了,如果没有那么多高手,就让把所有的项目压在有限的高手身上。如果高手有限的话,实际上企业是将问题转移给相对低资源能力的高手去解决。当然,有限的高手也同样可以使用同样的手法进行问题转嫁。

但这种解决办法由于将所有的问题转移到高手身上,企业管理就研发方面的决策难以形成明确的方向和目标,在研发方面只有用人的战略。尤其在互联网时代,如何留住高手,如何在符合企业价值观(薪资)与战略的前提下,找到高手,都是世界级难题。

显然,以上并非根本性的解决方案。一旦高手动荡,企业业务发展就受限,而且这种方式面临的风险很大,过度的项目定制开发不但影响项目的交付进度和质量,也使成本居高不下,侵袭了企业本来就比较有限的利润。

那么,出路只能是走向产品化。

然而,软件产品化是一件相当困难的事情,企业在各个方面都将面临挑战,并必须作出相应的改变。

首先,企业需要转变经营理念和思路。其实不管是项目化还是产品化,都要坚持客户导向,但是就客户导向的内涵和实现方式上,很多企业往往是被动地满足客户需求,甚至迁就客户五花八门的需求。

我们到底选择什么样的客户?这是企业成长中必须作出的回答。即便已经明确了这个问题,对客户各种需求也不是不加区别的满足,而是需要抓住目标客户的核心需求和偏好,并认识到客户只要在核心利益上得到足够的满足,他们愿意牺牲一些个性化的特性——这正是产品化的前提假设。

根据以往经验,产品平台化实施过程中将面临各方面的困难。

面对外部一些新的市场机会和客户特殊需求,营销人员总是倾向于把握新机会和响应客户的新需求,如果高层在增长压力下没有确定相应的战略原则去约束产品决策,则很可能使既定产品定位和产品化方向的努力付诸东流。

即使公司界定了产品定位和方向,在具体操作时,到底用户的某个特性是否需要加入产品规划中,到底某个需求是否应当纳入到产品功能开发中……如何在标准产品与客户最终产品之间取得平衡,这仍然产品化开发模式下最为头痛的问题。

比如,有些需求一旦纳入标准产品之中,对产品可能是致命的打击。在平台化开发模式下,产品架构和模块/组件设计将更多地考虑开放性、通用性和冗余设计,从局部来看会影响产品开发的进度和效率,尤其对新产品系列的第一个产品,将需要更长时间才能推向市场,这是企业必须认识和接受的代价,但换来的是后续产品开发速度的大幅提升。

另外,产品平台化开发还会来自内部高手的挑战和开发人员习惯的阻力。高手们总是希望按照自己的思路规划和开发产品,要让大家都统一到一致的平台架构和开发模式下绝非易事。

开发人员也不喜欢条条框框,总是想弄点什么新的东西,但平台化则需要更多的标准化和规范要求。综上,要解决这些难题,企业需要足够的决心和耐心。 

显然,软件产品化不仅仅是技术上的问题,然而技术也是其中关键的一环,包括架构设计、技术平台、模块化构造、数据结构、函数/算法、接口技术等。例如技术平台的工作一般包括:

  1. 第三方技术平台选型 技术使用研究,确定软件项目技术路线和技术架构;
  2. 制定开发规范,并形成开发案例和模板,扫清开发队伍大规模开发时的障碍;
  3. 开发技术控件,提高开发队伍大规模开发的效率等等;

好了,就扯这么多吧,有些零碎,凑合看吧。软件产品化还与行业发展状况、企业产品形态成熟度、企业管理成熟度、软件技术发展、人员职业化程度等因素相关,所以还有很长的路要走。边走,边看,边改进吧。

Image placeholder
IT头条
未设置
  56人点赞

没有讨论,发表一下自己的看法吧

推荐文章
我们走访了900名微软员工,为你揭秘全球最大软件公司的代码评审机制

大数据文摘出品来源:michaelagreiler编译:倪倪、钱天培、毅航全球最大的软件公司之一微软拥有约140,000名员工,其中大约44%,即超过60,000名员工,是工程师。Office、Vis

代码传奇 | 身价10亿的程序员 雷军当年也为他打工——WPS之父 求伯君

他的前半生,值得我们每一个人深思。在普通人眼里,他寂寂无名,只有年岁稍长的文化人,才听说过他传奇般的存在。在IT人眼里,他是块活化石,中国第一的大旗除了他,没人敢抗!他是求伯君,从一个浙江穷山村走出来

三代阿里云总裁同台共话,续写十年“飞天”传奇

阿里云三任总裁王坚、胡晓明、张建锋同台对话,这本身就是一个“爆点”。作为9月25日云栖大会主论坛的“压轴戏”,三位技术大咖凑在一起,会碰撞出怎样的火花?从左到右:蚂蚁金服集团总裁胡晓明;阿里巴巴集团技

国产自研数据库DM8发布 看冯裕才的四十年“达梦”之路

5月8日下午,借助第十届中国数据库技术大会(DTCC2019),国内知名数据库管理系统和大数据平台软件及解决方案提供商、武汉达梦数据库有限公司(以下简称“达梦”)发布了新一代数据库产品–DM8。这一天

消失的这几个月我都干了什么

前言消失两个多月后我胡汉三又回来了,比较遗憾的是这并不是一篇技术文,有兴趣的朋友就当做故事看吧。所以这其实是一份年终总结其实这段期间一直有朋友在问我咋不接着更新公众号了?甚至一点消息都没了。真不是不更

实现人工智能落地 你还差一个“数据分析流水线”的距离

在智慧生产场景,生产制造商可以在生产线上利用深度学习,尤其是图像识别,将产品的质量检测自动化。比如自动检测产品表面有没有划伤、有没有零部件的缺失、有没有标签的错位。研究表明,相比人工检测,智慧检测可以

TypeScript是什么,为什么要使用它?

课程推荐:前端开发工程师--学习猿地精品课程 从历史上看,JavaScript已经成为了在Internet上编写网页和应用程序脚本语言的主要语言。但是否能通过JavaScript创建大型复杂Web应用

用 Python 给女友做了个可能会被打死的七夕礼物

马上就是七夕了,晓得你们有女票的或者正在追妹子的,肯定又在绞尽脑汁想买什么别出新裁的礼物,如果女生感觉你的礼物花心思了,那肯定是好感度倍增啊。今天给各位分享一个用Python制作的成本一毛钱却诚意满满

nodejs都能做什么?

Node对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。V8引擎执行Javascript的速度非常快,性能非常好。Node是一个基于ChromeJavaScript运行时

航空公司系统是怎样炼成的?

刚接触航空业时,觉得自己像刚踏上美洲的弗朗西斯科.皮萨罗,或是刚遇见毛利人的库克船长,仿佛走进了信息技术的蛮荒之地,随便播下一颗“现代技术”种子,就能长出一片跨时代的技术森林。与国内行业解决方案提供商

JS 直接打印功能实现代码

Jsweb打印方法汇总 1.插件打印,网上可以搜有付费和免费的打印插件可以用,一般来说免费的一般只支持ie浏览器,有的免费插件还有水印。需要安装插件到打印机所用电脑上。2.js直接打印,只支持IE浏览

把 14 亿中国人都拉到一个微信群,程序员在技术上能实现吗?

根据国家统计局的数据,截至2017年末,中国大陆总人口为13亿9008万人(包括31个省、自治区、直辖市和中国人民解放军现役军人,不包括香港、澳门和台湾以及海外华侨人数),早已超过13亿。目前,微信群

css能实现自动更换图片吗

css能实现自动更换图片吗css能实现自动更换图片,具体的做法是为每一张图片创建一个animation动画,设置不同的duration持续时间,再通过keyframes实现不透明度的变化,来实现更换图

Fish Redux中的Dispatch是怎么实现的?

前言开源地址:https://github.com/alibaba/fish-redux我们在使用fish-redux构建应用的时候,界面代码(view)和事件的处理逻辑(reducer,effe

揭秘|每秒千万级的实时数据处理是怎么实现的?

01背景闲鱼目前实际生产部署环境越来越复杂,横向依赖各种服务盘宗错节,纵向依赖的运行环境也越来越复杂。当服务出现问题的时候,能否及时在海量的数据中定位到问题根因,成为考验闲鱼服务能力的一个严峻挑战。线

那个“炫酷狂拽”的数据可视化利器AntV 11.22版全新发布啦

导读AntV是一个数据可视化项目,也是一个团队,蚂蚁金服数据可视化团队,一群有爱有梦的人,怀揣「让人们在数据世界里获得视觉化思考能力」的梦想前行,希望成就智能时代全球领先的数据可视化解决方案,满足与日

那些“中漂”的欧洲科学家们

大数据文摘出品来源:Sciencemag编译:武帅、刘俊寰就近几年的科技发展水平来看,中国已逐步向科技大国迈进,这在提升中国在全球的科研影响力之余,也在一定程度上改变了全球科学人才流动背后的格局。比如

ERP云端相竞,QAD “中国云”的差异化竞争

提起海外知名ERP厂商可能很多人会想到SAP、Oracle,但在制造业尤其是汽车领域大家对QAD也许会更为熟悉。专注于制造业40年的QAD今年也迎来了在华的20岁生日,在6月13日举行的QAD2019

JavaScript中对“this”的简单理解

1.this的奥秘很多时候,JS中的this对于咱们的初学者很容易产生困惑不解。this的功能很强大,但需要一定付出才能慢慢理解它。对Java、PHP或其他标准语言来看,this表示类方法中当前对象的

一份关于机器学习“模型再训练”的终极指南

机器学习模型的训练,通常是通过学习某一组输入特征与输出目标之间的映射来进行的。一般来说,对于映射的学习是通过优化某些成本函数,来使预测的误差最小化。在训练出最佳模型之后,将其正式发布上线,再根据未来生

java字符串“我是谁”的转码问题

微信公众号:爱问CTO专业编程问答社区www.askcto.com 问题出场publicstaticvoidmain(String[]args)throwsException{ Stringa="我是

阿里巴巴向全社会开放黑科技:“泡在水里”的服务器

为了让数据中心更绿色,阿里工程曾将服务器“泡在水里”进行散热,节能超70%,今天这项黑科技的神秘面纱被揭开。2020年1月6日,阿里巴巴宣布将“浸没式液冷数据中心技术规范”向全社会开放。这项规范旨在用

10后小学生都能教你学编程了!低龄编程的下限在哪?

大数据文摘出品作者:宁静最近,文摘菌经常收到读者留言,说b站上有一个10后小学生在教编程。小学生???教编程???话说文摘菌小学时候还只知道玩儿贪吃蛇……在感叹长江后浪推前浪的同时,文摘菌也赶紧去这位

十年软件通胀率:从 2009 到 2019 年,软件越来越昂贵

过去十年,软件定价逐渐上升。在我们调查的一百个商业应用程序中,价格平均上涨了62%,其中包括一些比较便宜的应用程序。如果用户现在花钱购买一款应用程序,那么它很可能比十多年前的价格贵98%以上。

软件工程学习笔记(一):软件工程

1计算机软件1.1软件计算机软件是指计算机系统中的程序以及文档,程序是计算任务处理对象和处理规则的描述.1.2软件特点 一种逻辑实体. 维护工作量大. 维护软件过程中会引入副作用. 1.3软件分类1.