非商业转载请注明作译者、出处,并保留本文的原始链接:http://www.ituring.com.cn/article/1791
尼古拉斯·泽卡斯(Nicholas C. Zakas)是前端咨询师、畅销书作者、技术布道者,世界顶级 Web技术专家,曾在雅虎工作近5年,离开该公司前负责 My Yahoo! 和雅虎首页等大访问量站点设计,担任界面呈现架构师。拥有丰富的 Web 开发和界面设计经验,曾经参与许多世界级大公司的Web解决方案开发,是《JavaScript高级程序设计》、《高性能JavaScript》作者。个人网站 www.nczonline.net,Twitter:@slicknet。
图灵社区:对各种 JavaScript 库的优点和缺点一直存在很多争论。在您看来,开发人员应该怎么选择合适的库?
Zakas:选择JavaScript库的时候,有几个非常重要的方面要考虑。首先,就是时间问题,也就是你的项目多长时间必须做完?如果时间很短,那最好选择你最熟悉的JavaScript 库。如果时间不那么紧迫,那你可以研究一下别的库。此时,必须要回答几个问题。还有谁在使用这个JavaScript库?这个库有人在不断完善吗?这个库的文档是否完整详细?这个库的背后有没有一个社区,假如你遇到了问题,能不能获得该社区的支持?是否容易找到具有使用这个库经验的工程师?这个库能解决你的所有问题,还是只能解决其中一部分?所有这些都是在选择某个 JavaScript 库时需要考虑的重要因素。
图灵社区:你对 HTML5 的未来怎么看?现在的宣传是不是太过分了?
Zakas:HTML5 对 Web 发展是一件好事儿。但不好的是,一些外行的非技术人员,不分青红皂白地给很多无关的东西都扣上“HTML5”的帽子,这才搞得 HTML5 这个概念满天飞。这与几年前“Ajax”的情况非常相似。从某种角度看,确实宣传上有点过了,仿佛 HTML5 会彻底改变每个人的生活。事实并非如此。HTML5 的意义在于为开发人员提供了更多的工具,利用这些工具能够创建更有吸引力的用户体验。
图灵社区:看来,Mobile Web(移动互联网)开发会成为下一行业焦点,你觉得呢?
Zakas:移动互联网开发已经是焦点了。今天,谁不关注移动用户,谁就要被时代抛弃。移动互联网可不是昙花一现,它将是一个时代。如果你真是在开发 Web 应用,那么就必须考虑移动体验,否则就会让别人抢占先机。
图灵社区:现在有很多基于 JavaScript 改进的语言,比如 Dart、CoffeeScript,等等。你认为 JavaScript 今后的路会朝着哪方面发展呢?是更加类似于 JVM 这种的中间层,还是仍然维持一个强大灵活的编程语言存在?或者说,对于专注于 JavaScript 的前端工程师来说,是否应该投入大精力去研究和使用 CoffeeScript 这种语言来简化工作,而不是纠结于 JavaScript 本身可能具有的繁复解决方案呢?
Zakas:我没觉得 JavaScript 有一天只会被当成一个中间层。Dart 和 CoffeeScript 很引人关注,这说明开发人员可能更希望 JavaScript 能多适应一些应用场景。最终,我想 JavaScript 会博采众长,吸纳其他语言中更流行的范式,从而使语言核心更完善。但我不认为将来的 Web 开发人员会只用 Dart 或 CoffeeScript 或者其他能编译为 JavaScript 的语言写代码。
图灵社区:你觉得 Node.js 怎么样?它会在服务器端开发中发挥重要作用吗?将来,Web 前、后端开发真能只用一种语言来做吗?
Zakas:我认为 Node.js 对未来 Web 应用的重要性难以估量。开发人员一直在寻找一个可以替代 PHP 的方案,以便更迅速、更容易地介入服务器端开发。而在服务器上写 JavaScript 代码就是一种方案。Node.js 不只是一个服务器端的 JavaScript 引擎,它更为高性能、高扩缩的 Web 应用提供了一个解决方案。正因为如此,很多 JavaScript 爱好者可能会转型为后端开发工程师。这样一来,前、后端的沟通会更加顺畅、直接,无论是面对面沟通,还是通过代码交流。
图灵社区:请问用 JavaScript 实现一些实用算法——比如压缩 ZIP 格式,是否可行?
Zakas:不仅可行,而且已经有人做到了!斯图尔特 • 奈特利(Stuart Knightley)就创建了一个叫 JSZip 的项目,让我们能够用 JavaScript 来压缩文件。我认为未来还会出现很多类似实用算法的 JavaScript 实现。在实现某些复杂的算法时,可以不使用 JavaScript,但这种可能性是永远存在的。
图灵社区:是否有必要强调 JavaScript 编码风格的一致性?在构建一个大型 B/S 系统时,如何以最佳方式划分 HTML、CSS 和 JavaScript 人员的职责?
Zakas:我觉得任何语言都需要强调编码风格的一致性。只要是团队开发,每个人都以相同方式编写代码就是至关重要的。这样大家才能方便地互相看懂和维护对方的代码。在一个团队中,HTML、CSS 和 JavaScript 的编码风格都应该保持一致。这也是我为什么要写《可维护 JavaScript》(Maintainable JavaScript)这本新书的原因,这本书里就解释了作为团队一分子,应该怎么写 JavaScript。不过,同样的原则也适用于任何语言。
图灵社区:异步、回调编程方式正被广泛使用,但很容易出现复杂的回调函数。虽然有 deferred 和 promise 这些模式,但对开发人员还是不小的挑战,请问未来是否有可能在语言层面有所改观?
Zakas:经常有人提出建议,希望添加一些语言特性来简化异步编程工作。JavaScript 语言层面到底会不会增加这种特性,现在还说不好,只能拭目以待。目前,有很多人认为回调和异步编程值得提倡,但我不那么认为。如果几乎所有方法都需要一个回调,那会导致代码很难调试和维护。我确实希望在不久的将来,JavaScript 能在语言层面给出一些解决方案。
图灵社区:今天,你涉足 Web 开发已超过 15 年,你当初怎么会选择这个行业呢?能否给中国的开发人员一些职业规划方面的建议(有朝一日也能成为像你一样的专家)?
Zakas:我进入这一行,纯属误打误撞。上大学的时候,我的专业是计算机科学,但 Pascal 和 C 语言这些课让我感觉很无聊。我讨厌整天坐在黑底白字的电脑屏幕前。当时,我想跟高中同学保持联系,有人告诉我有一种新技术,说是叫 Web。于是,1996 年我在 AOL 上建立了自己的第一个网页,然后把网址发给同学,以便他们知道我的近况。我还想知道大家希望通过这个网页了解点其他什么情况,结果维护这个网页就成了我的业余工作。我不断研究、尝试,在此期间自学了 JavaScript。结果大学一毕业,我就知道自己得在互联网行业谋份差事了。
我对 Web 开发人员最大的建议就是:热爱你的工作。热爱跨浏览器开发带来的挑战、热爱互联网技术的种种异端,热爱业内的同行,热爱你的工具。互联网发展太快了,如果你不热爱它的话,就不可能跟上它的步伐。这意味着你必须多阅读,多动手,保证自己的才能与日俱增。下了班也不能闲着,要做一些对自己有用的事儿。可以参与一些开源软件的开发,读读好书,看看牛人的博客。经常参加一些会议,看看别人都在干什么。要想让自己快速成长,有很多事儿可以去做,而且付出一定会有回报。
图灵社区:迄今为止,你已经写了 4 本 JavaScript 书。你怎么会想起来写这些书呢,眼下还有没有写书的计划?
Zakas:我从来没有真正有过写书计划。我第一份工作只干了 8 个月就下岗了(因为公司散伙了)。这就是我当时的处境,大学毕业才 8 个月,而且又失了业。我感觉真正的学习才刚刚开始。于是我就给自己找事儿做,也就是把以前做过的事儿都写出来。写一篇,就在我的网站(http://nczonline.net)上贴一篇。然后告诉以前的同事都来看。一个朋友回信说:“嘿,你写得非常好,为什么不给杂志投稿呢?“于是,我就上网找到几个征稿的在线杂志。第一篇文章发表在 DevX,后来又有几篇投给了 WebReference。我的文章很受好评,因此我也非常乐意接着写下去。后来有一天,我看了 WebReference 的一篇文章,说有另一位作者,她把自己写过的文章集合起来出了一本书。我心想:“噢,把文章集合在一块就可以出一本书?这事儿我也能干呐!”于是,我就给自己定了一个目标,坚持写,写本书出来。这就是后来的《JavaScript 高级程序设计》(Professional JavaScript for Web Developers)。
写另外三本书则隔了很久。《Ajax 高级程序设计》(Professional Ajax)实际上是 Wrox 的编辑策划的一个选题,因为我出版过一本书,所以他就找到了我。一开始我拒绝了,因为觉得可写的东西还不够多。但他坚持让我写,我最终还是应承下来。我很高兴又写了这本书,因为它后来也非常受欢迎。《高性能 JavaScript》(High Performance JavaScript)是通过雅虎出版的,当时是雅虎内部人员联系我写的。显然,另外一些人也希望写点相关的东西放在书里,但当时大家都没有时间动笔。所以,我就在他们已有成果的基础上做些修改,改到自己觉得舒服为止。后来又找了几位合著者,共同完成了这本书。
《可维护 JavaScript》(Maintainable JavaScript)是我最近才出版的一本书,内容源于 6 年前的一次演讲。我一直都认为这个主题很值得写,写成一本书都没问题,但就是不知道从何写起。去年 12 月的一个周六,我一觉醒来,突然觉得才思泉涌,满脑子都是写这本书的想法。我干脆起床,在电脑前坐了一整天,终于把脑子里的想法都落实成了文字。那一天,我写了大约 45 页。12 月份剩下的时间我都花在了写书上,结果不到一个月就写完了这本书。
目前,我还没有再写书的计划。我准备先搁笔一段时间,因为最近我一直都在写,都连续写了一年多了。确实有几个主题值得写书,但在此之前,我得等待灵感爆发的那一刻。
图灵社区:能否谈谈你的公司 Nicholas C. Zakas Consulting ?很多中国程序员也有创业的梦想,能分享一下你的经验吗?
Zakas:我的咨询公司实际上只有我一个人。我依靠自己的经验为互联网公司提供前端技术建议,包括性能评估、架构设计与评审、推行最佳实践等专业 Web 开发公司可能需要的各方面帮助。这为我积累了宝贵的经验,让我得以接触各式各样的公司,结识他们的团队,了解他们正在做哪些激动人心的事情。
对于想自己开公司的人,我可以给出的最好建议,就是要有自知之明。你必须得知道一些事儿,比如自己开公司没有工资,有时候一连几个月可能都没有收入。自己开公司要应对很多风险,如果你后面有家人支持,可能风险会小得多。我创业的时机很好,因为我还没有成家,也没有其他经济负担,所以我可以承受创业不成功再回头找工作的风险。但并不是所有人都像我一样。如果你真心喜欢做点什么,坚信朝哪个方向努力一定成功,觉得自己能承受得了风险,那就不要犹豫。
图灵社区:你经常上哪些在线社区?请给中国读者推荐一些有用的在线资源。
Zakas:我最近没怎么上网上社区,我是 Twitter 控,关注那些能告诉我 Web 技术发展走向的人。我很愿意多花时间在线下跟人交流,比如在公司里,或者在会场上,这样可以了解到最前沿的东西。
我泡 GitHub 的时间非常多,有时候是看别人的项目,有时候是弄自己的。我在上面经常看到有人讨论代码该怎么写,这样写是为什么之类的,都非常精彩。而通过看别人的代码真的能学习到很多东西。在碰巧遇见自己有感觉的项目,而又认为自己可以提供一些不同思路时,我甚至会为这些项目贡献一些代码。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。