可能在普通人的印象中,软件工程师就是敲代码的,但实际并不是。软件工程师是个统称,里面有很多细分岗位。且随着行业发展越来越繁荣,精细化程度越来越高。比如:产品经理、设计、交互、测试、研发工程师、算法工程师、运维、数据分析等。
说到产品经理,大学里其实并没有产品经理的专业,很多产品经理都是从程序员转过去的。我以我公司的需求场景为例,来说明不同岗位的职责。
首先产品经理会根据公司的战略目标,用户的需求、市场、客服等其他部门的反馈加上自己的理解提出本次研发版本的目标,以及对应的为了达成目标需要做的功能,也就是我们说的需求文档或者需求原型。
有了需求目标和需求原型后,会召开一个需求评审会。首先产品经理会告知我们这次需求的目的是啥。为了达到我们的目的,这次我们需要做什么功能。然后在讲解具体的需求内容。我们在听的过程中会思考,做出来的功能是否能达到我们的目的。如果有,在讲解完就反馈出来,达成共识后,大家再拆解为具体的开发计划。
UI设计需要根据需求原型,设计出用户看到的真实效果图。
交互设计师要设计出用户使用起来最简单、最方便的交互流程。
研发做具体编码,把效果图变成真实的软件。
测试是保证上线版本的质量。
运维要保证线上版本的稳定。
数据分析是指在根据用户的操作行为,来分析是否达成我们的目标。
这个行业的很大一个特点就是,新工种频繁的出现。智能手机推出来之后,就有了安卓、ios研发工程师。小程序出来后,就有了小程序开发工程师。还有我们刚刚说的很多大工种,也都是最近才涌现出来的,例如,交互设计师、数据、算法工程师。很多APP里有“猜你喜欢”、“为你推荐”,这些功能背后都是算法,现在算法工程师是一个非常热门的职业之一。
未来,万物互联、AR、MR、脑机接口、城市大脑等相关技术成熟,一些新的工程师分类又会出来,这又是程序员的机会。
趋势:软件工程师遍布各行各业
很多人印象中,只有高新技术企业或者说互联网企业才需要软件工程师。以前确实是大部分软件工程师都聚集在互联网企业,但未来,这个制造业、零售业等也需要大量的软件工程师。原因就在于数字化、智能化是趋势。这是什么意思?
数字化:把人的行为数据,通过线上数据方式存储展现。比如我们的消费数据,打车行走数据,自身身体数据等。
智能化:通过收集上来的数据进行智能化分析使用。
有了这个趋势,软件开发部门就会成为标配。就算你不具备搜集数据的能力,但使用数据成为企业标配后,你会不用?
从另一方面看,现在已经有类似猿辅导这样从小培训孩子编程能力的结构,这种只要学习就有竞争力的技能,在市场的自由促进下,迟早会变成一种通用技能。就像现在人人都会使用电脑一样。