代码的艺术:用工程思维驱动软件开发
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2.2 软件工程师和“码农”

很多读者会认为,软件工程师只要会编写代码就可以了。那么,事实到底是不是这样呢?

最近几年,国内兴起了一个非常热门的创业方向—少儿学编程。很多小朋友从小学就开始学习代码编写,如果只需要会编写代码就可以当软件工程师,那么现在这些二十多岁、三十多岁的从业者就要有失业的危险了,因为这些小朋友可以直接和他们竞争。

很多从业者在本科毕业后就开始从事软件工程方面的工作。一些刚走出校园不久的从业者告诉我,他的规划是先学习3~5年技术,然后转行做管理工作或去创业;还有一些工作了3~5年的从业者认为,不知道自己还应该学什么,更不知道如何提升自己。

软件工程师的主要技能要求是什么?以上提到的两个场景中的从业者都认为,软件工程师的主要技能就是会编写代码。

对于这个问题,答案当然是不止会编写代码。软件工程师要具备非常高的综合素质,具体包括以下几个方面。

(1)专业知识。软件工程师需要掌握的专业知识包括数据结构、算法、编码方法等,还包括系统结构、操作系统、计算机网络、分布式系统等,这些都是大学计算机专业所涉及的课程。

(2)产品。软件工程师还需要具有产品方面的思维,要对业务有深刻的理解。为了提供良好的用户体验,软件工程师需要学习交互设计,这是一个非常专业的学科方向;还需要学习产品数据统计,会基于数据来优化产品;更需要学习产品/业务运营,这对很多运营型的产品(如社区)来说,非常重要。

(3)项目管理。做软件项目不是一个人的工作,要做好软件项目需要懂得管理。有很大比例的软件工程师不懂项目管理,忽视项目管理对软件项目成功的巨大作用。

(4)研究和创新。有一些项目具有很强的研究和创新属性,这要求软件工程师要具备“研究”的能力。很多公司将软件工程师称为RD,RD的意思是Research(研究)和Development(开发)。对于不具备研究能力的软件工程师,他们只能被称为Developer(开发者)。

很多人对研究的认识是“写论文”,认为这是学术圈才做的事情。其实,研究是“定义问题,分析问题,解决问题”的过程,研究能力对一名优秀的软件工程师来说非常重要。

总之,软件工程师不等于“码农”。软件工程师需要具备综合素质,要成为一名优秀的软件工程师至少需要8~10年的历练和成长。