首先给大家介绍一下自己吧
大家好,我是 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 的高阳也是辍学生,我猜他应该也不会后悔当初的决定吧。这种事本来就没有对与错,自己选择的路,跪着也得走完。
但是我还得告诫各位莘莘学子一句话:「比尔盖茨之所以成为世界首富,不是因为他辍学了;马云成为中国首富,不是因为他丑」。我在我的博客中也经常会写「学历代表过去,能力代表现在,学习能力代表未来」,一个人的成就和辍不辍学没有关系,而是和自己的努力程度有关。
据说,关注二维码的同学,运气都很不错
本文参与了 SegmentFault「我的编程之路」计划,欢迎正在阅读的你也加入,一起分享。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。