专访小书作者刘传君:练太极的“读书机器”

原创 2017年08月03日 14:27:05

访谈嘉宾:刘传君

这里写图片描述

刘传君,创过业、做过产品、一个爱读书,喜欢分享的程序员。先后在图灵社区出版了《HTTP小书》《Git小书》《Vue.js小书》《Swift iOS开发小书》。


访谈实录:

创业的经历让我无比清晰地认识到,我更愿意把时间花在技术本身

“如果你认为自己可以应对各种不期而来的事件,也有比较强烈的改变世界的动机,那么不妨试试!这次创业的经历让我无比清晰地认识到,我更愿意把时间花在技术本身。”


介绍下自己曾经创业的经历。有哪些感悟想跟其他创业者分享?

那次创业已经是10年前的事儿了。我和一位同样是技术出身的合伙人,一起做了款OA产品。我们计划通过朋友推介的方式推广这款产品,如果客户想要定制的话,我们也不拒绝。但是实际工作中,我们发现销售过程占据了我们更多的精力,而且和客户沟通过程中的模糊需求、关于工期和价格的谈判都令我感到不适。因为我本人还是希望可以有大块的时间专注于技术,所以放弃了这次创业。

创业很有挑战,对个人的综合能力要求很高。什么样的人适合创业是需要评估的。如果你认为自己可以应对各种不期而来的事件,也有比较强烈的改变世界的动机,那么不妨试试!这次创业的经历让我无比清晰地认识到,我更愿意把时间花在技术本身。

目前,从事什么样的工作?

目前,我在一家ERP提供商工作,负责平台开发和新技术研究。和团队一起,我们创造了公司内第一个ERP产品的二次开发平台。这个平台最初只在公司内部小范围使用。2008年“512大地震”时,我带领团队基于此平台的快速交付能力,开发出并在一周内上线了赈灾物资分配系统。随后,公司开始更大规模地基于此平台开发产品。

关注哪些技术领域?

产品开放和技术关注是相辅相成的。目前,我关注Swift、Node.js等技术。

语言的选择很重要。iOS系统的Objective-C语法比较特别,我无法接受。但是,Swift就很有主流语言的样子,并且苹果官方也非常支持它。至于Node.js,我喜欢它的自由开放,会考虑把它作为后台开发语言逐步替换之前的C#。这样的话,未来的产品就可以运行到Linux系统下。在我看来,这可能是ERP开发的技术机会。

业余时间,我也会学习操作系统开发,准备花几年时间做一个“能跑”的系统。

倾慕Unix哲学

“甚至,在写书和写文章的时候,我会认为单行命令远超过若干个截图,简洁可以带来更高效地知识传递。”


您曾说过自己倾慕Unix哲学,可以分享下自己对Unix的理解吗?

是的。我欣赏Unix的极致简洁,还被Unix成功地灌输了不少观念,比如说管道的设计理念,这使得各命令可以非常方便地进行组合。每个命令都专注于特定的功能,组合起来就可以做到多样变化。

甚至,在写书和写文章的时候,我会认为单行命令远超过若干个截图,简洁可以带来更高效地知识传递。我在写《HTTP小书》的时候,不会像大多数人一样使用浏览器发起访问、显示响应,而是尽可能地使用curl命令。前者往往需要截图,一个操作截图就可能需要占用半页篇幅;而命令行可能就是一行命令和几行输出。

常年混迹互联网技术圈,您认为技术人身上有哪些闪光点?存在哪些不足?

我曾经做过地区的.Net技术俱乐部,组织技术人士进行线下的交流。事先,我会征集活动主题和会议地点,然后召集对.Net技术感兴趣的技术人参加。这段期间里,我和微软有了良好的互动关系,一方面传播了技术知识,一方面聚集了不少热心的技术高手,彼此间分享观点、相互支持。

我也常常混迹一些线上的论坛,像是Stack Overflow、SegmentFault、掘金等。因此和很多技术人员有了比较深层次的交流。他们低头做事,专注技术实力的提升,或许沉默寡言,确是专注认真、勤奋上进的典范。

不足的话,少部分人身上是存在的。我曾看到过一些网络论坛上的评论,其中不免有些卖弄、推销或是鄙视他人价值观的,阮一峰的博客上就常常可以看到类似的言论。我在Stack Overflow上也会查找问题,偶尔提些问题和回复问题。在这里,很少存在卖弄或是攻击他人价值观的情况。我希望技术人士能够更加专注问题讨论本身,而不是其他。

有书相伴,时光总是美好的

“农村长大的我,对山水风景很喜爱,对周围的人文则只想躲离。读书可以让我以最低的成本看到外部的世界,给我源源不断地提供新的知识和乐趣。”


您平时酷爱读书,读的书全部是技术书吗?

以IT技术书为主,医学史类也很喜欢看。医学史让我从发展的角度了解常见疾病及其预防方式的来龙去脉,帮助我了解身体的运作方式,做到有意识地爱惜身体,这本身就是很酷的事儿。也会看些历史和地理方面的,小说也有不少。

有哪些钟爱的读书方式?

就是一字一句地读。每当看到有触动或者关注的,就用笔画下来。技术书的话,一定要写代码验证。还有一个“恶习”,就是把认准要读的书封撕掉。因为我喜欢纸的感觉,不喜欢封面的塑料。

有价值的书,要反复读。比如我在研究HTTP的时候,就买了几本一样的书,车上、办公室、家里各放一本。6个月里,写了很多验证代码。

练太极的“读书机器”

“小说《假如明天来临》对太极的描写,让我认识到太极原来可以那么酷!总之,我爱上了太极,并且坚持了下来。”


我们想知道,除了读书,平时还有哪些消遣活动?

听到我每年读50本书的时候,很多人都很惊讶,说我是“读书机器”。农村长大的我,对山水风景很喜爱,对周围的人文则只想躲离。读书可以让我以最低的成本看到外部的世界,给我源源不断地提供新的知识和乐趣。从小就爱读书,它已经成为了我生活中最可信的一部分。

有一段时间,“量化生活”的说法很流行。所以,我就想观察下自己读书的数量,我发现,可以做到每年阅读超过50本的书。有书相伴,时光总是美好的。

除了读书,我有一段时间真就不知道干啥。不看书的话,会散散步、爬爬山。知道不健康,但是不知道怎么改。后来我发了狠,尝试了一些运动。但是,我总觉得是为了解决问题不得已而去做的,所以内心对运动也并不积极。

闲暇时,我看过一本叫作《假如明天来临》的小说。故事里女主角特雷西蒙冤入狱,在狱中不断求生,越狱后惩治恶人,最终走向自由。特雷西被禁闭在狭小的黑囚室的时候,决定练习太极来保持体力。

小说对太极的描写,让我认识到太极原来可以那么酷!总之,我爱上了太极,并且坚持了下来。

坚持写作短小精悍的小书

“因为喜爱读书,我会关注读书的成本问题。我一直坚信,存在一种降低阅读成本并且可以快速入门的方法,这个方式可以由作者把信息更好地组织来达成。”


您曾在图灵社区先后写作了四本电子小书。为什么会坚持写作短小精悍的小书?

因为喜爱读书,我会关注读书的成本问题。我一直坚信,存在一种降低阅读成本并且可以快速入门的方法,这个方式可以由作者把信息更好地组织来达成。

坚持写短小精悍的小书,是因为我有自己的原则。

  1. 关注单一。讲某个问题时,去掉和当前问题不直接相关的信息,一点也不要。

  2. 代码优先于文字。读者可以很容易地把代码跑起来,代码懂了,文字不必看。

  3. 命令优先于截图。能够用命令和它的输出说明的,不要去截图说明。实际上,我在《git小书》里没有添加哪怕一张的截图。

  4. 最佳方案优先。完成一件工作可以有多种方法,首先介绍当前我认为最好的。

电子书的优势是,你在阅读的时候可以直接复制代码来做验证。比如《Swift开发小书》里的代码都是一整段的,读者可以直接复制粘贴到IDE内运行。这样就不必通读全章,然后把分散于多处的代码拼起来去运行。电子书的另外一个好处是,当我觉得我把整本书需要承载的知识都讲清楚的时候,就可以收手,不必为了篇幅的问题而勉强自己。

是否有计划出版一部“大书”?

是的,我也在琢磨出一本厚书的问题,毕竟铅字对我还是有诱惑的。《Swift iOS 开发小书》出来后,我依然在继续Swift的研究。目前,关于Swift的博文也积累了很多。

什么样的技术书是您所推崇的?

我挑书的话,一般会看前言和第一章。如果前言部分有作者自己的感受,而不是仅仅罗列事实,那么我会认为他的文字有温度。如果从第一章的内容就可以看出全书的脉络,我基本上认为作者的架构能力强,组织材料精确。《重构:改善既有代码的设计》就很符合上面的标准。

不符合我的希望怎么办?事实表明,这样的好书总是比较少的,特别是新技术刚刚出来的时候。这时的官方文档常常是唯一的选择。阅读下来确实不容易,有技术本身的障碍,有语言的障碍。硬着头皮看下几章后,也就顺了。有个说法叫作温书,反反复复地看直到把一本冷书变得温暖,回报也就来了。


更多精彩,加入图灵访谈微信!

这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Apache 使用ssl模块配置HTTPS

Web服务器在默认情况下使用HTTP,这是一个纯文本的协议。正如其名称所暗示的,纯文本协议不会对传输中的数据进行任何形式的加密。而基于HTTP的Web服务器是非常容易配置,它在安全方面有重大缺陷。任何...

Android设计模式学习之观察者模式

观察者模式在实际项目中使用的也是非常频繁的,它最常用的地方是GUI系统、订阅——发布系统等。因为这个模式的一个重要作用就是解耦,使得它们之间的依赖性更小,甚至做到毫无依赖。以GUI系统来说,应用的UI...

面试题:8个试剂,其中一个有毒,最少多少只小白鼠能检测出有毒试剂

面试题:8个试剂,其中一个有毒,最少多少只小白鼠能检测出有毒试剂方法1:用3只小鼠,能组合成8种状态。 第一只喂食【1、3、5、7】四只试剂 第二只喂食【2、3、6、7】四只试剂 第三只喂食【4、5、...

【笔记】编译报错error: cannot convert ‘main(int, char**)::sockadrr*’ to ‘const sockaddr*’ for

今晚没事写一个demo做测试,编译的时候遇到如下报错: [penny@centos-system socket-demo]$ g++ client.cpp -o client.o client.cp...

大型分布式数据库中间件MyCat的安装与使用

官网资料MyCat官网:http://www.mycat.io/MyCat权威指南:http://www.mycat.io/document/Mycat_V1.6.0.pdfMyCat下载地址:htt...

VMware宣布开放大部分虚拟机工具

贴出者为 Anonymous Anonymous写著 VMware宣布,开放“大部分”VMware工具作为开源软件,而且这只是作为VMware公司“Open-VM-Tools”项目的一部分。 VM...

delphi相对数据库连接

搞了好久 今天在网上找了一个 方法procedure TForm1.FormCreate(Sender: TObject); begin SetCurrentDir(Extractfilepath(A...

Flask和Celery的使用

显示更新状态和结果The above example is overly simple, the background job is started and then the application ...

Java中堆和栈的区别

堆: 是大家共有的空间,分全局堆和局部堆。全局堆就是所有没有分配的空间,局部堆就是用户分配的空间。堆在操作系统对进程初始化的时候分配,运行过程中也可以向系统要额外的堆,但是记得用完了要还给操作系统,要...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)