高效的思维

半年前一直想分享一下工作上的小技巧,在一个高速发展的公司,因为需要更快更稳的服务,避免不了用第三方的服务,然后带来的就是和第三方技术公司做技术对接。在沟通的过程,很容易产生沟通障碍,大大降低了对接的效率。我们会遇到一些让自己抓狂的时刻。

技术人员很多时候会带着技术的术语和别人沟通,由于每个人对术语的理解不同,很容出现沟通半天,发现没在同一点上,结果浪费很多时间,有些更严重的是,有一方明明觉得不对路,就是不愿意选择更高效的沟通方式,例如打电话,非要坚持用微信打字沟通,甚至自己在一遍躁动,骂娘,依旧坚持自己的牛角尖。这个时候,我们应该先想办法让对方明白自己想要表达的意思,变换沟通方式和表达方式,找到双方更容易理解到位的高效的沟通方式,避免钻牛角尖。不仅仅是写程序,我们应该在方方面面都展现自己是一个灵活的程序员。高效沟通前提是排除本位主义。

程序语言的世界是多姿多彩的,技术对接很容易就会遇到跨语言沟通的障碍。例如PHP对接java,尤其在第三方文档写得不清不楚的时候,甚至服务商只提供了一个java的demo,而你是一个PHP好手,看着java的代码似懂非懂的,调试了半天,头发都掉了一半,但是流程还不通。对接第三方服务商的时候,对方抛给你一个文档的时候,你还应该记住一个对接人的电话,认真查看文档,主要是看看有没有demo,没有的话,也多口问一问。毫无疑问,demo是对接最感性的沟通方式,不管demo能不能跑,在你熟悉的语言世界,很多东西,你可以凭着经验和理解,很容易理解到位,并顺利的完成对接。但是有些服务商可能因为本身也不成熟,没有对应语言的demo,你怎么办呢?透过现象看本质,例如你是一个php工程师,看着服务商java程序员写的文档,文档上描述“签名是有xx和yy几个字段连接起来进行MD5然后再转成HEX”,于是PHP工程师拼命百度找php md5转hex的算法,好不容易找到了,意外大功告成了,结果就是验证不通过。语言只是一个工具,同一个逻辑,通过不同语言表述出来仅仅只是一个表象而已。而我们要抓住的本质就是数据本身。用java hex(md5(xx+yy))得到的字符,用PHP怎样得到,也是hex(md5(xx+yy))还是md5(xx+yy),通过数据对比,一步步的解开谜团,这样你会很快的对接完成。很多时候,文档上并没有提供基本的数据demo,这个时候,对接有困难的时候,你应该叫技术支持方提供一个正确数据和验证结果给自己做测试。例如某某你好,你能不能提供一个可以成功提交的数据给我,提交了什么内容,响应了什么内容,然后回归协议本身和数据本身自己调试,这个时候,所有语言都是透明的。跨语言沟通的障碍,很多时候是因为不了解产生恐惧或者在平时工作中忽视了底层原理。很多语言,我并不懂,但是我可以帮助别人很快找到问题并完成对接,更多是对底层数据和协议了解比较宽,很多东西并不难,不需要大神来搞定。就拿我们非常常见的http请求来说,x-www-from-urlencoded和multipart/form-data,很多人是搞不清楚的,更不要说raw了,在过去的团队就试过全搞乱了,query+post json 一起来,经验不足的小伙伴,对接大半天,才发现和原来的x-www-from-urlencoded请求头都不一样。对应网络协议,要懂得抓包看协议数据,而不要将自己的数据打印出来,就觉得提交的数据和打印出来的是一样的。记得在2012年的时候,做邮件内嵌附件,把Foxmail的email导出来,用文本工具看格式,一步步的实现的,那就经历让我明白看数据和协议的重要性。

人和物沟通的障碍,最近做了很多和硬件交互的东西,其实这些在Linux下会比较简单,Linux下比较简单,一切都是文件,硬件安装驱动之后,最终也是会映射成一个文件句柄,这样操作硬件和读写文件就没有什么区别了。但是我们的硬件都是在window上运行,所以我只能选择跨平台基础框架,开始的时候选了node,几经折腾之后,发现安装了一堆扩展,还有安装交叉编译工具,最后还没成功。后来实在没辙了,找了几个C#读写串口的demo,虽然这几个demo都可以跑,发现每个demo的写法都不一样,再则家里没有window系统,想Mac os测试很麻烦,后来找找了golang的,踏破铁鞋无觅处,我真的找到了一个合适框架。但是怎样测试呢,Mac 没有串口,window上也没有。很多东西,我们没有去了解的时候,总觉得很新,了解之后才发现自己的low。现在有很多模拟硬件的工具,例如模拟串口(socat -d -d pty,raw,echo=0 pty,raw,echo=0),usb虚拟串口,虚拟打印机等。当你找到了这些辅助工具之后,下面的跨平台开发就简单多了。记得上个月调试串口的时候,花了不到三个小时就在mac os调通了,第二天早起跑去公司的window上一测试,哈哈,成功了。调试打印机的时候也是如此,弄了虚拟打印机,PDF打印机,不费一张纸就把基本流程调通了,真机测试一下就通了。和硬件的对接,更高效的方式是转换成自己熟悉环境和方式去尝试,这样自己会更自信,问题解决起来更简单。

一个技术人员的深度和广度都是很重要的,这些东西很多时候决定了你的思维。高效的思维,带来的必然是生活工作等方方面面的高效。语言只是一个表象,和深度无关。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190105G02FW800?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券