目录
1、 国际状况
- 当年功能机时代的巨头 Nokia,2014年将设备和服务业务出售给微软,现在已轮为微软的附庸。
- 发明了第一款手机的 Motorola,则在这十年几易其主,先被Google收购,后来又转卖给联想。
- 当年美国可能还比较弱小的Google,如今已经成长成世界的顶级IT巨头。
- 当年IT的最红火的明星Microsoft,如今已经走下神坛,被新的明星给取代。
- Facebook在2004年由大一的毛头小伙创办,如今2015年也成IT界一极。
- 苹果公司2007年推出Iphone系列,引领移动互联网的新浪潮。
- Google在2008年发布第一款Android智能手机。如今已和苹果在移动互联网时代平分秋色,比肩而立。
- 移动互联网应用时代四处开花。各种创业公司兴趣,四处掘金。
- 互联网公司在传统行业攻城略地,打得措手不及。
2、 国内状况
- 当年流行的电子通讯设备 小灵通,现在恐怕已无人记起。
- 当年不那么起眼的腾讯,这十年内同时在线人数突破1亿,成为通讯行业巨头。
- 微信在腾讯内部掘起,让腾讯成为首个拿到移动互联网时代船票的公司。
- 阿里上市,创造了世界上前无古人的最大IPO。也将马云送上了亚洲首富的位置。
- 小米用了4年的时间,就从零到了400亿美金市值,目前也成为中国互联网一极,而且前景无限广阔。
- 联想收购了摩托罗拉。
- 小米模式给传统的电子设备厂商打了几记响亮耳光
- 支付宝们让国有银行们开始颤抖。
- 微信们让国有通讯巨头感到危机。
- 电子盒子们让广电部门寝食难安。
- 滴滴和快滴们让国有运管部门恐慌了。
- 专业们给出租运管行业来了更彻底的革命。
生长在这个时代的年轻人,要么创造了这些历史,要么见证了这些历史,要么现在正在创造这些历史。
3、 软件工业模式变革
两种经营理念
可能不是所有的人都清楚,虽然同叫IT公司,但是IT公司还是可以分成两大类的:外包项目驱动型公司和自主产品驱动型公司。
外包项目型
在百度百科里面对“外包”进行了如下的介绍:
企业在管理系统实施过程中,把那些非核心的部门或业务外包给相应的专业公司,这样能大量节省成本,有利于高效管理 。
整体来说,绝大多数的外包具有如下特点:
- 入行门槛比较低。基本会个数据库的CRUB就可以挑起所有的信息信息项目了。
- 技术线路短。需要会的东西杂而多,不需要精钻。
- 开发过程要求极度规范。
- 以项目为驱动。经常是什么来钱做什么。
- 开发组中项目经理是灵魂人物。
- 公司成长往往比较中规中矩,有点类似实体企业中的制造业。
- 每个项目都是有开发周期。很多项目都是一次性项目。
- 执行力大于创造性。给每一个客户交付他们想要的东西就算完工了。
- 属于体力密集型,非常依靠人力,加班一般都比较严重。
- 节奏平缓。往往可以很长时间内形成百花齐放共生的局面。
- 从业人员的待遇,往往是和软件产出量挂钩。收入比较稳妥,但天花板也很容易触及,毕竟人的人力有限,精力有限。
这一类的传统IT公司公司目前对外包装都是“提供IT解决方案”的公司,比如:像东软,软通动力等等是比较典型的。这些公司的销售经常会在各种招投标现场看到,或者在华为公司里面有些外公司的人,很多就是这些公司派去驻场开发的,里面的员工往往会有一种“同工不同酬”的失落感。
这一类的公司,个人认为会面临逐渐被集中到少数的大集团里面,或者分散在一些兼职的个体软件工程师中。因为这项服务确实是一直被社会所需要的,社会的的更改化发展也肯定是专人做专事,外包肯定不会消亡掉。这个市场会一直存在,但是从业人员的营生类型属于赚一些辛苦钱,拼个体力而已。
自主产品型
这一类公司,大家比较熟知的主流互联网公司基本上都属于这一类型的。这一类公司具有如下特点:
- 公司成立之初,就有自己专注的领域,而且往往是很小的一个切入点。
- 技术线路长。像BAT,发展到如今这个体量级后,每个公司都有自己独一无二的技术高度。
- 以产品为驱动。注重迎合客户的痛点需求。
- 开发组中产品经理是灵魂人物。
- 虽然也号称以项目为驱动,但是实际上将产品的不同迭代周期进行分期按项目实现。像QQ客户端从腾讯创业起到现在仍然在开发中。
- 项目不是一次性项目,而是持续累积的项目。
- 创造性的需求大于执行力。
- 属于智能密集型。虽然加班也往往很严重。
- 节奏超快。也很容易很快形成垄断局面或被完全淘汰出局。
- 从来人员的待遇,不同水平的人差异很大。但是整体都可以有一个相对较高的水平。
目前国内这一类的主要公司有:TABLE互联网五巨头。
4、 两种生产方式
软件工程
在传统的软件工业,软件产品以光盘为载体以类似于实物的方式进行生产和出售,软件的产出方式也是严格遵守软件工程的流程。
- 需求分析。按照标准严格组织文档,一个长周期。
- 系统分析。按照标准严格组织文档,一个长周期。
- 系统设计。按照标准严格组织文档,一个长周期。
- 系统开发。组织大量的人开始按照设计文档稳步执行和推进项目进程,一个长周期。
- 软件测试。组织大量的人按照设计文档对功能进行测试,一个长周期。
- 软件交付。内部测试和客户验证测试都完毕后,软件投放市场,然后运气好可以卖个好几年。
- 再按照上面的方式花N长时间开发一下项目,或者开发下一代产品功能。
这样的的生产方式和传统的制造企业是极其类似,而且如果这种模式发展下去,肯定会越来越照搬传统制造企业的模式,因为都是需要追求流程的标准化,这样才能够保证生产和规模化和有序化。
在传统的项目驱动型的软件企业里面工作过的软件开发人员一定印象深刻:
- 开会,沟通,评审,确认。
- 文档,文档,文档……
- 集中式的闭门大生产。
- 闭关开发出符合文档的产品。
为何要这么严格的评审流程,为何要如此多的开会和文档?其实上面提到的那些行为都只是操作手段而不是目的,真正目的在于为了防止以下情况的发生:
- 避免甲乙双方纠纷从提出需求,到最后完整当初约定的功能软件,周期较长,往往存在相当多的不确定风险,对软件项目的参与者进行协议上的约束,所以需要和甲方进行沟通和文字记录,同时开发人员
- 减少沟通成本因为周期长,开发人员众多,减少沟通成本,必须要尽量多的文档。
这些都是建立在一种信息不对称,信息流通不顺畅的年代所产生的开发过程。后面将提到一种新的软件生产思路。、
敏捷开发
这是在互联网兴起之前的年代的一种软件生产思路。
主要开发流程如下
- 确定本阶段最重要的线路目标。
- 需求分析设计和开发。仅必要的文档,一个短周期。
- 持续集成和持续自动化测试并发布上线。
主要的特点如下:
- 产品的的新功能发布周期要求极短。
- 对需求的实现及客户确认周期很短。
- 每个短周期都有可交付的并在线上运行的版本。
- 一个好的产品可以永远做下去。
- 所做的内容往往具有很强的继承性的传承性。
- 因为互联网的存在,绝大多数的问题都可以在开发场所消化解决掉。
- 因为持续在线发布,可以时刻让实践去检验产品,直接随时和一线需求保持连接。
这种开发模式的最大特点是:快!
- 迭代速度快。
- 新功能发布并呈现在客户面前快。
- 问题的发现快。
- 问题的解决速度快。
- 如果方向不对,项目死掉的速度也快。这其实是优点,如果是坑,及时能够暴露出来也是好事
5、个人经历及感悟
前面提到的两种公司和两种模式,目前在中国都存在相当大的市场。从个人的角度来说,更看好自主产品型的公司及开发模式。
本人第一次创业经历,就是长达两年的时间开发一个大型软件系统,最后都没有成功交付而胎死腹中。这次惨痛的经验教训,让我从此以后对外包型的创业模式深感恐惧和抵触心理。第一次创业里面做的项目,很累很累,很用心很用心,同时结局也很惨很惨。
第一次创业失败之后,又加入了现在的这个创业团队。是一种完全的互联网经营和生产模式,完全是一种久旱甘霖的畅快感。作为开发团队的一员,你的代码时刻都在生产服务器上运行着,每天开发的功能都在线上发挥着作用,你敲下的每一个字符都发挥着它的作用,而且为后面的开发在铺路。
软件测试的变革
前面花了很大的篇幅来讲大背景和大变革,现在才正式开始进入“软件测试”这个议题。个人认识还是很有必要。因为大部分开发人员都是思想和交际圈子相对比较简单的群体,打交道的对象往往是代码或者机器,往往不愿意跳出技术的思维和习惯,从更高的视角来审视自己做的事情。因为我以前就是这样的一个技术人员,往往把所有的路线选取寄托在别人身上,而且自己缺乏独立思考的能力,结果导致自己虽然很努力,但是却总是达不到自己想要的效果。
作为普通一个人,必然无法避免个体命运会随着大时代的背景进行浮沉。具备独立思考的能力相当重要,能够洞察趋势,顺势而为,必然会事半功倍。
软件测试的概述
软件测试(英语:software testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。 换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程
不管是传统企业还是IT企业,都会有这样的一岗位,叫QC(QUALITY CONTROL的缩写,中文“质量控制”) 专门负责品质控制的。在制造企业里面是对具体的物品进行 相应的质量检测。
不管是实物工业生产还是软件工业生产,最终的目的都是将产品交付给相应的使用人或者使用场景,使产品稳定的发挥其作用。那么既然存在交接,就必然存在验收。而关于产品的问题的发现,从生产方来说,最好是在内部就能消化和解决,而不是到投放市场之后由用户来发现,那样会对产品和企业形象都是很大的损害。所以每个企业都需要这样一个角色,用来做质量审核和把关。
在传统实物生产工业,产品质量控制主要划分为4个阶段 :
- 进料控制(Incoming Quality Control缩写为IQC)
- 过程质量控制(In Process Quality Control缩写为IPQC)
- 最终检查验证(Final Quality Control缩写为FQC)
- 出货质量控制(Outgoing Quality Control缩写为OQC)
同样在软件工业,特别是目前外包或者众包的协作模式逐渐兴起,软件工业也逐渐像实物工业一样形成了所谓的供应链,也一样产生了如传统工业的品质控制岗位。
- 作为甲包的验收测试
- 本公司软件流程优化,和小版本迭代测试
- 本公司阶段发布版测试
- 交付下游企业的交付测试
总之,软件测试是在软件工程里面交付可靠软件的必要步骤。具体有有兴趣的可以查看软件工程相关书藉。但是查看这些的时候,请只看软件测试的定义及在软件工程中所扮演的角色部分,后面的具体操作手段可以忽略,因为随着近些年互联网和移动互联网的掘起,很多传统的软件工程组织方式和理念已经严重落伍,已经逐渐被行业给淘汰,作为软件工程中的一个环节,软件测试的手段也发生了巨大变化,这个在后面会谈到的。
当前从业体验
关于从业人员的体验,以下论述事实都来自于当下热门社区“知乎”。
如何成为一个优秀的软件测试人员?
- 软件测试的基本原理,我称之为 测试 1.0 时代, 如 软件测试 (豆瓣);
- 与敏捷开发结合,我称之为 测试 2.0 时代 , 如 敏捷软件测试 (豆瓣);
- Test is Dead , 测试已“死”,适应互联网新时代的要求(比如 精益创业 (豆瓣)),“不管黑猫白猫,捉到老鼠就是好猫”,当你跳出了“测试”这个圈圈,思考测试的价值了,我称之为 测试 2.5 时代 如 Google软件测试之道 (豆瓣), 持续交付 (豆瓣),
- 将测试和复杂 (豆瓣)相结合,我称之为 测试 3.0 时代,但是现在的实践还比较少
多看一些相关话题及相关人员的回复,可以明显感受到测试岗位正在朝着”自动化,专业化和技术长线化“的方向在发展了。
6、人才市场需求
如果说知乎上的个人的回答可能会带有浓厚的主观色彩,或者说是个人认知的局限性。那么来自人才市场的需求应该能够成为比较客观的风向标依据了吧。毕竟,规划自己的职业方向的主要目的无非是如下两点:
- 高薪需求。自己所从事的工作的收入是可观的,这是最实在的,也是绝大多数普通人所想的。
- 价值体现需求。一方面是社会价值体现,产生经济效益和社会效应,另外一方面是自我价值体现,实现人生满足感。这种价值体现需求会反过来影响”高薪需求“的实现。
本文通过对2015年5月份来自互联网的垂直招聘网站 拉勾网 的测试相关岗位的招聘要求和薪资待遇进行了研究。
关于测试岗位,工资差异很大,要求的差异也很大。
- "北深杭"因为有TABLE这些互联网巨头存在。待遇普遍远高于其它城市。
- 主要互联网巨头招聘测试,只招懂开发的测试。待遇和开发人员没有差异。
- 武汉这一类二线城市,招聘测试,待遇很低(往往只有互联网巨头测试岗位的零头),要求基本上流程性文档维护和手工测试。
总结 前面陈述了各方面的东西,其实总结为如下几点:
- 互联网时代是一个不可小视的时代
- 互联网的影响才刚刚开始,但是它的影响将绝不止于当前
- 互联网公司已经成为IT领域公司的绝对主角
- 互联网已经从PC上转移到移动端,今后的趋势则是转化为万物互联
- 传统行业如果不在观念和技术上紧跟上时代的步伐,只能是坐等被收割的命