今年的生活如此丰富多彩,不写一点什么怎么对得起这过去的一年? 就当记流水账,若干年之后回来看一定很有意思。

1月

有幸成为SAP Community上2位来自China的SAP mentor之一:

3月

再次来到客户现场,和他们的架构师讨论二次开发时选用UI5还是用Vue. 

回到office之后,把这个讨论扔到cloud@SAP的微信群里,没想到激起同事们对这个topic的热烈讨论。我也有幸通过讨论认识了一些其他site的同事,比如Walldorf的QiAn, 还有上海Labs的很多同事。

最后以一篇blog向老板的老板汇报了这次visit:

https://blogs.sap.com/2017/03/31/is-jquery-based-ui-framework-obsolete/

4月~7月

开始了将近90天的Walldorf - Wiesloch两点一线的闭关生活。

周末就宅在林师傅家里code. 工作日的晚餐和周末一日三餐就consume这些干货. 对我这种程序猿来说进食的唯一目的就是维持生命

这三个月也彻底领教了德国瞬息万变的气候。这是半小时之内从WDF18望出去的风景:

因为从林师傅的家到office要骑行半小时,所以经常在半路上遇到暴雨被从头到脚淋成落汤鸡:

骑到公司时浑身上下全部湿透了,连鞋子里都全灌满了水,不得不脱下来拿到窗台上晒,光着脚写代码。

虽然骑车过程中也发生了一些小插曲:

最囧的就是medical office里的护士小妹给我包扎的时候对我说: " 我知道XXX用德语怎么说,但是对应的英语单词我不会。。。。。。"

不过我很快从这次incident里恢复了过来,继续每天14公里的骑行。

总部的伙食对于我这种不挑食的程序猿来说算完美了,我从来的第一天到最后离开的前一天,都吃得津津有味。

林师傅家的后面有个小山坡,上去之后是一望无际的平原。每天我下班骑车去2公里外的超市买面包都会遇到这两匹马:

有一次遇见马的主人,交谈中他们说道一看我就知道我是来出差的,因为Wiesloch这种地方没有人会因为旅游的目的过来。

这条路的尽头往左转,下坡,就是超市Penny,里面琳琅满目的面包们解决了我每天晚上的填饱肚子问题。

三个月的时间和Chief Arch和IMS developer一起工作,带着他们的祝愿满载而归。

在此也特别感谢三个月来林师傅和吴老师无微不至的关照,刚下飞机第一顿的pizza, 周末自己包的饺子,端午节的粽子,临行前阳台上的烤肉,感谢吴老师的自行车。也感谢Simon和Zolo的烤肉和啤酒。

7月~至今

加入了新的C4C team. 这支队伍从最初的只有Max和Harry两位同事开始,迅速setup起来,成为了一支有很强战斗力和凝聚力的队伍。大家的背景和工作经历都不同,但是都很敬业,并且都很有实力,每位同事都有自己的专业上的强项。我很有信心这支队伍能够在2018年大有作为。

9月

在去客户现场的飞机上认识了7楼Service Center的同事Dean,一位非常厉害的专家,比我全面多了。回来之后和7楼其他同事交谈才知道大家背后对Dean的评价是 "一个集PO, Architect和Senior developer三位于一体的SAP Employee"。嗯嗯,确实,名副其实。

11月

再次回到这个之前曾经support过的客户,帮助partner解决一些问题。

感谢我老婆和儿子还有我的家人对我工作的支持。


说完了工作,接下来少不了的当然是我苦逼的自由泳学习之路了。

自由泳的打腿和划手我觉得都比较简单,很快就学会了,但是卡在了换气上。

如果说游泳有理论考试的比赛,我觉得我可以去参加奥运会了。我看了大量各种网站上关于自由泳换气的视频和知乎的文字讲解,

然而。。。。。。并没有什么卵用。。。。。。

以前看论坛里有些朋友学自由泳换气时遇到这些问题:

  1. "一次自由泳游下来,我觉得泳池里的水位都降低了,消失的部分全到我肚子里了"

  2. "老子游自由泳时喝进去的尿比你这辈子喝的水还多!"

  3. "冬天练自由泳换气,喝进去的水太多,每隔10分钟就要去一次厕所,怎么破?"

我自己的个人经历就是:自从我开始练自由泳换气,每次去游泳馆我再也不用带水了,换气时喝进去的水就足够了。

换气的道理我都懂,但是到了水里我就是做不好。

知乎上有个人说过,当你泡够了足够的时间,喝够了足够的水,自然就学会了。这个感觉需要你自己去领悟,网上的视频,教练的讲解,不能真正教会你。真正学会,只有靠你自己在水里去领悟。

我自己想想还真是这样,今年的12月份,我逐渐就能换上气了,换气时也不再喝水了。

我觉得这就像编程一样,当程序猿到达了一定量的代码量之后,或者是独自解决了一定数量的tricky problem之后,产生由量变到质变的一个转变。

这里要特别感谢堡格莱斯健身俱乐部的陈晓强教练,不仅在岸上和水里耐心地教导我自由泳的正确动作,还在岸上给我拍视频纠正我的错误动作,是一位非常敬业的教练!

当你在学一门编程语言 / 一种泳姿时,你该学什么?

我这人有个反思的习惯,这是我高中班主任兼数学老师高中三年灌输给我们班的,我很感激他。反思我过去这半年,为什么我虽然有了很牢固的蛙泳基础,自由泳却依然学的这么痛苦?

我反思的结果:

我照着去年学蛙泳的顺序学自由泳,从自由泳打腿开始,当打腿能够轻松前进25米之后,开始学划手,转体,换气,最后是全身配合。没错,无论是网上能找到的教学视频,还是现实游泳馆中的教练,都是这么教的。

我学的是什么?我学的只是自由泳的语法!这道理就像为什么当有的程序猿学一门新的编程语言时,把这么语言的所有语法从头到尾读了一遍,完了扔给他一个需求让他用这门语言实现,但是他还是觉得无从下手?

关于这个问题,中国程序界暗黑四大天王之一的王垠在他的著作里有了精辟的阐述,推荐每位年轻程序猿都去读读他的原文: 如何掌握所有的程序语言

http://www.yinwang.org/blog-cn/2017/07/06/master-pl

By the way, 读到这里,如果你是一位程序猿 && 你在成都 && 你还不知道王垠是谁,then 请你去面壁



以上是垠神的原文引用,再回到我自由泳的问题:我只学会了自由泳的语法,而没有领会自由泳的 "语言特性(paradigm)" !!

什么是自由泳的语言特性?一千个自由泳泳者可能有一千个, 不,没那么多,至少一百种答案。就我个人来说,结合我从不会换气到学会换气的过程,我认为是:侧身。

按照教科书上的说法,"背部和臀部的肌肉保持适当的紧张度,在游进中保持头部平稳,躯干围绕身体纵轴有节奏的自然转动35゜~45゜" 向下面这张图一样,想必你能清楚地观察到躯干转动35度到45度这一behavior吧?

而我,从一开始对这个转动,侧身的动作就很不适应,一侧身时我就很紧张,害怕水从鼻子里灌进去。在这种肌肉紧张的情况下,再去强行练划手,换气,效果可想而知。问题的根源就是我游了一年多的蛙泳,身体肌肉已经熟悉了蛙泳那种在游进过程中,身体永远是俯卧在水里的语言特性。当我从俯卧切换到侧身时,我的大脑会本能地对这种位置的变化产生抗拒,然后传递到我全身。客服

克服这个问题我用的也是最笨的办法: 老老实实泡了两个月。现在我的身体对侧卧已经非常适应了,我经常用侧卧的方式漂浮在水里,轻轻打腿保证身体原地悬浮,然后侧头从水里望向水面,观察水面被其他泳者游过而荡漾起的波纹,以及在水里观摩其他自由泳高手的打腿和划手动作。这时我才发现水里是如此安静,这是我以前游蛙泳无法领略到的。

如果是我来教别人自由泳,在学员打腿过关之后,我不会让他先开始练侧身打腿,而是会让他先从侧身漂浮开始。没错,就是侧身漂浮,什么时候觉得能够全身非常放松漂浮在水里了,什么时候就能开始练侧身打腿。因为我认为侧身转体是自由泳最重要的语言特性。

我们平凡人总是很羡慕C罗和孙杨在金球颁奖典礼上或者冠军领奖台上的风光,

!](//upload-images.jianshu.io/upload_images/2085791-2f3620ae5e19e718?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

而总是会去忽略他们背后做出的大量常人无法想象的艰苦训练:

2018年,让我们每位程序猿都像C罗和孙杨一样,继续持之以恒的打磨自己的职业技能。

2018年的愿望

真心希望我的自由泳能游得好看一点

这些动作简直就像艺术品一样

一个SAP开发人员的2017总结的更多相关文章

  1. 一个SAP开发人员的2018年终总结

    我是SAP成都研究院的Jerry Wang,我喂自己袋盐. 时间过得真快,2017年发生的事情还历历在目,一转眼,2018年又马上要结束了. Jerry惊恐地发现,随着年龄的增长,时光流逝的速度仿佛有 ...

  2. 一个SAP开发人员的双截棍之路

    由于种种原因,Jerry最近加入了SAP成都研究院的一个演讲俱乐部,这个俱乐部主要是提高大家的英语演讲能力. 说来Jerry也是大一下期和大二上期一次性高分通过四六级考试的,但是当毕业进入SAP成都研 ...

  3. 一个SAP开发人员的养蚕流水帐

    Jerry打算以此文来给汪子熙全家进行了一个多月的养蚕经历画上一个圆满的句号. 南方长大的80后,对蚕应该不会太陌生.大家还记得你们小时候学过的课文<蚕姑娘>么?课文开头是这样的: 春天天 ...

  4. 作为一个web开发人员,哪些技术细节是在发布站点前你需要考虑到的

    前日在cnblogs上看到一遍文章<每个程序员都必读的12篇文章>,其中大多数是E文的. 先译其中一篇web相关的”每个程序员必知之WEB开发”. 原文: http://programme ...

  5. 怎样才能提交一个让开发人员拍手叫好的bug单

    怎样才能提交一个让开发人员拍手叫好的bug单 软件测试人员写得最多的文档就是测试用例和BUG,现在测试用例和BUG都没有标准的模板,每个公司使用的缺陷管理工具都有可能不一样,如果你换了一家公司就有可能 ...

  6. [译]作为一个web开发人员,哪些技术细节是在发布站点前你需要考虑到的

    前日在cnblogs上看到一遍文章<每个程序员都必读的12篇文章>,其中大多数是E文的. 先译其中一篇web相关的”每个程序员必知之WEB开发”. 原文: http://programme ...

  7. 仅以一个前端开发人员的角度看微信小程序

    看了几天的小程序(当然也包括了上手书写),才有了这篇博文,非技术贴,只是发表下个人观点,仅以个人技术能力来看小程序. 首先说下优点: 调试工具:官方的工具还是做了很多工作,包括监听文件变动自动刷新,编 ...

  8. 一个工作13年的SAP开发人员的回忆:电子科技大学2000级新生入学指南

    让我们跟着Jerry的文章,一起回到本世纪初那个单纯美好的年代. 2000年9月,Jerry告别了自己的高中时代,进入到自己心目中的电子游戏大学,开始了四年的本科生活.每个新生,都拿到了这样一本薄薄的 ...

  9. 从一个非开发人员转行silverlight满一年的工作总结(第一次发帖)

    自2013年3月进入公司到现在已整整一年.这一年,让我从一个大学毕业就去参军并且专业还不对口的大学生步入了软件开发这个高门槛行业.说实话,我真的很庆幸,庆幸遇到了两位赏识自己的领导从很多专业对口.能力 ...

随机推荐

  1. 马踏棋盘--dfs

    [问题描述]关于马踏棋盘的基本过程:国际象棋的棋盘为 8*8 的方格棋盘.现将"马"放在任意指定的方格中,按照"马"走棋的规则将"马"进行移 ...

  2. 基于scrapy的一些实例

    一.爬取斗鱼主播 1. 爬虫文件 # -*- coding: utf-8 -*- import scrapy import json from Douyu.items import DouyuItem ...

  3. JAVA 序列化_基础

    JAVA序列化 实现 Serializable 接口的对象,可以序列化为本地文件 简单示例: //序列化类 public class Test implements Serializable { pr ...

  4. .reverse ,join,split区分

    * 1:arrayObject.reverse() * 注意: 该方法会改变原来的数组,而不会创建新的数组. * 2:arrayObject.join() * 注意:join() 方法用于把数组中的所 ...

  5. Vue如何封装多个全局过滤器到一个文件

    #### 在写vue项目时,所用的过滤器很多时,把所有的过滤器方法封装在一个文件中,然后导出,并绑定在vue实例上 1.在src下创建filters文件夹,并新建index.js文件 2. index ...

  6. 写给初学者的话---linux使用说明

    2018年noip上海赛区可以使用window操作系统的美梦终究还是破灭了!!!!上海大部分noip选手都陆陆续续开始改linux........好吧,那我们今天来看看linux操作系统中,noip选 ...

  7. zookeeper 节点信息

    使用get命令获取指定节点的数据时, 同时也将返回该节点的状态信息, 称为Stat. 其包含如下字段: czxid. 节点创建时的zxid. mzxid. 节点最新一次更新发生时的zxid. ctim ...

  8. python移动多个子文件中的文件到一个文件夹

    import os import os.path import shutil def listDir(dirTemp): if None == dirTemp: return global nameL ...

  9. jQuery中的动画——《锋利的JQuery》

    自CSS3以来,主流网站开始偏向于扁平风格和动画效果,这时就可以jQuery的动画就可以发挥其长处了,灵活的应用其动画API,让我们可以设计出很多绚丽的效果.下面,让我们来列举一些jQuery常用的动 ...

  10. Java网络编程二--基于UDP的编程

    DatagramSocket对象为基于UDP协议的Socket 构造器提供可以选择性绑定到指定端口和ip 创建完对象后调用:receive(DatagramPacket p) send(Dategra ...