zoukankan      html  css  js  c++  java
  • 一名靠谱的JavaScript程序员应备的素质

    周五, 2010年8月13号, 作者: anutron

    小编: 这篇文章写于2010年作者工作在Cloudera期间,当时node.js还没有流行,很多人还瞧不上javascript这门简陋的脚本,文章提出应 该重视JavaScript,并提出成为一名靠谱前端工程应具备哪些能力。虽然年代似乎已经有些遥远,但文中的一些观点但现在仍然适用。

    当我尝试为Cloudera招一个JavaScript程序员时,我发现这项任务相当艰巨。找到一名真正理解JavaScript的人非常困难。不 过,这也证明了一件非常简单的事情,是时侯去研究JavaScript,并成为这个领域的专家了。过去的几个月,我发现了一些天才JS程序员并尝试去录用 他们。显然他们有非常多的选择。他们被各种公司的Offer困扰着。作为一个想招他们进来的人,这让我想起了第一次互联网泡沫时侯的一些事。(我承诺给其 中一位侯选人一辆凯迪拉克,但最终没有打动他)。最后他进入了另一家初创型公司。

    比较关键的一点是:作为一名JavaScript专家并不能只知道JavaScript. 如果你想专为一名靠谱的前端工程师 ,你需要在更多方面做得更好一点, 可能这些都没有写在JD里面,至少那些要求表现得没有JS那样突出。有些东西你只需要了解一下,但另外一些你需要精通(显然你需要非常精通JS,如果你想 成为一名真正的专家)。 其实,我只是一个普通人,我有博客,其他方面都跟一般人体差不多,但当我把跟HR说出我的要求时,HR告诉我“这个人根本不存在,你描述的是一个超人” 我又告诉他这是我每天都在干的。 他又坚持说“你真是大神一样的人”

    最后能称上JavaScript专家的人,终究需要一些什么技术,每天究竟需要做一些什么事,怎么判断哪些是天才,哪些是菜鸟,哪些是一般人,这是我列的一张清单:

    1. 你需要知道HTML, 你需要非常精通它。你需要知道 document types的作用和效果。 你需要知道即使你没有写TBODY,浏览器也会自动将他补上。你需要关注浏览器每一次升级所做的变动。学习这些东西,至少在我这儿你得这样。在你工作的时侯花点时间去研究下。

    2. 你需要了解CSS, 这样你才不至于后悔。我工作期间碰到的最多的问题就是跨浏览器的CSS兼容问题。一段同样的样式在不同浏览器中显示是不一样的。你添加了一个负的 margin-top值去实现排版,猜猜怎么了? 用户永远也点不到这个东西了,尽管你加了一个z-index,尽管你可以看见这个该死的东西。 或者你加了一组可以自动适应的CSS代码,但你要祈祷你的老板没有在IE里去看你的网页。最重要的一点,你要了解CSS,这是最有价值的一项技术。你不需 要非常精通,但至少能和草图做得一模一样,否则其他的事就不用提了。

    3. 你需要了解浏览器,你需要明白在IE浏览器中,如果你把 “” 放到DIV中,IE不会把它转换为DOM元素。但放到header里就可以,因为这东西是只读的。你需要明白在Array数组和Object最后加个逗号 会让IE出错。你需要明白IE里iframes里的元素会有偏移问题。而且并不是只有IE会出问题,Firefox在清除浮动时也会出问题,Chrome 里没事。你需要了解最新的webkit那些惊人的特性在手机和safari上面不一定有。

    4. 我提过JavaScript吗?我们需要了解JavaScript是怎样工作的,你需要知道传入方法 (function)的参数(arguments)对象是有长度的,而且是可以枚举的, 但它绝不是数组对象,更进一步,你需要知道如何将他转换为数组。你需要知道prototype的工作机制,并且知道在不借助框架的情况下如何使用它,并且 知道它的作用和优势是什么。你需要知道垃圾回收(garbage collect)什么时侯起作用,这点很重要,还有它什么时侯不工作。你需要非常善长抽象(abstraction)。你需要非常善于为你自己和别人设计 API。你需要了解怎样测试和管理你的代码。

    5. 你需要有像样的设计能力(design): 信息流, 图像设计, 用户体验设计, 代码设计。 你需要能向用户, 客户, 陌生人, 专家(随便什么人)提出正确的问题并有能力去解决他们的问题。不仅是讲出你的想法,你还要想办法去呈现给他们。你需要能操作Illustrator快速地 把各种框架草图(wireframes)拼出一个方案来,然后你可以到PhotShop中(这个你需要熟练掌握)把设计图画出来(visual style)。你不需要成为世界上最好的设计师,我当然也不是。但你要有能力告诉他们什么是好的,什么是坏,什么是杰出的设计。如果你能管理好你自己好的 设计,你就牛了。

    6. 你需要对服务器端非常自信。其实你并不是每天都只是写写JavaScript。大多数前端工作都只需要你 花一半的时间来写JavaScript,另外一些时间你需要处理一些其它相关语言的代码. Python, Ruby, Java, PHP.. 如果你只会一种语言,那根本不值一提。如果你只会JavaScript和PHP, 你马上会有一些需要用到其他语言的任务(其实这是一个很好学习新事物的机会)。应该会用一种框架,但是只知道一种的话也不算真正的了解 JavaScript.

    7. 然后还有许多其他的东西你需要掌握。你需要了解Git。Git很牛,我知道你经常听别人这样说,如果你发 现一个保守的人拒绝去学新的知识扩展自己,你需要让他明白他的错误。你需要知道一些shell脚本。在没有记事本,TextMate或其他编辑器的情况 下,你需要能够打开VI或者Emacs去修改一个配置文件(conf)。你需要知道怎么去编绎一些东西,怎么样去截取一个日志文件,解压一个压缩包 (tarball),加密一些东西,开启并配置服务。你需要有能力去关掉(kill)进程并跟踪调试一个堆栈。

    我甚至算不上一个熟悉敏捷开发流程,参与过开源软件项目或发布新版本的程序员,不过如果你认为你能够匹配我所列出的7条中的5条,或者全部匹配。那么,恭喜你,你就是传说中的大神。

    那么你成为大神后你会得到什么?你怎么知道多年处理那些乏味的IE6的BUG是值得的?好吧,你得到的是,你会每周都收到HR的邮件和电话。(这其 实并不稀奇,他们就像懂你的销售)。如果你想换工作的时侯,你甚至什么都不用做,告诉一小搓朋友或者发到你的twitter上,然后很多扇门就在你面前打 开了。你会有些新朋友,他们希望你加入他们的事业。当你加入时你会成为传说中的元老。你会得到股票,并设计一款产品的最初版本。你会得到一辆1967年的 凯迪拉克作为签约的报酬。在公司刚起步时我曾经诱惑过这样的家伙。大神是一名还不存在的产品的前端工程师。他指出一两年后这东西值很多美元,然后多年以 后,他可以告诉别人,“这是我做的”。现在已经有这样的一些人了,像已经有无数人使用的Twitter, Facebook, Gamil和Google Maps,像Iphone的界面,Github, YouTube,肯定有人说,“这是我做的”。

    这个人可能就是你。

  • 相关阅读:
    POJ 2752 Seek the Name, Seek the Fame
    POJ 2406 Power Strings
    KMP 算法总结
    SGU 275 To xor or not to xor
    hihocoder 1196 高斯消元.二
    hihoCoder 1195 高斯消元.一
    UvaLive 5026 Building Roads
    HDU 2196 computer
    Notions of Flow Networks and Flows
    C/C++代码中的笔误
  • 原文地址:https://www.cnblogs.com/wicub/p/3480210.html
Copyright © 2011-2022 走看看