Hi,everyone.how’s going today
今天下午在工作中碰到了一个挺滑头的印度人,和他斗智斗勇扯了一下午,挺有意思。其实我在加入这家银行之前,就对跨国企业里,特别是IT领域,充斥着大量印度人,有一定了解,不过今天也是真正第一次和还在印度的印度人(与那些在华或者在美的印度人相区分),还是被大大震撼了。
我先尽量用大白话介绍下事情的背景,我行一直很强调数据安全(并不是打广告,因为我是不会在这个网站说我是在哪个跨国银行工作滴),所以即使在内部,申请别的部门的IT接口(专业的用词是以API的形式向其他部门提供数据),也需要一套极其麻烦的流程先申请访问账号和密码,再使用对面规定的形式调用获取接口数据(一般是URL的报头里添加被访问部门定义的各种稀奇古怪的东西),当然对面也会出文档告诉我们怎么填。至于文档的可读性,我只能说呵呵了,先不说全英文文档对于非母语者还是有一定挑战的,能不能理解一方面取决于阅读者的英文水平,更重要的是那个出文档的人,能不能真正写明白。
由于我们的业务也有调用别的部门API的需求,而那个账号申请周期高达一个月,我们神通广大的PM就从别的印度部门先借了一个账号用着,大BOSS谈好了,我们这群小兵就颠颠过去拿账号密码了(线上)。然后我就遇到了这位叫AJAY的同事,第一个大大的震惊,就是他的口音要比他在海外工作的同胞重得多。费劲巴拉的一番沟通以后,我拿到了账号密码,我听着他信誓旦旦地告诉我们在代码报头放入这些信息就可以啦,有问题他可以anytime支持,望着他那句anytime,我隐隐感觉,事情并不是那么简单,因为在第一番沟通时,我问他写了代码吗,他嘴里说着当然,但是代码匆匆展示了1秒就切屏了(是的,当时他在投屏)。
我在编写代码时,各种报错,我一开始并不能定位是代码逻辑,还是代码里的报头格式,亦或是把他想的阴暗点,他提供了错误的账号密码?我只能一边继续啃文档,一边在群里厚着脸皮要他的调用API代码。我翻阅文档,终于在密密麻麻的小字里发现了这么一句话,报头应添加Base64 of account and password,翻译成中文就是账号密码的Base64编码信息,也就是我要先编码(encode)才能把编码结果作为认证信息传过去。。。幸亏我是通信出身,一看这种单词类型,就猜到了是表示某种编码规则,正当我在为我司内网环境怎么去进行BASE64编码蛋疼时,我们的Ajay回消息了,慷慨地贡献了自己的代码。。。然后他补充一句他也在调试他的代码,呵呵,你给的是跑不通的代码就直说嘛,那么委婉。。。
第二个震撼,他竟然用python直接进行BASE编码运算,这确实给自认为还算了解Python的我上了一课,我竟然没有想到!但是也侧面说明他其实知道这个要求,但他一开始只是最低限度地提供了信息,等着我们跳坑呢。。。不过我隐隐感觉,他提供的绝对是正确的账号密码,我还是蛮喜欢这种讲武德的对手的。。。
细读他的代码,我发现他是典型的CS科班出身,逻辑很严谨,思维清晰,也能体现他的性格,一条逻辑干到底,绝不定义什么funtion,然后传参,做代码整洁的事。但是!!!他那总共就小一百行的代码至少给我挖了三四个坑,我如果照抄绝对全部踩进去!!当然,也是那种无伤大雅的小坑,这里少个参数,那里少了个固定搭配(requests库 vertify=false 一般会和disable_warnning搭配使用,感兴趣的自行google),哥哥我半小时不到就把他代码里关键信息提了出来,还是以自己的逻辑写了代码,并且跑通了,并在群里告诉他,I got the response,thanks a lot.
他秒回,然后强烈要求和我zoom下,还要我当着他的面跑一遍(这么猴急,你是早就知道你代码有多少坑了吧),他拜倒在我的代码下,并强烈想让我分享代码,我鉴于他也确实帮到不少忙,没和他计较,大方分享给他,不过在代码里也加了点自己的料,代码每跑一次,会在本地生成一个命名为1022001的文件,储存信息,如果你本地有同名文件,会直接覆盖掉,如果你没注意去跑生产环境了,不好意思,海量数据会直接塞爆你的本地电脑。。。哈哈哈哈
随后我们还是聊了一会,毕竟还是有那种惺惺相惜的感觉,聊天里得知他在浦那(Pune,离孟买比较近的一个较大城市)工作,也确实是科班毕业,他和我商业胡吹了一下,并表示想学中文。。。感觉全世界老外和中国人套近乎都是找这个理由
与这位印度小哥后续应该是没有工作上的交集了,如果有后续,会继续分享。。。
发表回复