照旧翻开去年此时的2015计划,发现字里行间已然少去了太多热度与激情,留下的则是少许岁月峥嵘的战战兢兢。一年就这样又过去了......

岁末年初一夜间,你的情怀似云烟。

如果人生有什么永恒,那就是时光的流逝与岁月的变迁。有的时候,会想着要打点鸡血,而有时又想扮只低调程序狗,管他狗尾巴是不是会沾灰。

这不是一篇简单的2015回顾、2016规划,应该是我自己的一些归纳与总结,涉及技术、读书、产品等方面。

一. 看看2015的那些决心吧!

2015年要精减些技术了,腾出些时间,把放下了不短时间的太极拳重新练起来,身体第一位吖!

上半句——2015年涉及的技术不是减了而是加了!2015年涉及了Haskell、Scala、Erlang、Clojure、Go、PHP、 ASP.NET MVC、Python(Flask/Django)、Ember.js、Backbone.js、CanJS、Docker,可能还有些零星的一时半会儿没记起来。

下半句——练习太极拳仍是有一搭没一搭的,缺少恒心和好习惯养成。

考虑用 ASP.NET MVC或Flask或Node.js或PHP + Backbone做点什么;

还是花了些力气了解 ASP.NET MVC Get√,Flask Get√;PHP and Backbone也Get√;Node.js几乎无暇顾及。

HNS

HNS是什么?H——Haskell,Get√;N——Node.js,未落实×;S——Scala,Get√。

从技术角度而言,对于喜欢研究的我来说,除了Node.js,基本都兑现了自己的计划,还有不少计划外的,可以给个赞。

二. 对2015涉及到技术的归纳

ASP.NET MVC——感觉 ASP.NET MVC足够成熟,风格良好,但感觉用的人偏少?它足够用来构建稳健的商业应用,特别是, ASP.NET MVC也是开源的。顺带说说微软,新的CEO带来了新风气,微软在2015年的一系列政策转变,以及开源力度的加强,还有Windows 10的推出,都是正向好事情。

Flask/Django——两种不同思路的Python框架,但都很优秀。Flask核心小巧,DIY范儿。它的小巧不代表它只是个小玩具,按需添加不同的包,DIY后的应用也是够强健。而且Flask的生态也比较成熟,可选包不少。Django则类似于Rails,一条龙式解决方案,把格子填好后就能交单。其新闻内容网站起源的背景,使得它的管理功能很方便,这也是我比较羡慕的。

Backbone/Ember/CanJS——Backbone.js给我的感觉就是比Java还啰嗦,一个简单的功能都可能要手工写上不少代码,代码驱动,我后来忍不住了......Ember,确实很强大,非常喜欢它的定制组件功能,Routing绝对是它的命根。跟AngularJS 2一样,Ember.js的版本也在大翻新之中。CanJS是一个让我感觉刚好够用的框架,功能也够,简洁性也好,使用方式很对我胃口。定义好Model,写个定制组件,功能就出来了,配合CanJS,分别用纯前端、Go后端、PHP后端三种方式写了个天气预报组件,本来还想用Scala作为后端语言写一个的,终究没弄。

enter image description here

Haskell、Scala、Erlang、Clojure、Go、PHP和Python——我把几个语言放在稍后的位置讲了。Haskell绝对是一门技法繁多、值得长时间研究的好语言,但貌似应用较少,有一种“情深缘浅”的感伤。Scala算是我心仪的语言,前一阵子看到某文里的一句话,大意是“Scala的开发者已逐渐分化成两派,一派致力于简化Java平台上的开发,一派热衷于函数式”,这句话讲得真够贴切,你可以把Scala用得很简单,却也可以将其复杂性发挥到相当程度,就看你自己怎么想了。Erlang,个人认为Erlang是一个很无趣的语言,就是send/receive来来去去,一生只做一件事久了好无趣。Clojure,原本对它并无特别感知,但不知是何缘故,现在我对其赞赏有加,也是目前正在用的语言,直接面向AST,神奇的括号,造就了Lisp,于是又有了Clojure......** Go**,我认为Go作为后端语言(如API提供)还是很有优势的,性能/简单程度的平衡做得比较好,但为何在那个TIOBE榜把Go踢出了50名之外了呢?还有就是Generic真的不需要吗?PHP无需多言了,最好的语言没有之一。Python,原来我一直青睐Ruby,但多少年来Ruby的进步总是不太明显,有一种“恨铁不成钢”的感觉,混迹于“脚本”境地,Ruby与Rails之间性能问题的口水战,都极度让人生厌。恰好平时涉及到一些数据分析,而Python在这方面是强项。于是,我就重拾Python,2015用Python做了些啥?稍后就说了。对于Python,好多教科书式的文章或书籍开篇就是“Python是一门简单的语言”,但真如此吗?我看没这么简单......

几年下来,博客换了好几个地方,百度空间→新浪博客→点点→知乎专栏,但都不是太尽如人意,最要命的就是人家说关就关了。而且你要迁出的话,人家圈的地儿人家说了算,给你设置重重障碍、种种不方便。所以,2015年申请了域名、阿里云ECS。然后,鉴于以往的第三方博客系统都不能百分百如自己所愿,还是自己动手写一个吧,用的就是Python开发栈。三五千行的代码,能够按自己意愿搭建功能,也是一件比较惬意的事儿——我的博客:「瓜园耕读」

目前工作上一些适合使用脚本自动化处理的事务,我也会首选Python。

enter image description here

Docker——初步尝试了Docker,Docker绝对是一个很有趣并且很实用的研究方向——用Docker配置开发环境。

三. 我的读书

总体上说,2015年读的书比往年少了,但也更聚焦了。大致列一下2015年读过并对我产生一定影响的书单:

  • 「从0到1:开启商业与未来的秘密」——倒不是说天天就想着赶时髦创新、创业,才去看这本书,而是这本书总能在我想不到的地方给我立个提示牌,了解到许多“自然”法则的本质——比如一堆的 Pets.com、PetStore.com、Petopia.com为什么最终成了过眼烟云......
  • 「参与感:小米口碑营销内部手册」「周鸿祎自述:我的互联网方法论」——本土互联网思维的代表,比不上「从0到1」引经据典的广阔视野和理论水平,但确实是从底层厮杀摸爬出来的,平实的乡土气息更适合国情。
  • 「Scala与Clojure函数式编程模式:Java虚拟机高效编程」——对于喜欢Scala和Clj的我来说,没有比这更吸引我的了,如果语法是招式,模式就是内功,这本书我是赞赏有加。
  • 「Clojure经典实例」——同样还是一本未偏离我函数式口味的书,我已将其当成了案头查阅必备。
  • 「程序员的数学2:概率统计」——非常棒的日系书籍,开阔了思路。懂数学才是好程序狗。是畅销书「程序员的数学」的第2弹!
  • 「凤凰项目:一个IT运维的传奇故事 」——就当成IT狗的故事来看,个中感悟自己知道......
  • 「你不知道的JavaScript(上卷)」「JavaScript面向对象精要」「精通JavaScript开发」——前两本将概念讲得很透彻,最难得的是还很薄!后面一本是提高篇,偏向工程化指导。
  • 「Modern PHP(中文版)」——总兜着PHP的老思维是不对的,适当补充新变化,跟上趋势也很重要。
  • 「Flask Web开发:基于Python的Web应用开发实战」「Python Web开发:测试驱动方法」——前者是Flask,后者是Django,Python Web开发两强(当然还有其他)。
  • 「Ruby元编程(第2版)」——Ruby方面的经典,现在Ruby书越来越难得一见了。但这本看了,则是思维上的提升,并不限于Ruby知识。

还有一些想看没来得及看的,先列入待读书单

  • 「写给大家看的设计书(第4版)」——一本经典的设计书籍,写程序总能从设计思维里学到些什么,我始终觉得。 -「Scala 并发编程」——这本必须不能错过。Scala说起来不是一门简单的语言,不简单就要多学习。
  • 「明解C语言(第3版):入门篇 」——需要回顾一下C的记忆,这是一本直接明了的C语言好书,在日本畅销几十万册啊。
  • 「JavaScript Web应用开发」——同样是一本偏工程化角度的JavaScript书籍。
  • 「计算机程序设计艺术」——TAOCP!

书太多,无法详述。也许还有一些遗漏的书单没列在上头。

读书感悟

  • 引进的好书是越来越多了,但也就越来越挑花眼的感觉。对从头开始掌握一门技术的开发者来讲,其技术书的选择,我觉得一般最小配置是:一本入门书、一本进阶书,再加一本案头参考(及官方手册)性质的。

  • 而即使再牛的牛人写的书,也会有遗漏的技能,看另一个作者的书,你总能找到不一样的风景。

  • 一本好书,抵得了同领域平平淡淡的一摞书。一本讲述语言精髓的好书,是对应语言之上形形色色框架的基石。勿在浮沙建高楼,而多少人是住在浮沙上的高楼里的呢?

  • 有些书你花几十元,里面干货十足,犹如一座宝藏。同样有些书,却不知所云食之无味。选好书,不是一件容易的事。要能遇上两三本从心底里震撼自己的书,也是需要机缘巧合的,一旦遇上,这些书对你人生的影响至少是数年时光。但这样的书确实系凤毛麟角。一些书可是非读不可,而大部分吸引你的书基本上并不属于此类型,只是让你觉得外延“增值”而已——如果按此标准,每年实际上只需阅读少量的书,就能让你得到提升——那么,为何不爱读书呢?

  • 老有人说嘛书都看,嘛语言都撸。我说人一辈子会个几门语言真不是什么特别的事儿。看书亦是,多看点书也没啥,有些书一两天可以看完,而有些一年都不一定吃得透,看书是态度,看你怎么看,路各不同。

  • 一门技术在你无论是自主还是被动地急以掌握它时,阅读的急迫性和驱动力才会显现出来。然阅读完一本书,待你上手了该门技术之后,阅读的驱动力就从客观上大幅减弱。因此,如初恋,第一部带你踏入新的技术领域门槛的书,哪怕不是那么好,你也会对它印象深刻。真的需要那么多书?其实,更多的是读书情怀。这是一个阅读时代,坚持阅读就好比在心中植入了一盏明灯,日积月累,思想不断充实和吸收,坚定自己获得突破的信心,并成功。

  • 即使再没有时间,每天坚持至少看10页书,心里会有一种充实感,这是习惯的力量。虽然现在视频很多,但从循序渐进及条理性角度,其无法与读书相提并论。

  • 既然想读书,就不要怕花时间——有童鞋问:看书只看代码和其上注释是否可行?我说看你效果,但应该不行。童鞋又说那X百页的书至少要看三个月。那我也只能是说看读书效果再考虑是否可行了。其实我心想:三个月一门新技能Get√是件很划算的事情,一些机理还是在文字里,如果看代码就成那肯定是囫囵吞枣。

  • 看书时的注意点

    看技术书看到50-70%的时候,是一道坎。因为前面基本的内容都了解过了,好奇心减弱,再加上内容安排不紧凑、啰啰嗦嗦的,就容易犯困。看书也是要有恒心的,越过这道坎,就如长跑越过极限期。

    学啥技术都不容易,别被书上、大会一开始就说的“本语言最大特点是简单易学”所迷惑。例如学蒸蛋,学完是简单,但要想蒸出鲜嫩的好蛋羹,这些简单的步骤方法你不懂还真没辙。而要掌握这些方法,不日积月累摸索,不借鉴别家总结,也是万万玩不转的……学技术如学蒸蛋,大道至简,没有捷径但有规矩。

    看一本书,能够较容易地看出一个作者的技术背景,因为其往往会拿出其熟悉的背景来比较、借鉴或比喻。透过这点,也能够很快发现作者在其他方面的局限性。所以,书不是万能的,一本书只是“抛砖”,像拧干的海绵一样通过各种渠道广泛地吸纳相关知识才是“引玉”!

    找到方法和感觉很重要。有时候,为了某个东西而直奔它是没太多效果的,往往是你从别处得到、领悟到其他东西之后,才反过来帮你了解最初你想了解的东西。多么痛的领悟~这也许就是读书的另一个重要价值,书读到一定程度,这种感觉尤甚。起步→进阶→成熟,各阶段的感觉和方式各有不同。

  • 对于图书市场的想法

    图书策划可以考虑作为一个向社会开放的职业,以解决引进质量问题、本版质量问题,并提升本版书竞争力。现在这个环节比较封闭,还有很大局限性。

    出版社应该出一些高质量但不一定有大市场的技术领域相关书籍。这些书不要算具体编辑的业绩。这些书对出版社而言也是有价值的:主要服务于品牌度的提升,口碑。这些是无形收益。比如Ruby和Rails、Haskell、OCaml这类的。

四. 我的产品观

2015年感觉自己的产品思维和新鲜度都有点停滞,不知道是业界本身停滞(或因成熟了才如此)?还是确实是我自身的原因?这也是我困惑的地方。看起来还是要多读书多充电、多讨论和多借鉴啊。

记得遇到过这样的产品:自己还是比较满意的,但独有一个自己比较依赖的功能迟迟没上,导致自己最终选择别的替代产品。但这并非问题,问题在于:一你的主流用户群体是哪一类?二针对这个主流群体最有价值的功能是什么?我觉得这才是有意义的思考。

其实,每个人心中都有最好的产品,搞不清楚怎么设计的时候,就去琢磨下心中的那些最好产品吧,这比去找一堆堆指导原则实用。比如,在App设计讨论上,我不是太喜欢听到处处照搬什么指导原则,比如左滑一定是删除,最好用大量产品示例的剖析和演示来说明讨论。

产品的设计,其实从概括角度来看,脉络应该是明确的,主要是两个视角:

  • 产品/业务视角:业务理清楚→分门别类地划分清楚→怎样交互→怎样展现。
  • 技术视角:分门别类后的功能划分→可扩展性/性能/效率/稳定性之间的平衡,这个是要看水平的→技术栈的选择。

当然,这不是单向和一是一二是二的关系,应该是迭代和适度交错。蛮考验人的。

当初做这个个人博客的时候,一开始选的是PHP技术栈,已完成了整体的80%了,但鬼使神差又用Python重写,至于为什么呢?想想也是醉了......

五. 2016

2016的计划?还真是纠结不已啊。粗粗的一点想法,大概也只能代表当下吧:

  • 技术:Docker。Java + Scala/Clojure、Python、Perl 6、PHP。AngularJS 2.0(TypeScript)/React。
  • 生活:还是练好太极、练好身体。
  • 继续读书嘛!

甩一甩2015年沾在尾巴上的灰,迎向2016年......

enter image description here