Edwin & Xinyu's Blog  

查无此人,查有此地

写在封笔5年之后

弹指一撇,已有五年没有写过技术文章了。想当初年轻气盛,一周更新好几篇。一方面的确是兴趣所在,学有所感学有所悟;另一方面也想借此在社区落个名声,顺带混个微软mvp。奈何同行鱼龙混杂,随着奖牌含金量的逐年走低,自己也便愈发疏于表达。

回望这五年,it技术的发展,如同走过的路,踩过的坑,罄竹难书。

五年之前,HTML5如同启示录,还在Web前端人员心中念想。在移动端,当微软还在做他一体化平台(WindowsPhone7)的美梦之时,android4.0的暗潮已开始涌动。应用后端SOA似乎还停留在教科书上。唯独MapReduce厂商伴随着大数据云计算的热潮开始兜售他们的Hadoop方案,管他场景如何,反正大数据号称能解决这么多问题呢!

似乎从表面上看,五年之前技术的发展,并不像如今这样影响到生活的方方面面。暂且不论信息什么时候开始爆炸,技术什么时候开始腾飞,在此过程中如何看准方向,是值得我们好好总结的。 今天不想谈技术,想谈谈方法和思路。

如何评价一个人技术能力高低?如果一个人简历上写精通Java/C/C++/VB/PHP/C#/Python...这个人就一定是个牛人?非也!**评价一个人的技术能力,首先要看对元知识的掌握能力。**所谓元知识,即知识的知识。也就是说,学习不只要会问What/How/Why,更要理解更上一层的Why What/Why How/Why Why。说个具体案例,有一次曾为某项目面试一个资深移动开发,其简历中写了精通PhoneGap(现改名Cordova),正好我又在很早之前研究过这个,就随便问问这个的实现原理。在多次启发之后,原理仍不知所以,故我理解至少能力没达到资深两字。众所周知浏览器通过沙箱屏蔽部分JS的权限,避免服务器通过JS未经授权访问到客户端本地的资源(试想如果开放这个权限,任何网站能在你浏览的同时偷偷摸摸访问你本地电脑的内容)。

故如果PhoneGap要实现JS能访问本地摄像头,麦克风及其他原生资源,必然需要绕开这个沙箱机制。所谓绕开,就好比不能从大门登堂入室的方案,无外乎从窗口进入(基于现有其他入口hack),开后门(重新造个入口)或另起炉灶(为这个需求重新合理建造房子)。而这些方案的实现,和新技术本身关系不大,对应的底层技术(如浏览器)有关。事实上,最后这个方案可能因为代价和其他原因(IOS限制)没有实施,PhoneGap通过JS Hack(浏览器onJsPrompt callback)和本地起websocket实现了前两个方案。

第二点我们来谈谈架构。软件系统和其他孤立系统一样会不断增熵直到彻底混乱。架构师的职责,则是不断用技术重构系统来增加负熵。 然则如何增加负熵?随着时间的推移有着不同的理解。早期做架构时很喜欢以“道”为目标,为了增加负熵,需要基于开发之道解耦,配合SOA DTP/TCC模式...从现在来看,通过业务架构庖丁解牛再通过系统平台合二为一,这个是无可厚非的。但是,缺少的是真正意义上分阶段的落地。这里的落地,和规划不同。打个比方,所谓分布式架构(分布式分流量,分布式应用,分布式事务,分布式数据库,外加附赠灾备双活)现已经标准化,每个现有系统只要有需求都可以这么规划,但谁敢保证一定能这么落地?人,时间,等等其他因素均会造成制约。对企业而言创造了错误的东西是他最大的风险之一,显然不能对未验证的事物方法过多投入。

而传统的ROI指标,也是天生扼杀此类大张旗鼓的未知创新。这样看来,如何通过KPI不断验证架构,步步为营不断演进架构,则是架构师真正需要平衡的问题了。正所谓道为本,术为途。

最后,我要谈的是独立思考的能力。前阵子培训docker,在准备材料时其随意查了下google trends,其变化的趋势充分说明docker自诞生开始逐年走红。

但随后区域热图,说明所有用google发起的docker查询中来自中国的占比最高。

排除墙的原因,其也从侧面印证docker在中国的火。本质上,docker就像当年的jar包,war包一样,定义了一种新的交付模式。唯独这个模式在包含程序代码的同时,也标准化了运行时和配置文件,形成一个一处编译到处运行的集装箱环境。说到这,是不是似曾相识的感觉油然而生?那么,docker真能像其所宣称的一样提升13倍交付频率么?明年也许会有答案。**所谓独立思考,归根结底三个词,质疑,思考,证明。**质疑看到的,一步步进行验证,最终掌握元知识。要知道,历史总是相似的,想5年前缺词填充空白处填写的大数据一词的地方,现在不都替换变成了人工智能么?算了算,上一次用OpenCV算特征脸,已经在8年之前了。这些年学术界发生重大突破了么,谁知道呢?

validate