在经过一番灵魂斗争之后,我终于做出了一个自认为非常重要的决定。于今年八月,离开了自己熟稔的传统软件开发行业,加入了一家互联网产品公司。时至今日,不知不觉,已经有一个季度有余,趁着通勤路上的闲暇时光,梳理了一些感悟,期待能给同样遇到瓶颈的同学带来一些思考。
作为一名资深的传统型软件开发者,我只呆过为数不多的几家企业。在这些企业其行业背景几乎截然不同,但其结局大体上可以称为中国传统IT产业的一些缩影。总体上可以分成,项目型软件公司,产品型软件公司,和互联网公司。
作为项目型软件公司而言,也许开一家软件外包公司从来不是老板们的初衷。每位老板心中都充满了开发一款热销产品的美好憧憬。
然而,市场如同荆棘林,碰了无数次壁后,终于也得接受现实。利用自己的资源,终于利用有限的资源,杀出了一条血路,承接下各种大小不同风格迥异的项目后,却由于各种原因,只能利用历史项目的简单堆砌,快速搭建框架,快速完成。在这样的情况下,就可能存在一系列问题。
首先当初业务层面的问题。开辟业务之难,难于上青天。往往需要靠企业创始人的人脉度过创业早期的难关,在打开局面之后,需要通过多种途径开辟新的业务。然而,软件外包业务往往都是卖方市场,取决于谁拥有最灵通的消息,最快的响应速度和最扎实的人脉,而不仅仅是纯粹的技术因素。甚至许多时候,很多项目都属于内部消化,留给软件公司的,就只是残羹剩饭。
其次是项目越来越难做了。表现出来是项目过程中的需求不可控或需求蔓延。许多中小型企业前期接到的许多项目,往往有一个最大的特点,就是功能特别多。有的功能,看起来和主体毫无瓜葛,就是因为某个干系人,或者是业主,或者专家,或者公司老板说的一句话,就加到系统中来,而开发者为了完成这个目标就得付出百倍的努力来填坑。而且由于不同的项目行业跨度可能比较大,每个功能具体是实现什么,开发团队是不一定清楚的,是从头开始梳理客户的业务,每个人都成为领域专家么?没有,这往往取决于项目的综合周期。而周期,肯定是不够的。于是拿业主当小白鼠是没有办法的办法,毕竟是按照业主的想法做出来的东西,是对是错?得看业主自己的理解。性能问题就不用讨论了,反正只有那么几个人用,也不需要涉及高并发设计,一个单体应用,一个领域可以搞定的事情,没必要做成分布式部署了。一个项目中,一百个功能,只有二十个功能是用得到的,但是为了履行合同,必须花费最大的精力完成另外百分之八十的功能。有时候,负责任的乙方为了更好的打通业务闭环,在跟客户进行头脑风暴的过程中,往往会主动提出一些想法。然而,用户需求就是笼子里的狮子,一不小心放出来了,就得自己吃苦受累了。拒绝?有一位耿直的小伙伴因为拒绝客户提出的变更而被客户从现场驱逐令人不胜唏嘘。所以往往只能委婉的拒绝,实际上大部分婉拒,客户都会理解成你是一定会做的,只是短期不做而已,于是最终还是得做。在无法控制的需求蔓延之下,项目的开发周期被无限期的拉长,一个合同预期三个月的项目,往往需要延迟到半年或更久,更遑论旷日持久的维护周期了。
其次会遇到的问题是无法对项目进行更加精细化的管理。对于项目型企业而言,往往必须建立完善的项目管理流程,通过制度来确保体系的良好运作。做过对日外包的都知道,对日外包项目往往会视合同额有一本非常厚的开发手册。日本人对于工作的细致入微的程度令人钦佩,哪怕是一个简单功能都会实现流程和伪代码等精细到每一行代码。但是对于项目型外包公司而言,由于项目周期和合同额的限制,往往没有足够的时间来进行足够的需求调研和文档整理工作。为了快速完成某个项目,往往在既有项目基础上进行迭代。随着时代的变迁,当代开发者所接受的教育背景,已经是极限编程或敏捷建模的思想。这两种编程思想都是明确说明,要抛弃无用的文档,通过代码来保证软件质量。而且,技术人员往往不会关注业务层面的事情,往往倾向于通过技术手段来解决问题。于是变成了四不像的地步,第一点就是,开发者看不懂需求文档,第二点是所谓的领域专家,千金难找,第三点是开发者也看不懂领域专家们建立的统一模型,功能对不对,代码写得是否符合需求,依然取决于开发者和项目经理对于需求的领域和经验本身。而且由于文档的缺失,如果懂业务的领域专家或项目经理的流失,对项目将是迎头痛击。另外由于需求的不确定性,最终导致项目越来越庞大,越来越臃肿,最终成了一个奇葩。
与只能靠接项目为生的外包软件公司相比,产品型软件公司具备一定的优势。他们或一开始已经拥有一个或多个拳头产品,能够面对一定的市场竞争。而这些产品,往往来源于一些外包型项目中发现的商机。然后将需求提炼,再创造出新的价值,然后再以软件的形式出售。当前有一种非常流行的概念,saas软件即服务,已经成为一个非常巨大的市场。但是对于大部分软件企业而言,模式只是一个噱头,该卖软件还是卖软件,只不过换了一种形式。以前是买软件时,要么自己采购,要么服务器一起包,现在放在云服务器上,或者同样也可以买软件送硬件。产品还是这个产品,服务还是这个服务,档次没提高许多,实际上换汤不换药。甚至依然是通过卖产品的形式做项目,最终依然走在外包这条路上。必须承认,基于互联网的saas 模式依然充满了无穷前景,这也是令无数软件公司趋之若鹜的原因,但是却并非每家公司都有sales forces公司这么好的机会。
对于传统软件企业而言,还会遇到的问题应该是资源的问题。一方面,客户资源也是重要的资源,由于缺乏拿得出手的产品,承接项目往往只能靠关系。其次,完成项目的项目组织也是一种资源,如果企业无法维持持续的进步,最终无法逃避的问题是,企业组织的内卷化。优秀的人会最先无法忍受管理团队犯下的各种弱智错误而离开公司,而那些中庸的人,或者技能很差的人却显然由于更好的忠诚度而得到了重用,于是,这也说不定会堵死其他新鲜血液加入公司的机会。最终,企业只能朝着更加昏暗的下坡路行进。能否力挽狂澜,还得看老板们究竟如何解决业务层面的问题,获得一线生机。
随着互联网时代的到来,无论是哪种形式的软件公司,都面临来自互联网的降维打击。而且是全方位多维度扑面而来的打击。第一个维度是业务层面,也许某某某公司刚刚开发出一个设计优美,功能全面的办公软件,准备大干一场干出一方事业时,然后去找某某国企领导做推广,然后,领导说,对不起,我们用钉钉了。某企业想立足于制造业做一个私有云,那么,也会问到,为什么不用阿里云?做如果说,市场是黑暗森林,那么阿里云一定是手握二向箔的时空拾荒者,不声不响间完成了对一个个传统软件企业的集体围剿,让大家每天都必须都得思考如何过冬。不仅仅是软件企业,那些昔日靠卖服务器谋生的企业,本来已经微薄的利润,也被这些行业搅局者破坏的一毛不剩。时空拾荒者们开辟出政务云,企业私有云市场,让传统硬件企业走上了不归路。第二个维度是技术层面的。有的企业会说,巨头们做的业务我们一概远离,不沾染总可以了吧?对不起,不行。因为,人力资源也是黑森林的一部分,当你以为自给自足在自己的小世界里经营一番独门生意时,对不起,市场上的开发者都去干互联网了,你该从哪里招到合适的人?互联网企业集体狂欢,意味着传统软件企业集体悲催。在这个时代,要想不被革命,除非做一个真正闭塞的小圈子,例如某某类型的行业软件,别人懒得抄的软件或者没办法抄的软件,或许还有一线生机。
有人会说,困境并非每家企业都得时刻面对,事实上往往这些问题都是在企业发展到了一定程度时才逐步暴露出来。然而,必须清晰的看到,大部分传统软件,哪怕是昔日的明星企业,走上了类似的道路。他们曾经业务源源不断,而今却逐渐开始老去,逐渐进击乏力,开始吃老本。头部玩家们由于历史的沉淀,也拥有更加广阔的资源,更能够度过冬天,而中小企业只会越来越难。从某种意义上讲,以传统软件例如项目型外包企业,总是有办法承接项目,但是却难以做大做强。也许市场上的定制需求是不会随着时间和技术的迁移而消亡的,但是用户的需求永远会越来越高,越来越难以实现。对于软件企业而言,也意味着需要付出更大的代价来适应用户需求的升级和技术的更新换代。而且为了维持更好的团队运作,还需要建立更加完善的薪酬体系,更加合理的管理制度,建立一支稳定的团队,才能活下去。要想更好的生存,要与时俱进,学习互联网时代的打法,才能有希望获得新的转机。