相信很多在传统软件开发领域的朋友或多或少对互联网公司的软件开发有如下疑问:开发流程是怎么样的?人员组成是怎么样的?系统架构是怎么样的?成长路线是怎么样的?是不是加班厉害?薪资福利是不是传言的那么有诱惑力? 而在互联网行业高压力的同学,也会问:传统软件开发公司工作会不会轻松点?会不会稳定一点?是不是在传统软件开发领域年龄没那么敏感? 这篇文章会一一解答上述疑问 介绍首先,先来介绍一下何谓传统软件行业,何谓互联网软件行业,有如下几个明显差异点。 传统行业传统软件开发行业,也可以叫做企业软件开发行业,它的明显特征如下
互联网行业
项目流程作为码农,不论在传统行业还是互联网行业,都是做软件开发,软件开发一般都是以项目为单位。首先,就先以项目流程的角度聊一下传统软件行业与互联网软件行业的区别。 传统行业结合上图,从如下几点说说传统软件项目的项目流程 需求来源
需求收集
需求实施
需求交付
互联网行业结合上图,从如下几点说说互联网软件项目的项目流程 需求来源需求来源主要在于这三个方面
需求收集在互联网公司,所有的需求都会收集到产品经理(PM)处,技术团队原则上只从产品经理处承接需求
需求实施
需求交付
贴一个以前端视角的大致项目流程:
项目相关人员上面介绍了项目的整体流程,接着针对于项目团队的组成,即实际参与项目落地的人员以及人员分工聊一聊。 传统软件项目
互联网软件项目下面贴一张曾经以项目经理角色负责过的项目,因为该项目较大,牵涉到的人较多,可以很清晰的看到一个项目的完整人员分工与构成。
传统软件项目开发一般都会基于公司产品来做二次开发,提升开发效率。互联网软件大部分情况都是对现有线上业务的迭代,为了提升开发效率后端也有中台组、架构组支撑,前端与UI也会抽取业务组件方便开发。 传统软件开发项目,由项目经理负责制,从项目最开始跟到系统上线验收;互联网公司中的项目组织相对零散,需求详设评审进入开发后基本上就没PM的事情了,这个时候一般会在FE、RD、QA中推举一位项目负责人推进项目的落地,把控项目进度。敏捷项目一般由Master来负责。 项目技术架构传统行业
常见的架构是这样的: 传统行业的企业内部系统技术架构80%都是只做到读写分离、按应用拆分、分布式缓存、单独的查询服务就不再往下走了,因为再往下走,开发成本会呈指数级上升。少数会做到大表拆分、负载会上LVS或F5。 对于这样的技术架构,只要机器足够,性能够强,足以支撑一家上万人的公司日常正常运转了。 对于那种项目金额上千万的项目,更多的也是采取多地分开部署,数据集中上报汇总的方式,避免架构复杂化带来的开发成本提升。 互联网行业
为了达成上述诉求,基础配置大部分都是这样的,上不封顶。 可以看到,对于传统行业软件技术架构,相对于互联网软件架构,最明显的区别标志就是微服务。 成长路线大部分上了规模的互联网公司都有清晰明确的职级体系;传统行业软件公司大部分职级体系较模糊。 传统行业一般分为技术路线与业务路线两种 技术路线职级从初级开发、中级开发、高级开发、资深开发、一路到系统架构师; 实际工作中,做到在项目中负责整个项目的技术负责人,或者公司的产品研发负责人,技术路线基本就到头了 项目技术负责人更多的要求综合能力;产品研发负责人给更多要求技术深度与从项目业务中提炼成产品的能力 业务路线大多数都会先做一两年技术,然后做项目的需求分析人员,再然后到项目经理,成为业务方面的专家;例如财务领域专家、生产制造领域业务专家、金融领域业务专家等。 这条线是业务经验越丰富越值钱,需要靠一个个实际项目历练出来,无捷径可走。 互联网行业上规模的互联网公司,大部分都有成体系的晋升路线图 下面从网络上找到几张图,比较清晰 以阿里为例,分为技术线和管理线 技术线职级对应的要求如下所示 能力要求
行业关注点
关于加班传统软件行业大部分情况是早九晚六,中午可午休,基本不加班。 由于传统软件每个项目的开发周期较长,大部分都是按月计,所以紧急情况下,有足够的消化空间,很少有加班特别狠的情况。 特殊情况,从业8年,甲方为日企,唯一一次连续996一个月。 其他: 有出差需求,因为有时需要到客户所在地驻场开发。 互联网软件行业公认的加班狠,什么996(早9点,晚9点,一周6天)、大小周(隔周双休)的开创者全部来源于这个行业; 也有极少数公司能做到早10晚7,不过碰到上线,基本都得加班(有时上线还挺频繁的,一周至少有一半时间有需求上线) 其他: 基本无出差需求
关于薪资福利传统软件行业从实际待过的两家A股上市公司,以及所了解的其他头部传统行业软件公司来看,涨薪基本上靠你的直属主管觉得你应该加薪才会获得薪资的提升 虽然从系统里能够查出来你的职位是助理开发还是资深架构师,但是公司没有一个相对明确的每个职位层级的薪资范围,也没有正式的述职与职位晋升一说,我的感受就是你的薪资越高,代表着你的职级越高。整体来看,同职级岗位薪资低于互联网行业一个层级,月薪30k是一个比较难达到的坎。 股票、期权激励较难见到。 互联网软件行业互联网公司的涨薪基本上靠如下几个方面
薪资基本与职级挂钩,每个职级对应一个薪资范围,达到薪资范围的上限,就只有靠职位晋升来提升了。薪资范围可参见成长路线部分的贴图。 股票、期权激励较常见。 关于稳定性传统软件行业传统行业相对稳定,原因有如下几点
互联网软件行业业务不赚钱,即使你再努力、个人能力再强也只能走人 见过上一天还在努力上班,第二天就被n 1裁掉的场景 在互联网行业能够真切的感受到个人的渺小,选择大于努力。 还有那句,只要在风口上,即使是猪也能飞起来的生动诠释。 在互联网软件开发领域里,两三年一跳槽是常态,人员流动性较大。 关于年龄传统软件行业由于加班没那么狠,很少有拼体力的情况,所以在传统行业软件开发领域年龄没那么敏感。 曾经的同事,好多都是在这个行业干了20 year的老码农,照样干得风生水起。 因为传统软件开发领域的特殊性,需要更多的与甲方客户沟通交流,外加对行业业务需求的深刻理解。年龄大,代表着更丰富的与客户打交道经验,以及更丰富的业务行业经验,更具竞争力。 之前还碰到有客户指明项目实施团队必须要有10 year的带队,或者不能低于多少比例,直接写进合同那种。 互联网软件行业对于这个行业,崇尚一个字“快” 要求业务发展快、个人成长快 经常可以在网络或工作中听到说XXX多年轻就晋升xxx职级了 网络上甚至还流传xxx大厂到了35岁还没晋升到xxx职级,就极有可能被优化掉的说法 这样的氛围,对于那些想把更多时间放到生活上的人极不友好 难道就不能保持低职级,拿该拿的薪资,保持work balance? no,no,no;随着年龄的增大,这种安于工作现状的人会显得跟整个团队格格不入,极易绩效背锅 xxx公司对于这类员工,还发明了一个叫做“老白兔”的标签 由此可见,互联网行业对于年龄的友好程度!
关于转行首先要注意的是,得看在什么团队,什么岗位,做什么事情。 传统软件转互联网可能在传统行业公司,做的事情偏互联网公司的玩法。例如:做针对于互联网用户的系统。 互联网公司做事、沟通相对open,竞争激烈,优胜劣汰;业务发展不好,能力再强努力再多也得面对裁员;所以跳槽到互联网公司一定要选对行业、选对部门;去冷门行业、边缘部门要多考虑 优势: 技术宽度、软实力、综合能力 互联网转传统软件也可能在互联网公司,实际上做的事情跟在传统行业的软件公司差不多。例如:做公司内部的各种系统。 传统软件公司相对比较稳定,企业业务系统是刚需,旱涝保收;正因如此,公司业务也很难有指数级的增长,薪资也同理;可考虑走业务专家路线。 优势: 技术深度、良好的自驱力、技术创新能力 最后如果用一句话来总结传统软件开发与互联网软件开发,我觉得可以用一个更“稳”,一个更“快”来概括。 行业的业务形态决定了诉求点不同,由此带来工作方式、能力要求等方方面面的不同。 如果要问到底从事传统软件开发好还是互联网软件开发好? 我要说的是:“这个问题对于不同的人有不同的答案,没有好与不好,只有适合与不适合”。 本文转载自开源中国社区,侵删 |
|