如果你将来想进入软件和互联网行业, 恭喜, 这是个好行业, 薪水很高, 也不需靠关系, 一切靠实力说话, 不需要有个好爸爸。
坏处是,这个行业需要极为繁重的脑力和体力劳动,加班也是司空见惯的事情。
接下来的问题是:现在软件和互联网大概有哪些方向?看看下文的解释:
1、首先是需求从哪里来?
1.1 客户的项目
如果做的是客户的项目,需求当然是从客户那里来的,当然客户绝对是软件开发的小白(其实也不能这么绝对啦,我也见过极少客户中很优秀的软件人才),他们很难清楚的描述自己真正的业务要求,这时候就需要有个人隆重出场了:业务分析师,对于大公司,业务分析师是专职的, 对于小公司,项目经理或者开发骨干也就硬着头皮上了。业务分析师需要把需求理理清楚,交给后面的架构人员做设计。
如果你是由程序员成长起来的业务专家,技术精湛,那就坐着数钱玩吧。
1.2 公司的产品
如果你做的是产品,例如微信,QQ,淘宝,魔兽世界,征途,大话西游,那需求其实是自己公司的人来定义的。
定义这个需求的现在有个时髦的职业:产品经理。像张小龙就是微信的超级产品经理,史玉柱就是征途的骨灰级产品经理。
产品经理主要根据用户的心理和体验来设计产品,让大家用的爽,好的产品经理现在非常吃香,也属于紧缺人才。
问:产品经理需要懂技术吗?
答:需要,最好是从程序员成长起来的,知道一个产品设计实现的难度,要不然只顾自己爽 ,也会被程序员骂死。
2、设计和开发
2.1 架构师
听起来很高大上的一个职位,但是需要强悍的技术实力和深厚的技术积累
架构师的成长需要历练,需要技术的广度,和适当的深度。
设计优雅,灵活,可扩展的架构是架构师的主要工作
不能追求最新,最热的技术,还要考虑现有团队的能力,技术的成熟度。
人员需求:★
难度指数:★★★★★
2.2 web后端工程师
后端码农主要实现业务逻辑,提供接口给前端使用。
Java 当然是用的最多的, 但是也有别的相对小众的像Python,ruby on rails 等, 还有就是PHP,简单粗暴,中小网站常用,无论哪一个,学习起来都不是很难
这一块的人员需求是比较大的。
人员需求:★★★★★
难度指数:★★★
2.3 web前端工程师
主要是Javascript,CSS,JQuery 等,最近几年大家重视浏览器端用户体验,浏览器端做的越来越炫,所以也很火
人员需求:★★★★★
难度指数:★★★
2.4手机端码农
主要是Android,iOS,由于移动互联网的发展,现在很火爆,需求量很大,相对而言iOS的门槛高一些,程序员也少一点,不过工资高一点。
人员需求:★★★★
难度指数:★★★★
2.5 系统编程工程师
有些需求很简单,有些需求很复杂,需要支持海量的用户,海量的并发,像淘宝的双11,像微信的春节抢红包
需要做云计算,虚拟化,分布式处理,支持系统水平扩展。
对于海量的数据,还需要做大数据分析,从中提取有价值的信息,例如Hadoop。
由于需要对操作系统,数据库,服务器端系统做定制开发,甚至自己搞一套, 小公司一般没有这样的技术能力,主要是BAT这样的公司在搞。
人员需求不是很大,对程序员来讲,需要在一个领域钻研的非常深,技术稳定度比较好。
人员需求:★★
难度指数:★★★★★
3、运维
互联网运维是一个融合多学科(网络、系统、开发、安全、应用架构、存储等)的综合性技术岗位,运维岗位所接触的知识面非常广阔,更容易培养或发挥出个人某些方面的特长或爱好,如内核、网络、开发、数据库等方面,可以做得非常深入精通、成为这方面的专家,因此给运维工程师提供了一个很好的个人能力与技术的发展空间
运维工程师未来的职业发展方向可以有:
1、运维工程师/运维开发工程师:
负责具体的产品线运维工作,同时也需要掌握开发的能力,长远发展是成为大型系统的架构师。
2、运维平台研发工程师:
专门研发运维相关通用平台和技术,需要有一定的产品线运维经验或从产品线中拿到运维需求。对研发能力有较高的要求,对系统的设计有较严格的标准,并且能够理解用户需求,做出适合服务运维和满足运维工程师使用体验的运维产品,长远的发展是成为各个技术纵向领域的技术专家。
3、数据库研发工程师/数据库工程师:
数据库方向是运维技术中较为特殊的一个方向,由于业务的重要性通常需要专设岗位,业界在该方向也有深厚的研究和积累。主要方向有数据库内核、云数据库等,长远发展是数据库领域的技术专家,数据库架构师。
4、运维经理:
运维同学做事情的过程中通常需要协调多个RD和QA同学,对协调和推进能力要求比较高,对一些技术深度还不错,协调和推进能力比较高的同学非常适合转型管理职位,长远的发展和技术部门的管理职位一样目标是CTO、CEO。
各个方向上的工程师发展到一定阶段后,没有明确的界限,需要同时具备较强的运维、架构、编程、算法等能力,是一个要求很高要求的职业。当前国内外对运维人才的需求非常迫切,运维工程师的薪资也水涨船高,与研发、测试等技术部门持平,甚至超出。
4、测试
这个对技术要求不太高,但也需要测试相关的知识,能够设计测试用例,准备测试数据, 执行测试。
现在敏捷开发流行,对测试也要求懂开发知识,至少能够开发一些自动化的脚本。
很多女生后来转到了测试岗位,我想主要是女生比较细心吧。
我在IBM见过一个非常优秀的测试人员:她不仅仅能出色完成上面说的工作, 还可以参与设计开发的讨论, 经常能从测试角度提出开发人员都没有想到的问题,极大的帮助提升了软件的质量。
5、UI/文档
UI:就是对界面进行美化了,一般是由设计师先出界面原型,大家讨论,修改,确定后美工会生成各种界面元素,像图标,按钮等。
现在对设计师也有一定的技术要求,不仅仅是画界面,还要把html模板做出来, 所以美工需要懂得 HTML,CSS,甚至部分Javascript。
程序员拿到html模板后,往上添加业务代码即可。
文档编写人员:小项目一般是有人兼职做,大的项目,产品会有人专职写文档, 我2003年的时候参与过上海证券交易所的项目,看到有个专职的文档编写人员写的Word,是在是太专业了,那个精美啊,完全是可以直接出版的水准。
我把它copy下来,自己都想山寨一个,照葫芦画瓢都做不出来。
6、项目管理
项目已经开始了,业务分析师,架构师,开发,测试等人一群人如饿狼扑食,势必要把项目撕个粉碎。
可以这么多人怎么协作?如何管理?进度能不能按要求完成? 这就需要项目经理出马了。
项目经理,说白了就是带着大家做项目,主要和人打交道,需要协调各个方面的关系,保证项目的进展顺利。
问:项目经理需要懂技术吗?
答:当然需要,最好是开发出身,要不然你就听不懂那帮码农再说什么,只能在表面漂浮着,没法深入项目,别人也就不服你 ,肯定是带不好团队的。
7、运营
如果你是在开发自己的产品,开发完成以后, 马上就会遇到一个问题,怎么推广?
在互联网时代,世界是平的,竞争异常激烈,一个好的软件,或者App,或者网站,缺乏运营,你的技术再好也不行。
运营其实就是想方设法让你的产品被人知道,被人用起来,这里边水很深,例如怎么写个软文?怎么在社交网络,微信,微博进行营销?怎么统计,分析,精准的定位?
这方面,雷军的7字诀:专注,极致,口碑, 快, 黎万强的《参与感》 都是经典。
好的互联网运营人才奇缺, 当然非常的吃香。
对编程不感兴趣的同学,不妨看看这个方向。
说了这么多职业方向, 你会发现, 绝大多数都要求懂一定的技术, 所以我其实想想说的是:
如果还对于方向不是太清楚,可以先多参加一些互联网方面的免费课程讲座,跟着互联网大佬前辈“取经”,避免走弯路,然后再寻找自己感兴趣的方向努力。