zoukankan      html  css  js  c++  java
  • 管理软件公司与互联网公司的区别

    笔者是一个老程序员,自2002年进入.NET开发领域,一直未曾放弃。期间经历过管理软件公司,互联网公司,有国内企业和外资企业,深感其中的差异,撰文分析两者的联系和区别,供读者朋友参考。

    技术

    1 管理软件公司用的技术一般是老的,稳定的,成熟的技术。比如.NET Remoting,Windows Forms,Web Forms,而互联网公司一般会追求新的技术,比如Redis,微服务,Hadoop等。管理软件公司会使用SQL Server Analysis Services作OLAP分析工具,而新的互联网公司会采用Spark,Hadoop等大数据技术来实现。在喜欢搞技术创新的管理软件公司做事,常常会活的比较痛苦。如Linq to SQL出了没多久,Entity Framework出现,Silverlight,WPF后来也是逐渐从公众视野中消失。ASP.NET MVC的出现,大批Web Forms程序员找工作变难了。现在ASP.NET Core 的出现,不晓得会不会导致ASP.NET MVC程序员的失落。

    2 管理软件公司侧重于业务实现,互联网公司侧重于高并发,高可用,用户体验等。管理软件的用户一般是工厂各部门文职人员,一个大公司也不过100来号人员同时在线,对业务的实现相对要求高,这样可以节省人力,节约成本,而不是增加成本。有的管理软件提供了大量的批核功能,每走一个流程,每确认一个步骤(下订单,发货,产生发票,收款)都要批核,我个人认为这样的管理软件是增加用户成本,降低效率。把工厂当成一个合作的整体存在,销售部负责下订单,生产部负责在规定的时间完成订单生产,采购负责及时的购买所需要的生产物料,这是一个密不可分的整体化运作,任何一个环节卡住会造成信息不流畅,甚至会导致生产停滞。多年以前,我们在网上注册一个帐号,输入用户名,密码等信息,提交时提示电子邮件必须输入,这时我们输入的密码也会被清空,重于用户体验的互联网公司,会考虑到这种情况,帮忙我们记住之前输入的密码,这时只需要输入电子邮件即可再次提交。再比如我们出门打车,遇到路远了或是路偏了,打车师傅可以拒载。这是非常不友好的用户体验。我们是客户,的士师傅是应用提供商,得罪客户的事,就是跟钱过不去。新兴的互联网公司(滴滴和优步)改善用户体验,不仅比原来的的士价格便宜,还提供随叫随到的服务。想像一下,在大城市,一个女孩子拎着重重的行李箱,到处找车,是多么糟糕的用户体验。而互联网公司将改善此体验,只需要站在原地,司机师傅主动来找你,完全体验到打车是一种服务。我个人认为,即使滴滴和优步减少补贴,甚至停止补贴,在同等的价格下,滴滴和优步仍旧有生存的空间,因为他们改善了打车服务体验,也就是用户体验。

    3 管理软件公司的技术升级常常来源于程序员,互联网公司的技术变更多的来源于业务需求。所谓成也萧何,败也萧何。处于软件行业顶端的软件公司创造技术解决问题,提供开发工具维持企业利润,中小公司则应用技术解决业务问题。软件业相当频繁的技术更新,造成了大批老技术程序员失业,从而进一步增加了软件公司的生存成本。现在市场上几乎找不到或是很少能找到Delphi程序员,还有一些我们没有听说过的技术(他们的确存在于现实的公司中),Delphi程序员要么失业,要么转型。那软件公司呢,大量的用Delphi开发的,非常优秀的Delphi程序还是需要人员维护,软件公司面临两个选择:要么用新技术重写,要么养几个老技术程序员一直做维护。软件公司的老板都是人精,不可能将公司的未来受一两个程序员控制,所以就用前一种方案,用新技术改写,这样的目的主要是好招人,老程序员离职了再招新程序员,努力将公司的命运控制在自己手中。我们公司的C/S(Windows Forms)程序员常常会担忧以后找不到工作,当他们的上司,常常需要体会他们的这种压力。技术上要将一些通用的重要的技术方案交给他们做,让他们建立信心,同时也给他们安排一些热门技术的培训,作为管理人员,也需要对他们的未来负责,对他们的绩效给予一定的相对优质的评定。互联网公司的技术变更,比如大数据的需求,数据的来源形式和格式多种多样,原有数据挖掘方案解决不了,迫切需要做技术变更以适应这种变化。于是就有对Hadoop,Spark这种大数据技术的需求,更厉害的互联网公司甚至于重建一套大数据平台,以保证处于行业领先地位。

    团队和企业文化

    1  管理软件公司的同事头脑相对固化,互联网公司则灵活一些,它们存在的理由是创新。管理软件作为一种管理思想的软件实现,应该是一种管理模式,方法和思路的固化,不允许或是少量允许变化。试想一下,规定的流程不跑,数据没经过运算,自然没有想要的结果。举例说明,大部分的ERP软件约定的流程,客户下订单,物控部跑MRP计划,产生物料采购需求和半成品的加工需求,最后成品完成入库,向客户发货,财务结算等。这是制造业ERP的基本流程,不过贸易公司的ERP则可以不这样跑,可以直接向供应商下订单,然后发货到客户,自己甚至都不用租赁仓库,直接提供供应商到用户的端到端(直运业务)业务模式。这些思路决定了管理软件不需要创新,按照约定俗成的或是上司规定的流程完成即可。常此在这样的思路下工作,人会失去创新血液。管理软件的员工常常会被产品设计人员的思路导向,创新会自食恶果。互联网公司则充满着创新。正如马云所说的,银行不努力,成就了支付宝,邮局不努力,成就了顺丰,通讯不努力,成就了微信。后者甚至产生了颠覆的力量。当初专为大学生准备的大众卡套餐动感地带,10元包300条短信息,被微信彻底颠覆。

    2 (中小公司模式)管理软件公司是人才培养的摇篮,是产生高级工程师的地方。互联网公司因为业务变更频繁,技术更新快,不适合纯技术人员生存,常常是技术人员走管理,转销售的地方。管理软件公司有明确的人才培养方案,一个老程序员带几个年轻程序员,像老母鸡带小鸡一样,一步步教导这个怎么实现,那个如何设计会更有效率一些,直到新人变老手,初级程序员变中级工程师。比如我们在管理软件公司学到的,借助于缓存可以提高效率,改善性能,用反射技术可以做成插件式系统,用动态语言可以把系统做成可扩展的,这些技术随着程序员年岁的增长,慢慢学会并灵活应用。互联网公司因为技术变更快,Web 2.0,云计算,互联网+,大数据,技术更新非常频繁,只有达到垄断级别的公司才可以生存。我们都是凡人,能进入各个领域的垄断级别的公司都非常不容易,即使进入,项目迭代周期短,KPI压力大。(我这里说的适合于中小公司,大公司不适合于此小节描述。)

    3  管理软件公司适合纯技术人员生存,互联网公司则相对重运维+技术。比如上一节我提到的缓存技术,互联网公司将此发扬光大,提供一整套的分步式解决方案(Redis,MongoDB)。程序员不仅仅要会调用API,还需要部署服务器,理解它们的运作机制。在管理软件公司,为了增加产品的高可用性,我们提供集群,镜像,数据库复制,数据库日志等技术,保证系统7*24不间断运作。而互联网公司对此要求更高,他们还要求高并发。我们知道数据存在磁盘上,读取数据或保存数据是一个很合理的操作,管理软件增删查改都是这样模式,但互联网公司对此还不满意,因为多人并发的存在,数据需要保存在内存中才能满足高并发的需求。还有高可扩展性,为了升级管理软件,我们停止服务器程序,或者重启下机器是很常见的操作,但互联网公司对此零容忍,他们要求更新系统时,不能停止服务,或是非常短暂(秒级)的停止服务。后者要求系统可以做到热插拨,这跟USB接口做到热插拨并成为业界标准是同一个趋势,我们知道Oracle升级补丁包时,可以不用停止数据引擎服务,这个特性对互联网公司非常重要(SQL Server用镜像技术也可以达到此目的)。总体来说,管理软件公司只需要把技术做好,而互联网公司要求在技术之外,还需要了解运维层面的知识。

    员工发展

    1 管理软件公司的大部分员工发展前途光明,互联网公司适合明星员工创业。在互联网公司做事的员工,技术常常非常专业,也就是一种商业模式下的技术实现,因为互联网公司需要用户,需要流量,需要变现,他们的创业压力非常大。传统的管理软件公司,搞好了客户关系,拉到几个订单,买几部电脑,招二个程序员就开始干活了,是个人走向创业的快速路径。做得一般的管理软件,实现客户要求的单据,流程和报表,相当于一个数据库的增删改查程序,做的好一点的管理软件,融合了一些管理理念,加入了部分行业需要的特性,是一个软件+理念(思想)的载体。做的更优秀的管理软件,成为行业的标杆,几乎成为行业的代名词(模仿了互联网公司,比如团购就是美团和大众点评,看电影就是猫眼)。比如我们说ERP,大家就会想到SAP,Oracle,Sage,Epicor,Dynamics等。这些管理软件成为其它软件厂商抄袭模仿的典范,促进了大量的中小企业的诞生。我们知道,互联网公司只会让竞争者失败出局,或是以收购结束,而管理软件公司不仅不会吞并小公司,还会为小公司的发展指明了技术方向。

    2 (大公司模式) 互联网公司的技术相对完善,分工明确,程序员可以在一个领域或数个领域成为专家。管理软件公司由于已经走到行业顶端,技术人员常常需要转销售,转销前,转二次开发。处于食物链顶端的软件公司,比如云计算(Azure,AWS),数据库(SQL Server,Oracle,MySQL),ERP(SAP,Oracle,Epicor,Dynamics),他们的研发中心常常会控制保留在本国,很少或是根本不会让国外团队或分公司参与开发核心技术。这就导致了我们常常是做他们的二次开发工具。成为一个行业的专家,有时候会有高处不胜寒的感觉,也意味着对其它领域的选择更少。精通于一门技术,成为公司运作上的一个零件,只有在特定的环境(大公司)才有用处。就好比浓缩铀只能用于造核武器,而菲利浦的白炽灯却能走进千家万户。

    市场与销售

    1  互联网公司相对容易产出新概念,新名词以吸引大众眼球,以此创造概念经济。管理软件公司墨守成规。比如笔者在2006年所经历的Web 2.0,那时满大街的都是这种宣传材料,没过多久这种概念就过时了。正如现在全民创业,云计算,互联网+,大数据等,相信不久也会从我们的公众视野中消失,取而代之的是大批的互联网公司消亡。管理软件公司则很少会这样,MRP,ERP还是上世纪90年代的概念,现在仍然适合于企业管理软件的设计思路。尽管ERP之后还有产生ERP II概念,不过也不怎么流行。管理软件公司相对务实,能把物料需求计划(MRP)跑流畅,基本上公司的信息化水平就上了一个大台阶,也不会再去追求管理创新。金融也是一个不适合创新的领域,记得 一个经济学家说过,我们应该将所有的经济学家从社会上去除,因为金融改革就是扰乱社会秩序。国际金融炒家索罗斯的至理名言也曾表述,我们就是为了创造一种假象,然后在人们认识到真相前提前退出游戏。

    2 管理软件公司人员缺少销售观念,互联网公司员工更多的会关注到到商机,常常会考虑把技术转化为价值。我们这里不讨论阿里员工抢月饼的是非,单从市场角度来看,我是挺佩服这几个程序员。他们学以致用,将技术转化为对自己的福利。管理软件公司的员工则比较缺乏市场情结。他们还在研究新版本的开发工具有哪些产品特性,期待以拖放的方式就能设计出工作流的软件厂商。如果能把几年工作的成果抽象提炼出来,形成一些公共的开发类库,方便以后的开发,这是一个小小的进步。进一步的,能把管理软件中相同的操作界面和模式总结出来,做出一些相对通用的界面和控件,比如数据输入Entry,数据查询Enquiry,数据列表List,报表Report,数据查找Lookup,自定义查询Query等,初步形成一个开发框架。再进一步,我们用自己提炼的开发框架,用自己参与和理解的技术理念,做出一套产品,这也算是一个小小的进步。技术进步的每一个阶段都可以为你的职业发展带来无穷的好处。熟练的程序员再也不担心找工作没人要。成为一个领域的资深开发人员,可以为自己赢取技术主管或经理的职位。做出一个领域或行业的产品,如果在合适的时机碰上会做市场的销售人员,创业也是非常有可能的。马云说过,梦想是要有的,万一实现了呢。

    2016-12-30

    于广州

  • 相关阅读:
    PAT顶级 1024 Currency Exchange Centers (35分)(最小生成树)
    Codeforces 1282B2 K for the Price of One (Hard Version)
    1023 Have Fun with Numbers (20)
    1005 Spell It Right (20)
    1092 To Buy or Not to Buy (20)
    1118 Birds in Forest (25)
    1130 Infix Expression (25)
    1085 Perfect Sequence (25)
    1109 Group Photo (25)
    1073 Scientific Notation (20)
  • 原文地址:https://www.cnblogs.com/JamesLi2015/p/6235430.html
Copyright © 2011-2022 走看看