关于技术想象力的几点思考

技术峰会层出不穷,比如阿里的云栖大会,InfoQ的QCon全球软件开发大会,网易的云创大会等等。QCon我几乎每年都会参加,前几年还相对还比较纯粹,以讨论时下流行技术、原理和方向为主,而这几年随着商业化的不断发展,也渐渐变得铜臭味十足。要么是打着技术的幌子来推广自家产品的,要么是借开源的名义来宣传企业形象的,着实无趣。参会者付着几千元的不等的门票,打着瞌睡听着豪无技术含量的商业化内容,不知主办方在数钱时有没有听到被骂的声音?

如上图,每个会议的主题写的都很不错,乍一看还以为是纯粹的技术讨论,然而进去一听才发现,原来人家推广的产品中用到了主题中的技术,原本一个来小时的会议有95%的时间在讲他们的产品逻辑。 😕

那么这种技术峰会还有没有必要参加呢?我的答案是:如果公司付钱就去,若是自己付钱的话,看时间和经济是否允许吧。因为现在这种技术峰会基本上没有什么干货,主要是各企业来宣传自家的产品,做影响力的。当然它也不是一无是处,也不是没有价值。通过大会上各种前沿的技术产品,至少可以开拓技术视野,丰富技术想象力。

说到技术想象力,这里说下个人观点:

  1. 要能折腾。折腾是优秀技术人的品质,越能折腾,收获就越大。比如中间件的某个配置,即定有几种配置项,轮流把每一个都配置上跑一跑看具体有什么不同。结合官方文档和源码实现,彻底弄懂和理解,这样的收获是比背课文要巨大的多;**
  2. 学会偷懒。我一直跟团队讲做技术要学会偷懒,勤快的程序员不是好技术,实质上强调的就是技术的想象力。比如公司经常性做活动,可能每次活动的逻辑都不太相同。对于 Java 开发人员来讲,每次活动除了编码之外,还需做要打包、编译、发布等重复性的工作。何不做一个脚本平台,省去打包、编译、发布的重复性工作。再往后结合脚本平台还可以做个活动平台,让运营同学自己到平台上来配置想要的活动等,如此一来即高效又不会枯燥,相比做活动功能更有技术乐趣,何乐而不为呢?
  3. 要懂业务。技术终归是为业务服务的,不懂得服务对象,又如何能做的好呢?这里说的懂业务不仅仅是了解需求,重点是了解业务的方向、规划、逻辑等等。了解方向有助于技术设计的合理性,了解规划有助于技术设计的可扩展性,懂逻辑有助于技术设计的可靠性。总之对业务越了解,可能在技术上的想象力就会越丰富,可落地的微创新就会越多。
  4. 发现问题。技术人员只会开发是不够的,要有一双善于发现问题的眼睛(包括技术性问题和业务性问题)。比如后端的应用经常会在数据入库后向MQ或缓存中发送消息,达到向其它服务同步数据的目的。这样的代码写的多了不仅不易维护,还会给系统增加额外的不稳定因素。这样的问题是很难被发现的,大多数人有着理所当然的惯性思维。该问题可以通过某些中间方式处理,比如模拟 MySQL 的 Salve,然后在平台的界面上配置数据的状态、字段、MQ等,从而达到无须硬编码也可以做分发及处理。(Canal 模拟 Salve)
  5. 多看多听多想。多看别人的产品,多听别人的解决方案,融会贯通取长补短,在前人的经验上结合自己的思路做微小改动和创新即可。这也是我参加云创这类大会的原因。

本质上,技术想象力是经验的综合体现。