我对这种体力活简直是深恶痛绝!!! 然而这是工作, 必须得做。我的做法就是,写一个ABAP程序,输入是模型名称列表,执行这个程序,代码会自动从系统抓取所有需要填的信息,做恰当的格式化之后,把输出写到系统剪切板里。然后我只需要打开S/4同事提供的excel, 一个CTRL V就解决问题。
最后我花了1个半小时的时间完成这个小程序, 然后花了1秒钟完成excel的输入。当然我如果老老实实的手动去填excel, 也许花不了1个小时,但这1个小时的体力劳动里,我在技术有收获么?
用SAPGUI做开发,一个优于用ABAP in Eclipse之处在于,我个人认为,任何想在开发系统的SAPGUI里实现的自动化操作,最终都能实现自动化操作, 问题只是代价的大小而已。
我在自己的ABAP开发生涯里写过大量这种自动化工具,多得我自己都数不清了。
我把它们的代码放在了我的github上。
为了方便使用这些工具,我又写了一些管理这些工具的工具,方便我快速找到我想用的工具:
Some small ABAP tools I write to improve daily work efficiency or just for fun
目的如上面说的,我痛恨体力劳动,我要用代码来完成它们。
2. web应用调试的自动化。
如果是后台代码的bug,我经常遇到的情况是,每次我得在前台做N次的点击,跳转,才能触发我后台的断点,而我处理的后台错误没有10次8次的调试根本无法定位问题。每次断点触发之前的重复操作让我忍无可忍,所以我通常会自己写一个小程序模拟前台的操作,每次执行这个小程序,1秒钟即可触发断点。
我把其中一个例子写在了这篇blog里My Tips about how to handle complex and tricky issues
我把这种专门为了方便调试而开发的小程序称为脚手架。
(注: 这篇博客的发布时间让我回忆起那不堪回首的调试经历,2014年4月30日调试了整整一天,花费了8个小时最后才找到问题根源。)
这些脚手架程序的开发通常会增加您进行错误调试的总时间,特别是在敏捷开发的时间压力下,有的年轻同事一定会对是否采用这种方式有些犹豫。尤其当您是一位前台开发人员时,一开始可能会对如何使用后台API来模拟前台操作感到比较困难。然而越困难的事情通常意味着越大的回报,比如您花大力气学会了自由泳的双侧换气之后,您在水中的前进方向将更稳定,前进速度更快(我看这篇文章里介绍的,我至今还未学会)
如果是前台js代码的bug, 但是必须依赖于后台某些特定的数据才能重现,而生成这些数据又需要在前台做很多复杂的操作,这导致每触发一次前台的断点要花很多时间。为了避免这种触发断点前不必要的等待,UI5里面提供了成熟的解决方案:直接把能引起前台出错的后台数据保存下来作为MOCK DATA, 然后使用UI5的MOCK SERVER把前台发向后台的请求拦截并重定向到MOCK SERVER.
前段时间有个俄罗斯程序猿火了,因为他已经将生活中的很多琐事也用代码自动化起来了:他写了一堆脚本,会给老婆发加班短信、会在宿醉不醒时给自己请假、会自动根据邮件恢复客户的数据库、还可以一键远程煮咖啡。他的脚本所在的github地址见这个链接。收获的这3万+的星,说明自动化在程序猿心中的重要程度。
总结
啰嗦了这么多,对于年轻的开发同事们我的三点个人建议:
1. 当您发现您在当前工作岗位上已经进入成长瓶颈期,现在的工作内容已经成为您的舒适区时,和您的管理者交流,确认您的感觉是否真的和事实一致。如果属实,一起探讨有没有可能去做一些更有挑战性,能让您更快成长的任务。
2. 养成知识积累并分享出来的习惯。
3. 将您工作中一切琐碎,重复,让您抓狂的事情自动化起来。
最后,回到文章题目的问题:SAP成都研究院35岁以上的开发人员都到哪儿去了?