首先给大家介绍一下自己吧

大家好,我是 justjavac,一名全栈工程师,目前正在出版《代码之谜》。熟悉我的人可能知道我还有一个中文昵称「迷渡」,取「雾失楼台,月迷津渡」之意,一般用在豆瓣或者其他非技术社区。凡是在技术类社区写专栏或吐槽,都使用 justjavac 这个 ID。我不太会做自我介绍,大家还是直接在百度或 Google 搜索 「justjavac」 吧。

你对大家普遍称呼你 JJC 有什么感想?

哈哈,难道 JJC 除了 JustJavaC 的首字母缩写,还有别的意思吗?

耐克曾经为程序员做了一个红极一时的广告词:「just do IT」,于是我就给自己起了一个网名 just。当时研究 Java 和 C 比较深入,就把 java 和 c 加在了后面,以防止重复,这就是 JustJavaC 这个昵称的来源。因为 javac 也是 JDK 中的一个命令,所以很多人以为我的昵称是 Just Javac 的缩写,管我叫 JJ,对于这个称呼,我还是有必要纠正一下的。

简单谈谈你目前的工作吧

去年底从维基科技离职,今年正式加盟千行时线,负责 Hybrid App 技术栈的开发。千行时线是一家九零后的创业公司,在移动互联网的大潮下,帮助传统企业进行转型,算是一家技术型和顾问型两者合体的公司吧。我主要负责 PHP 的接口和 Hybrid App 的开发。

你的上一家公司维基科技和维基百科有什么关系?

这个嘛,其实就是 Java 和 JavaScript 的关系,雷锋和雷峰塔的关系,周杰和周杰伦的关系。

那就正式进入这次访谈的主题,讲讲你是如何走上编程的道路的

其实,我走上编程之路是命中注定的。从上小学起我就特别喜欢穿格子衬衣,果不其然,长大后成为了一名程序员。

我从小比较喜欢数学,小学时参加全国数学奥赛曾得过银牌,也是那次奥赛第一次见到了电脑。当时只是远远地看别人用,在一个黑色的屏幕上,啪啦啪啦的打着字,和我想象中的黑客简直一模一样,感觉非常炫、非常酷,就是人长得丑了点。

至于我第一次使用电脑,是在初中。教学使用的是 Windows,大概是 Win98,因为在我的印象中,时不时就蓝屏。

第一次编程用的是 BASIC 语言,当看到代码中的 I = I + 1 时,简直是三观尽毁啊~ 我去!这是什么鬼?谁能告诉我他们到底是怎么相等的?难道是我打开的姿势不对?后来也就慢慢入门了。和每一个初学者都类似,编的程序无非就是从1加到100,水仙花数,汉诺塔……

大概在初三的时候,我家买了第一台电脑,在这个电脑上编的第一个程序是 VBA,在 Excel 中处理我整个初三上半年的成绩。当我正为能百分之百升入重点高中而高兴时,发现了我编程生涯的第一个 Bug,导致我的成绩多出了十几分,不过即使再减掉十几分,也是百分百可以考上的。

上高中后没有开设编程课,主要是讲讲 WPS 和其他一些软件的操作。于是我自带 3.5 寸软盘,安装了 Pascal 编译器,我还在书店买了一本 C 语言的书。

当我写下 if (5>4>3) 时,居然得到了意想不到的结果,再一次三观尽毁啊。当我晚上回家时,怎么也找不到这本C语言书了,就这么着,一本新书只看了三天,我也就这么告别了C语言。当再次接触C语言,就是大学了。

C语言的书丢了,那这个 5>4>3 的疑问也就不了了之了吗?

没有书,还有网啊,拨号上网——插网线,拨号,打开百度搜索,快速打开前几个搜索结果,等页面都打开完毕后,断网,拔网线,再慢慢看。

此后在我的高中三年,我再也没有在书店看到过编程类的书籍,毕竟在我们县城很少有人买这种书。

大学的志愿我填报了两个:数学和编程。后来就来到了天津,正式踏上编程的不归路。这时就不是编程玩了,而是系统的学习编程知识。也慢慢接受了 i=i+1 是赋值,多个数比较要用「与」:5>4 && 4>3。再一次让我毁三观的是 Python,居然可以写 if 5>4>3,这简直就是不按套路出牌啊。后来再细想,其实 5>4>3 才最符合我们的使用和理解习惯啊。就像格雷厄姆在《黑客与画家》中说的那样:程序其实是给人看的,只是机器恰好可以运行它。

最终我也未能完成学业,2009年辍学创业,又进了另一个深坑。这次访谈时编程之路,创业的成功和失败就不多说了。

在编程过程中,或多或少会遇到一些问题,你有什么解决问题的秘诀吗?

看官方文档,可以解决掉一半以上的问题。剩下的问题可以通过 Google,StackOverflow,SegmentFault。

问题分好多种,有的是属于那种脑抽型的,比如拼写错误,解决之后想抽自己俩耳光。这种我基本都是默默的记录在 EverNote,毕竟家丑不可外扬。

有的属于常见错误,比如对库、接口、函数的使用错误,因为很多接口文档写的不是很清楚,还有一些文档本来就有歧义,这样在调用的时候就可能出错,最常见的就是 Java 的日期类和日历类。对于这种错误,我一般会整理在某个专栏上。

还有一些问题是对规范、对底层原理理解的不够深入,比如 IEEE754 的浮点数规范,HTTP 协议规范,JSON 规范。这些规范也都有中文翻译,我还是推荐程序员去读读。

有没有写过一些黑科技(狂拽酷炫屌炸天)的程序?

程序员最大的骄傲就是写过什么软件,所以要想了解一个程序员就去他的 GitHub。

我这几年面试程序员啊,大部分的简历都是做过 XXXX 系统,开发过 XXXX 网站,给 XXXX 政府做过 ERP。其实如果一个人热爱编程,对编程感兴趣,就不仅仅是为了完成工作任务,而是在业余时间为自己的这份兴趣付出了多少。

虽然在各种第三方 GitHub 排名网站上我的 star 数排到了全球前 50 名,但是干货却不多。

按时间顺序说说吧,ChromeSnifferPlus 是我维护了 5 年的一个项目,之前我也在 SF 上介绍过,一款 Chrome 浏览器的插件。当我们浏览一个非常炫酷的网页时,我们总想知道这个网站到底使用了什么技术,用到了哪些 javascript 库,这个插件就是干这个的。目前有全球的1万多用户,由于大陆墙的存在导致这个插件的国外用户偏多。

Flarum 中文站:原文太长就不展开说了,可以看看原作者 Toby 的文章「The Flarum Story」,我翻译了中文版 Flarum 的故事:我为什么开发 Flarum

推荐一些书籍或者编程大杀器给大家呗

说到编程书籍,我正好在 GitHub 上维护了一个书单:免费的编程中文书籍索引,目前已经有近1万个 star 了。

最后,有一本书必须推荐给每个程序员看看:《颈椎病的预防和治疗》。

能谈谈你的新书《代码之谜》吗?

说来惭愧。

出书这事大概缘起 2012 年底吧,在这期间我还在翻译另一个系列文章《12 JavaScript Quirks》

我从大学时就开始写博客,在 ITeye 和 CSDN。当时 ITeye 还没有被 CSDN 收购,名字叫 JavaEye,主要以 Java 技术为主。《代码之谜》系列的第一篇文章是「其实你不懂代码」,发在了两个平台和我的独立博客上,也没有太当回事,发完就忘了。

到了第二天晚上我打开电脑刷微博,突然就看到了好几条私信,是图灵教育的陈冰老师发来的。再次之前我就知道陈冰老师,他策划出版的《大话设计模式》估计不少程序员都看过,也被当当评为终身五星级图书。但是没想到陈冰老师会给我发私信,我打开看了看,好像是说我的代码之谜系列不错,要找我出书什么什么的。

于是我又打开博客看了看,把我自己都吓了一跳,才一天的时间访问量就过万了。后来的连续几天都被推荐到了首页,现在这篇文章在2个平台上的访问量分别是18万和27万。

其实在之前也有不少出版社联系我出书,我都拒绝了。但是这次陈冰老师的私信,我有点心动了,于是答应了陈冰老师。

但是天有不测风云,后来有一天陈老师给我打电话,说他离职了。当时我的内心就纠结的,陈冰老师一走,我的书的策划和初版任务就交给了别人。通过几次的交谈,我决定取消协议,暂时先不出了。

书虽然不出了,但是还在一直写。也许有一天我会放到把这本书做成电子版,分享给大家。

哪些好的习惯程序员值得拥有?

懒惰。

有一些程序员很懒,懒到任何事情都交给机器去做。而另外一些则很勤奋,每天都孜孜不倦得做着重复单调的工作。之前我也一直是一个勤快的人,不过我一直努力变懒。

不要一级一级地打开资源管理器寻找想要的文件,写个脚本吧。自动搜索到想要的文件,或者更进一步,自动用 sublime 打开。编辑完了,还要自动打开比对工具去解决冲突。在机器面前,自己才是主人,不是仆人。

要习惯用命令行而不是鼠标,要动脑,要时刻思考自己的工作方式,改进自己的工作过程,让自己处在一个高效节能的工作氛围中,而不要浪费了自己的体力、精力、时间。

在你的编程生涯中有没有遇到什么有趣的事?

我清楚的记得第一次上电脑课的时候的一件糗事。

当时学校硬件条件有限,两个人公用一台电脑。当时有一个拍苍蝇的游戏比较火,但是我俩都不会进入这个游戏,于是壮着胆子问老师「怎么打开游戏啊?」。

老师看了我俩一眼,拿起鼠标告诉我们怎么从开始菜单中一级一级的找到游戏,怎么双击进入。完事后不忘嘱咐一句「上课可别玩游戏啊」。

等老师一走,我俩就打开游戏,一个人玩,一个人看着老师,玩的不亦乐乎。没多久老师就过来了,我小声告诉他「老师来了!老师来了!」。

这时他慌了,「妈呀,怎么退出啊?光问了怎么打开,没问怎么关闭」。

最后,毫无悬念,我俩被老师批评一顿。从那之后学会了神奇的 ESC 键。

现在 ESC 也依然是我使用频率非常高的一个键:输入法打错了拼音,想全部删除,不用反复按 Backspace 键,只需要按一次 Esc 键。上网时输错了网址,按 Esc 停止加载。填写表单时有错别字,按 Esc 清除。弹出框时,Esc 等于取消按钮。

你当初选择放弃学业后悔过吗?

如果我没有记错的话 SegmentFault 的高阳也是辍学生,我猜他应该也不会后悔当初的决定吧。这种事本来就没有对与错,自己选择的路,跪着也得走完。

但是我还得告诫各位莘莘学子一句话:「比尔盖茨之所以成为世界首富,不是因为他辍学了;马云成为中国首富,不是因为他丑」。我在我的博客中也经常会写「学历代表过去,能力代表现在,学习能力代表未来」,一个人的成就和辍不辍学没有关系,而是和自己的努力程度有关。

对哪方面技术的发展比较看好?

大数据和人工智能。

这两个领域的发展越是乐观,我越觉得悲观,不是为技术的发展悲观,而是为人类的未来。

我喜欢看的电影就是《黑客帝国》和《终结者》,里面描述了一个机器统治的世界,人类和机器曾经发生战争,最终人类失去可这个世界的控制权。

在进化树上亿年的历史进程中,曾经统治地球的生物千千万,但是最终都无一例外地失去了控制权,就连称霸一时的恐龙都灭绝了,而人类最终也会失去控制权。可能是人类进行星际移民后,长时间的生殖隔离产生了新的人类物种,最终征服了人类。想想克罗马农人对尼安德特人的征服,或者想想欧洲人对印第安人的征服。

再有一种可能就是像电影描述的那样,人类把智能赋予机器,然后机器的自主意识觉醒,反过来征服人类。回过头来看看机器的历史,最初机器就是机械,就是工具,需要人来操作,人来使用。人类赋予自己的第一个进步就是「自动化」,从此机器就可以自己完成一些任务,比如电饭煲,当饭做熟了后就自己关闭。再后来,人类又赋予机器「智能化」,这就是在电脑尚未发明之前的先驱们思考的问题之一「机器会思考吗?」

其实不必悲观绝望。其实我觉得还有第三种可能,那就是人机合一。有人说我不适合编程,适合写小说。其实这种可能也是我理性分析的结果,算是一家之言吧。

看看我们自己,如果把你的 Wifi 关了,或者把你的手机拿走一天,你是不是就觉得不自在了,从某种程度上来说,我们已经被「手机」奴役了,但我说的人机合一远远不止于此。我们对于手机的使用的「手持」,或者说是「装带」,顾名思义就是装在身上带着。

随着 Google Glass、 Apple Watch 的发布,还有各种各样的手环,我们对这些设备的定义是「穿戴」,穿在身上,戴在身上。我们通过这些设备手机身体的信息,包括走路、睡眠、饮食等,这些设备已经成为了我们日常生活的一部分。

那再下一步呢,就是「植入」,那时这些设备的重要程度已经不是生活的一部分了,而是身体的一部分。我们可以通过植入某些芯片来辅助我们提升身体机能,或者完成工作以及学习中的特殊任务等。

这时会出现一部分人疯狂反对人体改造计划,称之为保守派,他们认为人类应该保持自己「身体」的纯正,他们的观点是「被植入了芯片的人还能称为人吗?异类!」。就像当年南方古猿第一次决定从树上下来,艰难的直立起来行走一样,而「保守猿」则坚持自己的纯正,选择了继续呆在树上采食果子吃,「直立行走的猿还能称之为猿吗?异类!」。而我们,都是「异类」的后代。

从某种意义上来讲,南方古猿没有灭绝,他们只是进化了。生命之所以没有消失,是因为他们进化了。

所以,我最看好人工智能的前景。

薪尽,而火传也。

继续阅读关于 的文章



Fork me on GitHub