史爱武:计算机工作,不只是软件开发(史爱武教授)

来源于微信公众号:计算机大学生

软件存在于我们这个世界,伴随着我们每天的工作和生活……

清晨,手机上的闹钟把我们叫醒,揉揉眼睛,打开手机刷刷微信朋友圈,看看今日头条的推荐新闻。

早餐后,带上智能腕表,关上语音和图像识别的大门,用指纹启动汽车,设置好汽车导航路线,准备上班了。

上班途中,还用语音开启手机中的喜马拉雅电台收听世界名人英文演讲节目;到了办公室,打开笔记本电脑,查阅电子邮件,使用各种办公软件开始一天的工作。

晚上回家后,打开网络电视回看昨天来不及看的娱乐节目“最强大脑”,还被儿子拉着去玩了几局Xbox游戏。

世界被软件包围着。所有给我们生活和工作带来便利、效率、幸福感和获得感的这些科技产品都是由软件驱动的,这些软件的数量还在不断增加,随着人工智能技术的广泛应用,这些软件还会越来越智能。

有的人甚至更是深信“科技威胁论”:软件正在吞噬着这个世界,但这只不过是个开始。

随着计算机技术的需求不断增加,计算机专业的大学生毕业后从事软件开发的人数也越来越多。这也让很多人产生了一些误解:认为计算机专业就是编程专业,计算机大学生就是做软件开发的,将计算机专业和软件开发完全划上了等号。

更令人奇怪的、也是令人担忧的是:很多计算机大学生也有这样的想法。在他们个人的大学四年中,也都是围绕着软件开发这个指挥棒来学习和生活,根本不管不顾自己是否感兴趣或是否有这方面的特长优势。

认为计算机岗位就只有软件开发,确实是对计算机行业的一个很大的误解。软件开发,其实只是计算机众多岗位之一,并不是唯一,而且很多计算机岗位的需求和能力要求差别很大。

计算机并不只是软件,还有硬件部分。一般地,硬件工作岗位大多对从业者的数学和电路知识有一定的要求,比如,嵌入式硬件开发工程师就是使用一种或多种机器语言(如C语言、汇编语言)进行电路研发工作的人员,同时还要求具备模拟电路、数字电路知识,使用电子电路设计及仿真软件设计电路等基本知识。

就算是一个软件开发项目(特别是中、大型项目)中,计算机人员也不都是软件开发,还需要其它的计算机角色:

需求分析师(产品经理)不断和用户沟通交流,整理完成系统需求文档;系统架构师评估系统需求,给出架构设计方案;软件开发人员能够根据自己所负责的相应模块编写代码;软件测试工程师确保软件质量文档工程师完成系统操作手册以及安装部署运维手册等,运维工程师完成系统的部署安装确保正常运行;项目经理需要良好的沟通和协调能力,对项目的过程和结果负有总责。

史爱武:计算机工作,不只是软件开发(史爱武教授)

产品研发主要包括三个阶段:产品定义阶段、产品研发阶段、产品售后运维阶段。下面以一个产品研发过程为例,更加详细的介绍计算机岗位的多样性以及各个岗位的职责和能力要求。

一、产品定义阶段

1、产品经理

职责:在启动一个产品研发的时候,首先需要产品经理与客户沟通,并且根据客户的需求,确定开发一个什么样的产品,用什么样的技术和商业模式,及时与各部门沟通,统筹安排,讨论、修改,制订出可行性方案。

整个产品开发过程中,产品经理还要协调公司内部各个部门,相应推出产品进入市场的营销策略。

能力要求:

一定要具备很强的沟通能力和协调能力。这个岗位中更多的是与人打交道,作为外部客户和内部项目团队之间沟通的桥梁;

要管理和协调内部各个团队之间的工作;

有一定的商业眼光和对市场的敏锐度,根据市场发展趋势,制定不同的产品发展计划和营销策略。

2、售前工程师

职责:售前工程师是技术人员同时也算是半个营销人员。他协助公司营销人员向客户推广公司的产品和服务,展示公司的技术实力和优势;负责组织编写和讲解项目的技术方案书及标书等。

配合营销人员完成产品宣传资料撰写,用户和合作伙伴厂商的技术交流、技术方案宣讲、应用系统演示等工作;

售前工程师能够听到用户的最初需求,很多公司的产品和项目研发都是源于售前工程师收集回来的、最初的用户需求。

能力要求:

售前工程师作为最早与客户接触的技术人员,充当了自己公司技术门面,可以说是一个公司技术实力的体现,所以他必须具备全面的技术,对计算机产业的发展前景和方向有一定的见解;

对公司的研发能力和技术的优劣势有着清楚的认识,应该具备较好的沟通能力,能够帮助公司向客户推销产品;

有一定的文档编辑能力,能够编写技术方案书和投标书。

3、项目经理

职责:项目经理与产品经理确定产品的开发目的及其可行性。从产品经理接过具体的任务,组织项目实施,对团队内的人员、资金、设备进行管理和调度,根据不同情况做出及时的调整,保证整个项目产品的进度和质量。

能力要求:

计算机相关专业里,项目经理的岗位一般是由有一定工作经验的技术人员担任的,因为作为一个技术团队的管理者,需要具备一定的专业知识和行业背景;

项目经理不一定是一个团队中技术最好的人,最重要的是要有好的沟通能力和团队协调能力,他需要和产品经理、团队成员以及客户沟通;

根据团队成员的技术特点来分配任务,并能根据情况不断调整,管理项目按要求完成。

4、需求分析师

职责:客户往往很难也不可能把所需要的产品的功能、性能等关系产品的内容都能讲出来,或者讲清楚。所以,需求分析师需要不断的与客户沟通并且根据客户所提出的需求进行分析、判断和筛选,对比市场上的同类产品,最终全面了解客户对产品的具体需求。

按客户的需求编写详细的需求说明书文档。产品需求说明书详细定义了用户界面、业务流程和功能需求、设计要求和限制、测试准则和质量保证等要求。

需求说明书作为用户和开发人员达成的技术协议书;作为产品设计和开发工作的基础和依据;系统开发完成以后,也为产品的验收提供了依据。

能力要求:

需求分析师的关键能力就是,让可能不懂技术的用户和具体参与研发的技术人员都能很好的理解要做一个什么产品,而且双方的理解应该是一致的。

需求分析师需要具有较好的沟通能力、理解能力和文字能力。需要和外部客户沟通了解需求情况,能够更深层次的分析需求;需要和内部的开发团队不断地沟通,解释开发团队对需求理解的各种问题。

需求分析师的重要产出物就是产品需求说明书,需要他们有较强的文字表达和编写能力。

通过需求说明书,用户要能理解所描述要开发的东西就是自己想要的东西;开发团队成员也能清楚明确地知道开发目的和各种需求。

二、产品研发阶段

这个阶段主要是产品的架构设计、实现和测试。主要是由架构设计师,开发工程师和测试工程师完成。

1、架构设计师

职责:架构设计师是一个产品研发过程中非常关键的角色。架构设计不好的话,产品的维护、升级乃至扩展都会是相当的困难,甚至完全要推倒重来。一般地,架构设计师是由有着丰富经验的技术人员担任。

主要负责从技术角度理解需求说明书,统一开发规范,构建核心技术架构并可能要开发核心内容,协助开发人员解决技术难点,协助项目经理制定详细的产品研发计划和分配任务。

能力要求:

架构设计师一般是团队里技术最好的人员;

需要丰富的工作和管理经验,有扎实的基础知识,精通一种或多种技术,学习能力强,技术面广,还具有足够的技术前瞻性;

要有较好的团队精神和沟通协调能力。

2、开发工程师

职责:开发工程师是产品研发中比较核心的基础岗位。根据项目经理和架构师分配的研发任务,与管理人员和团队其他工作人员一起协同工作,按要求完成相关任务。

能力要求:

实际项目中根据所开发的产品和项目的不同,开发工程师需要掌握的技能不同。比如Java Web后端开发工程师需要熟练掌握Java基础,并且能够熟练使用后端开发框架(如Springboot框架),同时对数据库和操作系统有一定的认识;

因为计算机技术不断的更新,开发工程师首先需要有较强的学习能力,并且要对所做项目的相关技术熟练掌握;

也需要有团队意识和良好的沟通能力。

3、测试工程师

职责:测试工程师会在开发工程师完成相应工作之后对产品的功能和性能进行测试,找出产品中的漏洞和不足,也就是尽可能地找出“Bug”。

确保产品交付的功能和性能等达到产品质量需求,并编写测试分析结果,测试报告等相关文档。

能力要求:

测试工程师需要具有一定的测试相关基础知识,并且能够使用相关的测试工具,如Web测试工程师需要熟悉Unittest、Selenium、Fiddler等一种或多种测试工具,同时还要熟悉MySQL,并且能够熟练使用SQL语句

对一些特殊的测试用例来说,还需要自己开发软件或者硬件工具来完成测试工作,而且这种测试开发的趋势越来越普遍。

史爱武:计算机工作,不只是软件开发(史爱武教授)

三、产品售后运维阶段:

这个阶段的主要目的是安装部署产品,让产品正常投入使用,为用户编写各种说明书,培训用户,并且在使用过程中对产品进行维护和必要的扩展和完善,主要是专门的运维工程师来完成。

1、售后工程师

职责:售后工程师的职责主要是安装部署产品,进行产品验收测试,培训客户了解和使用产品,交付相关的各种说明书文档,收集客户的问题和反馈。

能力要求:

售后工程师需要全面的专业技术,包括软件、硬件、网络、操作系统、数据库等,熟悉公司的产品和服务;

要求具备一定的抗压能力和随机应变能力,因为售后工程师遇到的大多数问题都需要得到及时的解决和反馈;

需要良好的沟通交流能力,培训客户让他们更好的了解和使用产品。

2、运维工程师

职责:在产品运行过程中可能会出现一些故障问题,这时就需要运维工程师快速对故障进行排查,找出并解决问题以保障产品的正常运行。

有的产品还需要定期对业务进行扩展,需要运维工程师对产品进行更新升级,使产品长期稳定运行。

能力要求:

运维工程师需要具备全面的计算机软硬件知识,包括硬件设备、操作系统、网络、数据库、各种应用系统等等;

能够快速判断软硬件故障,能够指导用户使用主流软件或硬件;

具备良好的服务意识与职业素养,良好的语言表达能力和沟通技巧,具备团队协作精神。

除了上述的产品研发过程中的主要角色和工作岗位之外,计算机领域还有些和“设计”相关的炫酷岗位。

算法设计师

算法设计师需要解决如何把现实问题转化为数学模型。比如,大数据的分析和预测算法主要用于构建广告竞价、量化交易系统、财务金融分析决策等各种行业的量化模型;推荐算法和协同过滤算法就是各种推荐系统的核心设计机制。

算法设计师需要具有扎实的数学基础,要掌握一系列算法设计的理论和规则,还需要具备一定的编程能力,能够编程实现算法,并对算法进行数据学习和调优完善。

算法设计过程中,算法设计师需要查阅大量国内外相关研究的英文文献,因此,英语对他们来说是相当重要的。

对很多大学生来说,数学和英语都是比较头疼的课程。所以,算法设计师的工作还是具有相当难度的,一般都是招收硕士或博士,少数技术基础深厚的本科生也是可以胜任的。

计算机平面设计师

平面设计师主要是根据人们的文化背景、审美趋势,利用计算机技术设计产品。如平面美术设计、公司形象Logo、市场宣传手册、字体设计、海报、宣传单、易拉宝、PPT、包装、封面设计、排版等。

计算机平面设计师需要具备一定的美术功底、文化底蕴、独立设计能力和创作激情;根据具体任务需求熟练操作和掌握CorelDRAW、Freehand、PhotoShop、PageMaker,Illustrator等相关平面设计专业软件;熟悉出片、打样等印刷前流程。

多媒体设计师

多媒体设计师是随着网络的发展而逐渐兴起的。他们主要负责公司网站、多媒体等数字媒体项目的视觉设计制作,就业的典型企业包括各大网络公司、数码图像设计公司、广告公司等。

和平面设计师一样,他们也是需要具备艺术设计和美术相关知识的,对多媒体设计和制作有浓厚的兴趣和钻研精神;也需要熟练使用Flash、Dreamweaver、Photoshop等相关媒体制作软件。比如,熟悉HTML/CSS/JavaScript等计算机Web前端语言的网页设计;拍摄、后期剪辑、特效等动画/影视/视频广告方向发展的视频设计。

史爱武:计算机工作,不只是软件开发(史爱武教授)

计算机岗位其实非常多样化的,随着计算机技术的不断发展,还有很多新岗位也涌现了出来。

新的技术发展催生了一些新的技术岗位。这些新的技术岗位除了要求有扎实的计算机相关知识以外,就是要求从业者养成不断跟踪新技术的学习习惯以及具有较强的自学能力。

近几年比较火的大数据技术就带来了数据分析师、数据架构师、大数据工程师等新岗位,大数据技术相关的新岗位就要求熟悉最新的大数据技术框架和技术,如Hadoop/Spark/Hive/Hbase等。

人工智能技术也带来AI算法工程师等新岗位,人工智算法相关新岗位就要求有较好的数学基础以及人工智能相关算法知识,也可能还需要掌握适合人工智能领域的Python编程语言。

新的需求,新的岗位,也带来新的机会,这类新机会对从业人员的要求也较高。但是,高要求也意味着高的薪酬待遇和更小的竞争压力,也更值得有兴趣和有能力的大学生去为之努力。

总而言之,在这个信息爆炸、科技高速发展的时代,计算机的工作岗位并不只是软件开发,种类繁多,而且还有很多新的技术岗位不断进入就业市场。

软件开发只是用具体的工具或语言将需求实现的过程,也并没有想象中的那么复杂。其实,很多计算机机领域的专家是不懂软件开发的,也不会软件开发相关技术。

大学生要充分认清自己,按照自己的实际情况和兴趣,去规划将来想要从事的岗位,并且根据岗位职责和能力要求来培养专业技能和提升自己。

只有面向未来,才能在大学四年过好每一天。那些选择就业的同学,才能在毕业之后找到一份心仪的工作,不给自己的大学生活留下遗憾乃至悔恨!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年5月1日 上午8:27
下一篇 2023年5月1日 上午8:37

相关推荐