昨天,帝都的几位朋友去了『知乎盐Club』,且狠狠地刷了我一脸屏。而我满怀着羡慕妒忌恨参加了Segmentfault D-day的广州站活动。
总体来说,Segmentfault的这场活动给了我预期想要的东西,并且也很意外地见到了张云龙,他在知乎上回答了一道关于大公司如何部署前端的问题,他的答案令我醍醐灌顶。这场活动给我最大的体会就是优化之于大公司的项目,花最多时间的不是开发而是持续的优化。例如前端的优化,随着版面布局的不断优化,如何进行非覆盖式更新前端代码,张云龙给了一个很好的思路;而对于大并发的数据查询和大规模I/O,如何通过本地以及云端缓存进行性能的优化,百度鹰眼项目的马辉给了一个很通用的思路。由于我不做iOS和Android的开发,实际上有两个讲者讲的内容我都云里雾里,不过可以透露的是,Apple Watch的APP是依赖iPhone的,而且由于可能需要用到iCloud,所以在中国的体验可能不会太好。
比较令我震撼的是最后PeachApp的CTO段岩的演讲。他在演讲中展示了一款由他们公司制作的一款移动端跨平台开发框架AvantX。Demo相当惊艳,一份代码,可以直接用于iOS和Android,同时直接用Vim修改代码,就可以即时看到动态的变化。当然,包括他自己也透露,很多框架包括HTML5(很多APP无非就是网页加个浏览器壳),React Native,Xamarin和老牌的Qt都是跨平台代码重用的框架。由于我对于手机端开发不熟悉,我也就不方便评论AvantX的技术较之几款如何如何。不过我个人觉得添加了AbstractView这种模式的确给开发带来了方便,采用元素映射的方法,令代码展示时可以对应不同的移动端。当然,在代码转译那块,还是用了Google的Java to JS/OC/C# 的转译器,相对来说,会依赖于谷歌的产品。
我并非想评价这款AvantX如何如何。我只是想说很佩服这些造锤子的人(注意不是轮子)。因为觉得开发得不爽,所以造了个锤子出来帮助自己开发。其实有点类比于方法论,每个人都有一套自己的方法论。不过,方法论容易构建,但工具构建起来很难。For example,我尊敬的一位长辈,Oliver Ding,曾提倡了很多记录整理在线学习内容的方法;但是我们实际操作起来需要花上比较多的工具才能进行整合,例如我需要截屏、用Evernote、需要做标签、备注等等。所以Oliver Ding自己就上线了一个项目叫Bagtheweb,顾名思义,就是打包网络,具体我就不介绍了,大家可以自行搜索。这就是造锤子,一般有了方法论,但实际上现行的解决方案过于复杂,所以选择造锤子。
但一般人是不会倾向于造锤子的,因为造锤子的成本会很高。但随着使用方法的频次越来越高,很多方法却一如既往地复杂,到最后,使用解决方案的成本还高于锤子了。也正是因为HTML5在facebook的大项目中越来越拖后腿,否则它不会上线一个React Native。所以,不要害怕去造个锤子。我在大学的时候,就曾经因为师兄的一个想法,尝试造了个锤子出来,用于把 文献资料格式(.bib)的文件 自动读取并自动排版。不用说,人工地复制粘贴排版也是妥妥的,但是只要文献资料够多,这个工作就成了机械无用功了,所以锤子还是很有必要的。
人类制造工具不仅仅是为了更加轻松地工作,更重要是减少机械的、重复的工作,而减少的这部分时间,也体现在了人类文明里了。所以,不要害怕造锤子。