月度归档: 2014 年 12 月

  • 转 [译] 为什么我们找不到前端工程师?

    原文为 Why can’t we find Front End developers? 作者是 Jose Aguinaga,前端工程师、用户体验设计师跟热爱 JavaScript 的软件工程师。

    正文开始


    有天,作者偶然在 Quora 上发现一个跟前端工程师及新创公司有关的问题:为什么新创公司很难找到前端工程师?

    该讨论串的原 PO 提到:

    (前略)我想多数人都同意前端开发比其他软件工程领域简单一些,那到底为何那些新创公司还是很难找到前端工程师?

    我看到几个不错的回应,这些回应大多一针见血。而根据过去我寻找前端职缺,面试前端工程师,以及平常在前端项目里的工作经验,以下提出我的个人意见:

    这是个相对新的领域

    首先最简单的答案就是 「这是个新领域」。很多人可能不同意这句话。因为前端工程几乎等同于网站开发,而网站开发领域也发展超过20年了。然而,作为一门实现用户界面(Interface)及用户体验(User Experiences)的技术,以特定的领域而言,前端工程仍是个相当新的观念。其中「工程」的部分更是在几年前才开始发展。

    时至今日,搞混Web开发与前端工程的情況仍所在多有,这怨不了谁。对多数置身Web产业外的人来说:Web开发介于网页视觉设计与其实现技术之间,存在着模糊的空间。说到底,前端工程师还是在做一些网站开发的工作,不同之处在于,他们只着重在牵涉使用者的部分。

    「前端」 这个实现使用者界面(UI)与使用者体验(UX)的技术领域,是近年来才出现的名词。在15年前或更久之前,人力被分成网页视觉设计与技术开发两种。但随着 Web 的成长,网页不再只有到达页(landing page)与营销的目的,对工程师的需求也明显增加。人们开始学习 JavaScript,后端技术,使用者体验,数据库,甚至是网站系统设计。如今,像是 AirBnB、Facebook 或是 Quora 等网页应用程序,在工程师的人力资源投注上也比在设计师上来的多。换句话说,产出网页的视觉设计,然后实现出来变得更加快速。这并不代表网页视觉设计较不重要,或是投注在其中的资比 20 年前来的少,而是今时今日对于 Web 工程师的需求比以前更大了。

    因为网站实现的技术牵涉到很多不同领域,90 年代中期的 Web 工程师们可以说是十八般武艺。他们可能兼做 DBA、系统管理者、后端工程师、运维(DevOPs)、软件工程师、用户体验工程师跟前端工程师。最近也是大家最怕去做的一件事,就是用 JavaScript、HTML 跟 CSS 把设计图上的样子刻出来,还要让他在浏览器上看起来有模有样。我想要能在前端的领域里悠然自得,除了得对视觉设计有些兴趣,某种程度还要是个被虐狂。

    很明显的,当你应付了几次 Web 应用程序大量的需求后,你会发现这一拖拉库的技术工作,需要各种不同角色的人分工完成。我不知道哪些工作比较费时,或哪种角色比较累(注1)。但现实就是,很多公司或网页设计公司发现:一个人不可能处理好各种技术细节。我之前提到的那些工作描述:像是后端工程师,DBA 等,都属于 Web 产业的一部分。记住,这些工作多数已经行之有年,但在 Web 产业中,都是在近十年才明白这些职缺所要求的技术能力。

    时至今日,仍有一些可怜的灵魂(在受苦)必须处理 Web 应用程序中所有的技术问题,我们管他们叫「全端工程师」,这么棒的人才可说比独角兽(注2)还难找。当然设计师也没多好找啦,需要更多信息的话你可以参考这篇:如何雇用一个设计师

    注1:我其实是在说谎,举例来说:做一个能在 IE 正常运作的网站就是件浪费时间的工作,而且你同时也在浪费你的生命值来做这件事。 注2:多数的全端工程师缺乏建立一个 Web 应用程序的技术深度,包括前端,后端或营运上。在资金充足的新创公司里,期待一个诸葛亮来处理三个正职的臭皮匠才能做完的事,是不切实际的。然而,我知道武林里有少数的高手(Ninja)可以单枪匹马解决上从 GUI,下至僵尸程序的问题。假如你们团队中有这样的高手,帮大伙一个忙,不要放他走。

    误解

    另一个很难找到前端工程师的重要原因 (对我来说这点最重要),因为这是一个被误解的领域。如同原 po 在他提问中所述,大多数人认为前端工程师是一个「相对简单的领域」。用一个之前流行的比喻 -「大多数人觉得 XXX 是(What most people…)」,我们来看看套上前端工程师会是怎样:

    大多数人认为前端工程师是:

    1. 拿 PSD 文件,图片或是草稿,然后把他转成网页。
    2. 有时候只是拿以前的 PSD 文件,图片或是草稿来设计(改一改)。
    3. 用 JavaScript 来写动画,做出网页里的过场效果。
    4. 用 HTML 跟 CSS 来写网页里的内容跟外观。