• 回答数

    4

  • 浏览数

    358

生命若尘
首页 > 工程师考试 > 研发效能工程师技能培训

4个回答 默认排序
  • 默认排序
  • 按时间排序

冬射未至

已采纳

如何成为一名优秀的软件研发工程师 随着社会的高速发展,电脑的使用也已经日益普及。同时Java的应用可以说是无处不在,从桌面应办公用到网络数据库等应用,从PC到嵌入式移动平台,从Java小应用程序(Applet)到架构庞大的J2EE企业级解决方案,处处都有Java的身影,就连美国大型太空项目当中,也使用了Java来开发了控制系统和相关软件。如此巨大的应用市场,造就了JAVA软件工程师的巨大需求,选择JAVA,有无数机会在等着你! 职业发展路径: 根据IDC的统计数字,在所有软件开发类人才的需求中,对Java软件工程师的需求达到全部需求量的60%-70%。 目前,虽然Java人才的薪水很高,但是对该类人才需求旺盛的IT企业却很难招聘到合格的Java人员。其中,最根本的原因就是许多计算机专业的毕业生在读期间没有掌握实用的技能与经验,距离企业的实际用人要求有较大的差距。因此,计算机专业的大学生欲成为Java工程师,最便捷的一条路就是参加以实战项目为主要教学方法的Java职业技能培训,从而有效地缩短同企业具体用人要求之间的差距。 从事该行业所需的职业素质,您具备吗? 第一、需求分析能力 对于软件工程师而言,理解需求就可以完成合格的代码,但是对于研发项目的组织和管理者, 他们不但要理解客户需求,更多时候还要自行制定一些需求,为什么这么说呢? 一般而言,进行研发任务,也许是客户提出需求,也许是市场和营销部门提出的需求,这 时候对于研发部门,他们看到的不是一个完整的需求,通常而言,该需求仅仅是一些功能 上的要求,或者更正规些,可能获得一个完整的用户视图;但是这都不够,因为客户由于 非技术因素多一些,他们可能很难提出完整和清晰,或者说专业性的性能需求,但是对于 项目组织者和规划者,他必须能够清醒认识到这些需求的存在并在完成需求分析报告的时 候适当的提出,同时要完整和清晰的体现在设计说明书里面,以便于程序员编码时不会失 去这些准则。 程序设计者必须正确理解用户需求所处的环境,并针对性做出需求的分析,举例而言,同 样一个软件通过ASP租用方式发布和通过License方式发布,性能需求可能就是有区别的, 前者强调的是更好的.支撑能力和稳定性,而后者则可能更强调在各种平台下的普适性和安 装使用的简捷性。 第二、项目设计方法和流程处理能力 程序设计者必须能够掌握不少于两到三种的项目设计方法(比如自顶至下的设计方法,比 如快速原型法等等),并能够根据项目需求和资源搭配来选择合适的设计方法进行项目的 整体设计。 设计方法上选择不当,就会耽误研发周期,浪费研发资源,甚至影响研发效果。 一个程序设计者还需要把很多功夫用在流程图的设计和处理上,他需要做数据流图以确立 数据词典;他需要加工逻辑流图以形成整体的系统处理流程。 一个流程有问题的系统,就算代码多漂亮,每个模块多精致,也不会成为一个好的系统。 当然,做好流程分析并选择好项目设计方法,都需要在需求分析能力上具有足够的把握。 第三、复用设计和模块化分解能力 这个似乎又是老调重谈,前面基本素质上不是已经说明了这个问题吗? 作为一个从事模块任务的程序员,他需要对他所面对的特定功能模块的复用性进行考虑, 而作为一个系统分析人员,他要面对的问题复杂的多,需要对整体系统按照一种模块化的 分析能力分解为很多可复用的功能模块和函数,并针对每一模块形成一个独立的设计需 求。举个例子,好比是汽车生产,最早每辆汽车都是独立安装的,每个部件都是量身定做 的,但是后来不一样了,机器化大生产了,一个汽车厂开始通过流水线来生产汽车,独立 部件开始具有一定的复用性,在后来标准化成为大趋势,不同型号,品牌甚至不同厂商的 汽车部件也可以进行方便的换装和升级,这时候,汽车生产的效率达到最大化。软件工程 也是同样的道理,一个成熟的软件行业,在一些相关项目和系统中,不同的部件是可以随 意换装的,比如微软的许多桌面软件,在很多操作模块(如打开文件,保存文件等等)都 是复用的同一套功能模块,而这些接口又通过一些类库提供给了桌面应用程序开发者方便 挂接,这就是复用化的模块设计明显的一个佐证。 将一个大型的,错综复杂的应用系统分解成一些相对独立的,具有高度复用性的,并能仅 仅依靠几个参数完成数据联系的模块组合,是作为高级程序员和系统分析员一项最重要的 工作,合适的项目设计方法,清晰的流程图,是实现这一目标的重要保证。 第四、整体项目评估能力 作为系统设计人员,必须能够从全局出发,对项目又整体的清醒认识,比如公司的资源配 置是否合理和到位,比如工程进度安排是否能最大化体现效率又不至于无法按期完成。评 估项目整体和各个模块的工作量,评估项目所需的资源,评估项目可能遇到的困难,都需 要大量的经验积累,换言之,这是一种不断总结的累计才能达到的境界。在西方一些软件 系统设计的带头人都是很年长的,比如4,50岁,甚至更老,他们在编码方面已经远远不 如年轻人那样活络,但是就项目评估而言,他们几十年的经验积累就是最重要和宝贵的财 富。中国缺这么一代程序员,主要还不是缺那种年纪的程序员,而是那种年纪的程序员基 本上都是研究单位作出来的,都不是从专业的产品化软件研发作出来的,他们没有能积累 那种产品化研发的经验,这也是没有办法的事情。 第五、团队组织管理能力 完成一个项目工程,需要团队的齐心协力,作为项目设计者或研发的主管人,就应当有能 力最大化发挥团队的整体力量,技术管理由于其专业性质,不大同于一般的人事管理,因 为这里面设计了一些技术性的指标和因素。 首先是工作的量化,没有量化就很难做到合适的绩效考核,而程序量化又不是简单的代码 行数可以计算的,因此要求技术管理人员需要能真正评估一个模块的复杂性和工作量。 其次是对团队协作模式的调整,一般而言,程序开发的协作通常分为小组进行,小组有主 程序员方式的,也有民主方式的,根据程序员之间的能力水平差距,以及根据项目研发的 需求,选择合适的组队方式,并能将责权和成员的工作任务紧密结合,这样才能最大发挥 组队的效率。 ;

研发效能工程师技能培训

103 评论(14)

昂昂千里

1.获取相关的学历:要想成为3m公司的研发工程师,您首先需要获得相关的学历,比如工程学、机械学、电子学或计算机科学等。 2.阅读相关技术:学习这些相关领域的知识,了解先进的理论和技术,掌握研发工程师的基本知识。 3.实习经历:在实习的过程中,您可以了解3M公司的技术和业务,并进一步学习研发工程师的技能与经验。4.求职:上传您的个人简历到3m公司的数字招聘服务网络,将您独特的背景和技术能力呈现给招聘人员。5.面试:准备好技术面试答案,以确保顺利通过研发面试。 6.再认证:答辩完成后,就可以进行再认证,成功后就可以成为3m公司的研发工程师了。

301 评论(15)

霸州楚楚吊顶

首先你必须是本科毕业,而且是计算机相关专业毕业,同时,符合3m公司的招聘条件,这样才有可能,成为3m公司的研发工程师。

276 评论(8)

大馄饨小馄饨

0x00 前言

首先,《AI研发工程师成长指南》这个题目其实有些标题党了,准确地来说,本文内容应该是:“要想成为一名AI研发工程师,需要具备哪些技能”。

其次,本文对“AI研发工程师”这个title的定义,也并不是大家第一印象中的“算法工程师”、“数据科学家”。

再次,本文实际上作者结合现阶段行业发展、技术趋势以及自身工作性质做出的关于自身定位、职业技能、发展方向的思考。就像魔兽世界中的“职业攻略”,当我们在游戏中新建一个角色时,会先去了解这个职业的特点、天赋、技能树等信息,这样才会在“练级”的过程中少走些弯路。

最后,作者不是从一个很高的角度来对整个成长体系进行一个全面地阐述。而是站在道路的地点,不断摸索、不断前进、不断地调整自己的规划。因此本文不算是Best Practices,勉强算是Beta version,也希望能和大家不断交流,不断“发版”。

算法工程师的门槛

在网络上充斥着各种类似上面那样的吸引眼球的文章标题,向你诉说着人工智能这一火的不能再火的领域美好的前景。仿佛我们看了两遍西瓜书、处理了MNIST和几朵鸢尾花、在自己的笔记本电脑上掉了几个包、得到了和教程上一样的结果,打了几场比赛,我们就已经拿到了AI领域的通行证、成功转型算法工程师、接大厂offer到手软了一样。

但实际,现在AI算法工程师的就业难度和准入门槛,远比我们想象的要高。

上一张网络上流传的“诸神黄昏”吧

可以说一点不夸张,现在很多大厂的校招算法岗,门槛就是海外名校/985工科院校的博士/硕士。除了拥有与学历匹配的学术能力以外,工程基础也要非常扎实。

有人说:“我看网上说,AI人才缺口非常大,我不去大厂不就行了?其他的公司要求没那么高吧?”

要求高不高我不知道,但是有一下两点:

此间竞争之激烈,诸如此类,虽未得其皮毛,也略见一斑。

AI企业痛点

当然,我说这些不是为了打击大家的信心,而是要指出现在行业内的痛点:AI工程化。

人工智能发展到现阶段,已经从实验室中的算法走向了工程化应用的阶段。但是算法落地并没有想象中的顺利,开始有越来越多诸如场景碎片化、应用成本高、实验室场景到实际应用场景效果差距较大等问题被暴露出来,而这些也成为当前阶段AI落地应用过程中新的痛点。

领域内高水平的paper都是公开发表的,除了少数的核心算法,人才济济的AI企业很难在算法性能上与友商拉开距离。那么AI企业想要商业化,想要创收,行业细分领域纵深成了决定成败的重要因素。需要下沉到业务领域,真刀真枪地进行拼杀。

在技术突破-商业化-产品化-工程化的阶段路线中,除了技术强,接下来还有很多路要走。谁能够更好更快地把算法从实验室中拿出来、卖出去;更好更快地将模型交付到业务场景,真正产生实际的价值,让客户满意,谁才能活得更久。

对于Scientist/Researcher而言,技术可以是一篇论文、一项 ImageNet 竞赛的冠军、也可以是一个重要数值(比如人脸识别准确率)的突破;但在商务侧来说,论文与冠军并不实用,如果技术无法融进安防、汽车、金融等行业,变成切切实实的产品,客户与合作伙伴就会拒绝买单。

对于AI企业来说,能否深入了解各行业的业务流程、业务规则、知识经验,进而将技术能力转化为业务解决方案创造价值,是发展的保障。

那么对于我们个人来说,应该如何发展呢?

AI工程化

在《ML/DL科普向:从sklearn到tensorflow》一文中,我们谈到:

还是基于这个观点,我决定将自身的技能树偏向企业需要的第二种人,也就是标题所提出的“AI研发工程师”。从实际的工程应用角度出来,focus人工智能项目落地的全流程以及解决方法,提高自己的AI工程化能力,以此作为个人核心竞争力。

AI项目全流程

网络上很多文章描述的所谓“机器学习项目全流程”,例如:数据收集处理、特征工程、训练模型、模型测试等等。这套流程对不对?对。但是远远不能满足企业的需求。

AI项目是团队创造出的具有商业价值的产品、服务以及交付产物。有着明确的需求、计划、周期、成本、交付流程以及验收标准。

以下以toB业务为例,对AI项目全流程进行简单梳理。toC业务大体如此,只是将客户替换成公司业务方即可。

核心竞争力

通过对AI项目全流程的介绍,我们将目光瞄准到“建模开发阶段”的“系统研发”部分。虽然在上面只是一句话带过,但是其中的工作量和技术含量不小。

提起机器学习,尤其是深度学习,大家可能会对诸如Tensorflow,Pytorch,Caffee的工具耳熟能详。但其实在实际的机器学习的生命周期中,训练模型(上述工具主要解决的问题)只是整个机器学习生命周期的很小一部分。

数据如何准备?如何保证线上线下一致性?模型训练好了如何分布式部署?如何构建HA?需要批量处理还是实时处理?实时数据如何拼接?如何对模型服务进行监控、告警?做成PaaS还是MLaaS?

机器学习具有天然的Pipline特性,在企业需求中,大大小小的业务场景有众多的模型,这些模型如何进行打包、处理、发布?离线训练、批量预估、实施预估、自学习等任务类型交错,不同建模工具Sklearn、Tensorflow,Pytorch构造的模型如何进行整合?开发框架Spark ML、Flink ML等如何协同、对接。生产环境如何进行扩展和伸缩?如何支持AB Test?

为了解决这些问题,新生的开源框架层出不穷:Google自研的对接Kubernets和Tensorflow的开源平台Kubeflow;Spark团队打造的ML pipelines辅助工具MLflow;雅虎提供的机器学习及服务平台BigML;阿里巴巴推出的分布式机器学习平台SQLflow等等。众多厂商纷纷发力,目的就是解决AI工程化应用的痛点。

这些工作都是需要一大批工程师去完成。因此,我认为了解AI工程化场景、解决方案;熟悉AI项目流程、机器学习Pipline;掌握AI系统研发、服务部署上线能力的工程师将会逐渐成为AI团队的中坚力量。

技能树

之前铺垫了那么多,既是梳理思路,也是为接下来的系列做一个开篇。按照我的初步计划,技能树大概包括(不分先后):

其实这种类型的文章,比单纯的学习笔记、技术文章难写多了。一方面,拖延症迫使我把难写的文章放在后面写,另一方面,强迫症又迫使我一定要在系列前出一个开篇。其实写到最后,总觉得核心部分还差点儿意思,没有搔到痒处,这是因为目前我还没有能力站在一个全局的角度对职业技术体系进行划分,只能梳理出目前的规划和看法。后续要还需和朋友们进行交流。

有些事情是一定要做的,纵观一些大牛前辈,无一不是在正确的时候做了正确的事。明确自己的目标,在前进的道路上不断微调自己的方向,这样才能在这个竞争激烈的职业中生存下去。

接下来会有系列的技术学习笔记,考虑到学习的连贯性,前期可能是一些基础的docker/k8s等系列,后期会研究一些开源框架。技术文章可能会枯燥乏味,知识点也缺乏新意,但是经过自己的整理和实践,再加上自身的理解感悟,相信会不断完善自己的知识体系。

261 评论(15)

相关问答