一个 SAP 开发工程师的成长史 - 关于信息素养和数字化资产的思考

本文副标题:我的演讲稿 - 如何快速上手新工作,持续提升个人竞争力

最近我收到了 SAP 上海研究院一个部门领导的邀请,参加了一个信息素养故事分享会。我也就"如何快速上手新工作,持续提升个人竞争力"这个话题,聊了一些我个人的看法。

本文是我在分享会上的演讲稿。

大家好,我是 SAP 成都研究院的 developer Jerry. 很荣幸收到这个邀请,其实我得知这个分享会的主题时,心里很有感触,因为我在 SAP 的工作经历里,确实会经常遇到需要快速上手新工作的场景。我在 SAP 成都研究院工作了 15 年,先后在七个不同的 SAP 产品开发团队工作过, 因此今天我想利用这个机会,和大家分享一些我过去工作中切换新课题的故事和心得。

我想从以下三方面来分享:

  1. 面对新课题,不抵触,保持积极的心态
  2. 充分利用自己以往项目的经验
  3. 给自己不断设定学习小目标

当我们即将和手头上开发了一段时间的产品告别,准备接手一个新产品时,能做到抱着积极的心态去拥抱变化,不是一件容易的事情。

一方面,我们从事产品开发,花费了时间和精力去学习其开发技术,开发工具和开发框架,以及相关的产品业务知识。切换课题和产品后,有可能面临的事实是,这些经过努力学习得来的东西,在新产品开发里暂时用不上。

另一方面,新产品往往意味着又要开始学习新的开发技术,有时甚至是从头学习,比如技术栈从 ABAP 切换成 Java. 除了技术之外,我们也需要同 Global 团队的同事,重新建立信任和磨合。总之,我们对接手新课题时感到不安和抵触,实际是受到了这些不确定因素的影响。

如何尽量让这些不确定性因素对自己的影响达到最小化,以积极的心态去面对变化呢?

我个人的心得,做好两点。

第一点,正视变化是不可避免的。古希腊哲学家赫拉克里特曾经说过:Change is the only constant in life. 生活中唯一不变的就是变化本身。

其实 IT 圈子又何尝不是如此呢?

曾经我们提到微软,第一印象总是 Windows 和 Office,但现在微软的 Azure 云公台也非常的成功。Amazon 以前给大家的印象就是一个电商公司,但如今在技术人员心里,它的云平台 AWS 似乎比 Amazon 的电商业务更让人印象深刻。以搜索引擎起家的 Google,它孵化出的 Kubernetes,早已成为云原生平台的绝对领导者。20 年前的 SAP,几乎就是 ERP 的代名词,但现在我们不光有 S/4,还有 HANA 平台,有 SAP BTP,还有很多 SAP 收购并成功整合的各种云产品。

再说到国内,大家如果经常关注技术圈新闻,那么也会经常看到某某公司事业部组织架构又进行调整之类的新闻。这些组织架构调整,都是企业为了应对不断变化的市场而采取的优化措施,对于员工而言,就意味着日常工作课题的切换。

由此可见,工作中的课题切换,往往是不可避免的。只有正视这个事实,我们才能摈弃消极的心态,从容地去面对变化带来的不确定性因素。

第二点,坚信这些变化,能够给自己带来更多的机会和选择。

中国有句古话:技多不压身。从长远来看,我坚信这些变化能给我们的职场之路带来正向作用,能让自己拥有更多机会去做出选择。

我 2007 年毕业刚加入 SAP,从事的是 SAP Business ByDesign 的开发。由于水平和经验的局限,当时对 SaaS 软件的设计理解得不深。

2012 年我转到了 SAP CRM 开发团队,这是从 Cloud 产品开发向 On-Premises 产品开发的一次转型,让我有机会能够将 SaaS 和本地部署软件,这二者从设计,开发再到发版整个完整流程的差异,进行一番比较。

2014 年我转到了 SAP CRM Fiori 开发团队,使用的编程语言也从 ABAP 变成了 JavaScript,这让我有机会接触到了 SAP UI5 前端框架。

2016 年我被分配到 SAP CRM Addon 项目组,这个项目的目标是把 SAP CRM 以一个 Addon 的方式,部署到 SAP S/4HANA 上,这使我终于有机会接触到 SAP 的旗舰级产品 S/4HANA .

2017 年,我完成了 CRM Addon 项目组手头的开发任务后,加入了 SAP Cloud for Customer 的开发团队,这是 SAP 在 CRM 领域的一个 SaaS 产品,让我有机会将之前所学的 SAP CRM 这个本地部署产品的设计和开发,同 C4C 这个云端 CRM 软件进行比较。

2018 年,我转到了 SAP 成都研究院一个数字化创新团队,这个团队的任务是使用不受限的各种技术,开发基于 SAP Customer Experience 产品线的各种原型应用和概念验证,这让我能够在工作中尝试使用 Docker,Kubernetes,SAP Kyma,Go 语言这些对于当时的我来说比较新的技术来开发和部署应用。

2020 年,我加入了 SAP 电商云的前端开发团队,使用 Angular 和 TypeScript 作为我日常工作的开发框架和开发语言。这也给了我一个将 SAP UI5 和 Angular 这两个前端框架进行横向对比的机会。

我觉得我能够在 SAP 工作 15 年,始终对开发工作保持浓厚的兴趣,一个原因就在于我工作课题的不断变化,让我总是有新东西去学习,有新的挑战去迎接。过去这些工作内容的变化,给我提供了很多宝贵的机会,让我接触并工作于 SAP 各种产品。

那么在接受了新的课题之后,如何快速切入新课题呢?

那就是我想要分享的第二点心得:充分利用自己以往的经验。

我一直觉得,我们过去所积累的产品和技术经验,都是我们的宝贵财富。

这些我们通过努力积累起来的财富,就是属于个人的数字化资产。我认为所谓的信息素养(比特素养),包含两方面内容。一是如何从爆炸式增长的信息海洋中快速查询出自己所需信息的能力,二是如何将这些查询到的信息,提炼,归纳,整理,内化成自己的数字化资产。

从官网复制粘贴一些文字到本地,下载一些 PDF,从 Github 找到一些代码片断,复制粘贴到自己的工作代码中,这些都不能算是数字化资产,只能称作素材。

把这些素材进行二次加工,持久化到自己的个人知识库里,无论时间如何流逝,想查找的时候,可以在极短时间内(比如30秒内)快速在知识库里把对应的内容重新加载到自己大脑里,这样的内容才能算数字化资产。

就我个人而言,我喜欢把自己工作中学到的技术知识点,总结出来以博客的形式发布到 SAP 社区上。我很多时候自认为对某个技术点理解得很清楚了,但是当我动笔开始写文章的时候,发现经常卡壳,原因是某些点理解得似是而非,所以把脑子里的东西持久化到知识库,生成数字化资产的过程,本身也是对所学的复盘,总结和进一步加深理解。并且内容发布到社区之后,能收到其他从业者的反馈,指出我文章里可能的错误或者理解得不准确的地方。这些发布到社区的内容可以被搜索引擎高效地查找出来,而且永远不会丢失。

对所学知识点的整理,加工,持久化到知识仓库,能有助于把零散的知识点串成网状的知识体系,所以这么多年我一直坚持在做。

每个人都有自己喜好的个人知识库管理工具,有人用 Word 和 Excel,有人用各种云笔记软件。无论什么工具,只要能满足能够高效管理和管理,就是最适合自己的工具。

当我们已经在自己的个人知识库里积累了一定量的数字化资产之后,如何在新的产品开发里高效利用它们呢?

我从 SAP Business ByDesign 转到 SAP CRM 开发时,发现这两个产品前后台开发使用的工具和框架都不同,但有一个共同点:二者后台都基于 Business Object 模型,只是具体的建模和实现技术有差异。比如两个产品都有 Sales Order BO,两个 BO 都有抬头和行项目节点,这些节点通过 association 关联到其他目标节点的设计也大同小异。这样一来,BO 的层级结构和节点间的关联关系,对我来说就是已经掌握的知识了,那么我就只用专注于学习如何用新工具实现 BO 模型即可。于是我在学习 CRM 产品下如何创建 BO 模型时,我会先翻一翻以前 BYD 系统里创建 BO 模型的知识库文章。虽然具体的 Tcode 和开发细节不同,但二者都基于 ABAP,且目的都相同,为应用开发人员提供简洁高效的建模和业务逻辑编写。把握了这个要点,我在学习新的 BO 开发框架时,就知道重点应该关注这个框架的哪些方面。

后来我转到 CRM Fiori 开发团队后,任务就是把传统 CRM UI,按照 Fiori Design Guideline,采取 SAP UI5 框架重新实现一次。因为无论传统的 CRM UI 还是新的 Fiori UI,都是运行在 CRM 系统上,所以后台业务逻辑没有变化,因此我只用从头开始学 SAP UI5 的开发知识。

从 CRM Fiori 开发团队转到 SAP Cloud for Customer(简称 C4C) 开发团队后,因为 C4C 前台 UI 的开发技术是 UI Designer + SAP UI5,而 UI Designer 我在 SAP Business ByDesign 开发时就已经学习过了,然后在 CRM Fiori 开发团队又学会了 SAP UI5 ,而 C4C 后台的 CRM 业务知识,我之前在 CRM 开发团队也有学习过,因此这是我这么多次转岗里最顺利的一次,学习起来很轻松。在工作过程中我遇到的一些 UI Designer 和 SAP UI5 的问题,其实我之前在 SAP Business ByDesign 和 SAP CRM Fiori 开发团队工作时,都深入研究过。所以再次遇到这些类似问题时,我不需要从头去调试定位问题,或者是网上搜索答案,而是基于以前自己研究的基础和材料来处理,这样节省了不少时间。

当我转到 SAP 电商云的 Angular 开发团队之后,因为我已经有了 SAP UI5 这个前端框架的使用经验,所以在学习 Angular 开发时,对于它的数据双向绑定,局部页面刷新,页面路由,生命周期钩子函数等领域,我都可以类比 SAP UI5 的实现来印证和比较。因为有了之前 SAP UI5 这个前端框架的学习基础,在学习 Angular 时,我就知道前端框架学习的侧重点是什么,而不至于迷失在 Angular 官网像字典一样的学习文档里。并且我会提醒自己去留意,以前开发人员使用 SAP UI5 框架的一些痛点,Angular 是否有解决方案了呢?

我想分享的第三点,就是在切入新课题之后,如何高效学习呢?

除了充分利用好自己的个人知识库之外,我的另一个心得就是,不断给自己设定小目标。

这里的小目标,类似大家在日常敏捷项目开发中一个个 Jira task,需要花费的时间以小时计,比如四到六小时。

显然,成为 SAP CRM 技术专家不能算是一个小目标。了解 SAP CRM 前后台交互原理也不能算成是一个小目标。但我们可以把了解 SAP CRM 前后台交互原理拆解成这些小目标:

  1. 找到 CRM UI 某个具体的按钮被点击之后,UI 层接收该请求的入口函数
  2. 弄清楚从 UI 入口接收用户请求,到 UI 将该请求分发给后台执行前,这一过程经历了哪些函数调用
  3. 找到后台接收用户请求的入口函数

也就是说,这一个个小目标,必须是短时间内能够比较容易地成功完成,并且有清楚的可以度量的标准,来衡量其是否执行成功。一次又一次的小成功会不断给我们积极的心理暗示,让我们的学习越来越有劲头。

比如我从 ABAP 开发转到 SAP UI5 开发时,需要掌握 JavaScript 这门语言。看书是系统学习的方法之一,但如果我们给自己设定一个小目标每天看《JavaScript 从入门到精通》20页, 那么简单地看完 20 页,可能合上书之后,觉得自己并没有什么收获。

我当时的做法是,用 JavaScript 实现 23 种设计模式,这就是 23 个小目标。当我用 JavaScript 自己实现了单例模式后,到网上一对答案,发现居然有多达七八种各不相同的用 JavaScript 实现单例模式的写法,有的实现巧妙利用了 JavaScript 语言的特性,精妙无比。于是我又增加了一些新的小目标,学习并掌握这些网上的单例实现,从例子中学习 JavaScript 的语言特性。

给核心功能代码搭建脚手架,也是我给自己制定小目标的来源之一。SAP 产品的很多核心功能代码,必须满足一定的前置条件才能触发。在我们开发这些功能代码时,每次调试都要重复从浏览器上进行一些繁琐的操作,才能使我们的断点触发。我喜欢做的事情就是,研究如何通过代码来满足这些前置条件,使用代码模拟或者实现和用户在浏览器上点击屏幕一样的效果。我编写一些可以直接执行的脚手架程序,执行之后,能直接触发我在功能代码里设置的断点,省去每次调试之前在浏览器上进行重复乏味的人工操作。

因此给核心代码搭建脚手架,可以拆解成下列小目标:

  1. 找出所有核心代码依赖的前置步骤或条件
  2. 研究这些前置步骤是否可以通过代码实现或 Mock
  3. 用代码实现每一个前置步骤的执行
  4. 在脚手架应用里调用前置步骤的模拟执行步骤,最后触发核心代码
  5. 将脚手架应用封装成可以通过命令行的方式调用,方便使用
  6. 和团队确认该脚手架应用是否可以被团队的自动化集成测试用例重用

总之,信息化时代,良好的比特素养能够帮助各行各业的职场人员提高工作效率。我们作为开发人员,同其他行业相比具有一个得天独厚的优势,那就是我们可以利用手中的代码,尽可能的让我们的工作自动化起来。代码是我们的朋友,可以帮助我们从一些繁琐重复,单调乏味的工作中解放出来,让我们能省下更多的时间,投入到技术附加值更高的任务中去。

这里给大家分享一本书《比特素养》,作者介绍了一些如何提高自己工作效率的方法和思路。大家有兴趣可以去看一看。

以上就是我今天的分享,感谢大家聆听。

更多阅读

原文地址:https://cloud.tencent.com/developer/article/2181290

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

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340