资讯专栏INFORMATION COLUMN

Nicholas C. Zakas:我热爱互联网技术的种种异端

PascalXie / 2436人阅读

摘要:图灵社区看来,移动互联网开发会成为下一行业焦点,你觉得呢移动互联网开发已经是焦点了。图灵社区现在有很多基于改进的语言,比如,等等。热爱跨浏览器开发带来的挑战热爱互联网技术的种种异端,热爱业内的同行,热爱你的工具。

  

非商业转载请注明作译者、出处,并保留本文的原始链接: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 的时间非常多,有时候是看别人的项目,有时候是弄自己的。我在上面经常看到有人讨论代码该怎么写,这样写是为什么之类的,都非常精彩。而通过看别人的代码真的能学习到很多东西。在碰巧遇见自己有感觉的项目,而又认为自己可以提供一些不同思路时,我甚至会为这些项目贡献一些代码。

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/87678.html

相关文章

  • 高程3总结#第20章JSON

    摘要:语法语法可以表示三种类型的值简单值使用与相同的语法,可以在中表示字符串数值布尔值和。对象对象作为一种复杂数据类型,表示的是一组无序的键值对儿。如果字符串长度超过了个,结果中将只出现前个字符。 JSON 语法 JSON语法可以表示三种类型的值 简单值:使用与 JavaScript 相同的语法,可以在 JSON 中表示字符串、数值、布尔值和 null 。但 JSON 不支持 JavaS...

    Hwg 评论0 收藏0
  • JS学习笔记(第19章)(E4X)

    摘要:的类型类型创建对象的方法调用构造函数使用字面量将数据直接指定给一个变量。表示解析器应该忽略标记中的处理指令。这三个设置会影响对传入到构造函数中的字符串以及字面量的解析。 showImg(https://segmentfault.com/img/bVbvHVV?w=737&h=593); 1、E4X的类型 1.1 XML类型 1、创建XML对象的方法: (1)调用构造函数: var x ...

    lijinke666 评论0 收藏0
  • 高程3总结#第19章E4X

    摘要:在不给这个方法传递参数的情况下,它会返回所有后代节点与使用相同,而传递一个名称作为参数则可以限制结果。,表示解析器应该忽略标记中的处理指令。数据序列化相关的设置,表示在序列化时,每次缩进的空格数量。 E4X E4X的类型 E4X定义了几个新的全局类型 XML,XML结构中的任何一个独立的部分 XMLList,XML对象的集合 Namespace,命名空间前缀与命名空间URI之间的映...

    DandJ 评论0 收藏0
  • 前端资源分享-只为更好前端

    摘要:一团队组织网站说明腾讯团队腾讯前端团队,代表作品,致力于前端技术的研究腾讯社交用户体验设计,简称,腾讯设计团队网站腾讯用户研究与体验设计部百度前端研发部出品淘宝前端团队用技术为体验提供无限可能凹凸实验室京东用户体验设计部出品奇舞团奇虎旗下前 一、团队组织 网站 说明 腾讯 AlloyTeam 团队 腾讯Web前端团队,代表作品WebQQ,致力于前端技术的研究 ISUX 腾...

    zxhaaa 评论0 收藏0
  • 前端资源分享-只为更好前端

    摘要:一团队组织网站说明腾讯团队腾讯前端团队,代表作品,致力于前端技术的研究腾讯社交用户体验设计,简称,腾讯设计团队网站腾讯用户研究与体验设计部百度前端研发部出品淘宝前端团队用技术为体验提供无限可能凹凸实验室京东用户体验设计部出品奇舞团奇虎旗下前 一、团队组织 网站 说明 腾讯 AlloyTeam 团队 腾讯Web前端团队,代表作品WebQQ,致力于前端技术的研究 ISUX 腾...

    JouyPub 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<