设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

前端开发是否存在身份危机?

2018-11-22 13:27| 发布者: joejoe0332| 查看: 277| 评论: 0|原作者: 边城, 溪边九节, ZICK_ZEON, LarryKoo|来自: oschina

摘要: 前端开发依然存在吗?还是它已经演变成为另外一种我们不太熟悉的东西?这和大自然的进化过程一样,“前端”技术的演变导致了几种不同的风格 --- 在我看来这是一种开发者的身份危机。 ...
前端开发依然存在吗?还是它已经演变成为另外一种我们不太熟悉的东西?这和大自然的进化过程一样,“前端”技术的演变导致了几种不同的风格 --- 在我看来这是一种开发者的身份危机。

什么是前端开发人员呢?

传统地讲前端可以定义为应用程序的UI,就是给我们用户看到的那部分。然而,这些年来,由于雇主们希望开发者有更多的经验,并且似乎已经发生了变化,需要我们熟悉更多的开发语言,能够快速部署到更多的平台上,并且常常会要求开发者具有“计算机科学或者工程学位”证书。

像Angular这样的框架或React这样的库,需要开发人员对编程思想有更深入的理解;而这些思想一直以来都是后端所涉及的。MVC、函数式编程、高阶函数、吊装函数……如果你之前是仅仅使用 HTML、CSS 和基础的 JavaScript 进行开发,那这些都是你比较难掌握的编程思想概念。

这给开发人员带来了过量的压力。他们经常放弃退出或者觉得只知道CSS和HTML没有任何价值。技术的确已经进化了,仅仅了解CSS和HTML也许已经不够了;我们必须停下来问问自己这些技术对于前端开发人员来说到底意味着什么。

刚入行做设计师时我经常觉得我的技术知识是不够的。在招聘前端开发角色的技术面试中,当你被问及SSL证书是什么时,你回答道:“它确保了HTTP请求和响应”,可这并不是一个充分另人满意的回答。不要误解我的意思,这些话题很重要,但是这些技术细节是否与职位相关呢?

从这里开始我时不时会用FED来代指前端开发人员。

发现问题

这种身份危机之所以长期存在,有来自各个方面的因素,包括企业、招聘者、开发者等。由于存在不同级别的责任、工资标准不统一、缺乏标准化的工作规范等原因,前端开发的职能难以界定。

可以从就业市场观察到,企业都希望员工能独立承担多个职位的工作。由于人力资源部对他们的抛出目的知之甚少,招聘者也容易对这一角色抱有太多不切实际的期望。最后只能由开发者们自己来解决这个问题:他们不会去跟企业和招聘者争辩到底什么是前端开发者,而是会为了得到工作去学习技术面试时所需要的技能,自己承担这个不必要的压力。

下面有 LinkedIn 发布的两个招聘信息,他们的职位都是“前端开发者”。比较之下会发现两个职能大不相同,一个需要开发者了解 Flux 架构和单位测试,而另一个希望开发者了解 Java 和 MongoDB。

比如 LinkedIn 上的两个招聘信息,他们都贴上了“前端开发者”的标签

这些职能之间存在很大的差别,对工作范围和能力也没有清晰地界定。

为什么对职能进行标准化很重要?

  1. 制定薪酬标准:前端工程师不会拿到联邦调查员(FED)的工资,FED 也不会拿前端工程师的工资。

  2. 缓解(开发者)压力:比如开发者既可以专注于一个方面,如产品策划,也能创建丰富的交互式 Web 体验。

  3. 产生专家:也就是那些确实擅长 CSS、HTML 和交互式 JavaScript 的开发者。

  4. 可以在技术面试或工作描述等方面减小求职者的压力

关注点分离

为了定义角色,我们必须剥离超过前端开发部分的角色。我们不能把前端开发的角色和 Web 开发的角色范围相混淆,因为构建一个应用程序也是构建一种体验。其他的例子还包括,前端设计师,web 工程师,后端 web 开发 等等。

为了区分这些角色,我们可以看看四个标准:

开发者画像

如果我们假设前端主要是基于浏览器环境工作 —— 那项目中的 PHP 或 C# 开发者应该处于什么样的位置?PHP 是典型的例子,它虽然在服务器中运行,但本质上它仍然会做把数据发布到 UI(比如浏览器)这样的事情。JavaScript 和 PHP 都是需要编译就可以运行的脚本语言。那么 PHP 开发者应该被看作是前端开发者还是后端开发者呢?

GitHub 提供了 Electron 这样的工具,让开发者可以使用 HTML、CSS 和 JavaScript 技术构建跨平台的桌面应用。这跟 Adobe 的 Phonegap 可以把含有 JavaScript 的 HTML 编译成原生移动应用一样。这些技术让项目中的前端开发人员可以构建发布移动应用和桌面用。那么,应用开发是否应该也成为前端开发者的职责之一呢?

前端和后端之间的界线变得模糊了,它到底处在 jQuery 和 Node 中间的哪个位置呢?前端开发者往往需要了解 Node 和相关的开发包,比如 Express。这显然是后端技术,但为什么要把这些技术放在 FED 的工作描述呢?

我们在标准化职能之前,必须就前端开发者画像问题达成一致。在我看来,这个画像仅限于应用程序的 UI,而且主要是运行在浏览器中的 UI —— 这一职能不会跟构建任何服务器端功能有什么关系。

被选中的那个语言

第二个参考标准是开发人员选择的语言。Python 和 C# 之类的语言都可以构建 Web 框架,这就出现了之前的那个问题 —— Python、PHP、C# 是否可以看作前端语言?

下面的例子中,一个要求必须会 PHP,而另一个则要求 TypeScript。

LinkedIn 上这两个岗位都称为“前端开发者”,技能要求却大不相同。

在流行库 TensorFlow 提供 JS 版本之后,JavaScript 现在可以完成很多以前需要用 PHP 和 Python 完成的工作。而 TypeScript(上面提到了)将类似 Java 的静态类型引入了 JavaScript。那么什么才是前端语言或者前端框架,我们又该怎样划出前端的界限呢?

如果我们不考虑 PHP、C# 和 Java 这些因素,哪个框架或者库应该入选前端职能范围呢?jQuery 就是一个构建 Web 交互能力的完善工具,然而多数前端开发人员可能会更愿意学习 Vue。

React 这样的库会要求开发者学习与传统的前端无关的一些概念:设置 Webpack 控制转译、部署过程、理解高级组件,以及根据个人爱好使用 Redux 进行状态管理。这个列表增长得非常快。尽管所有这些技术都使用 JavaScript 语言,但是要深入理解他们时相互之间却并没有多少可借鉴之处。

很多后端开发者告诉我他们发现 CSS 非常难,我表示赞同 —— CSS 真的很难!我们可以理解后端开发者不了解 CSS 和交互式 JavaScript,但为什么会希望前端开发人员去了解后端技术呢?

我们最终要问的问题是,前端开发者到底要处理功能性问题,还是数据驱动组件。在我看来,前端职能在语言选择中应该仅限于 HTML、CSS 和 JavaScript(JS仅限前端库),主要工作是构建交互式组件或 Web 项目,而这些组件或项目在必要时会用到来自服务端的数据。

技能等级

前端开发者会在什么时候变成全栈开发者或者 Web 开发人员呢?

结合画像和语言选择来考虑就很容易区分出来。全栈开发者是既懂前端也懂后端(比如符合多个画像中的特性)的开发者。Web 开发者是可以使用多种框架语言来构建大量数据驱动应用的开发者。多数 FED 很可能从中级 FED 升级为高级全栈开发人员,或者工程师等。

那么,通过到目前为止我们对前端职能的定义,是否会存在高级前端开发者呢?我认为存在。只要看看 Awwwards 上的获奖网站,我相信你也会同意。这种级别的交互效果需要深入理解 DOM 以及使用 JavaScript 操作 DOM。至此,FED 也有机会专注于学习构建交互功能的库(比如 HTML canvas,Web GL)而不是去学习后端和库和框架,后端的东西会让他们偏离从 FED 开始的路线。

其他特别之处

最后还要考虑前端岗位带来的额外要求。我认为这就是个“包袱”,因为这些额外的要求通常会以某种特定的方式混在一起。

MongoDB(前面的一个需求列表中提到过) 就是一个不错的例子。在以前,数据库管理或数据库架构本身就是一个专门的岗位,那么为什么现在我们期望 FED 把这一技能看得如此重要呢?

另一个例子来自更早一些的截图,里面有平面设计这一需求。我极力支持开发人需要理解设计这一观点,但是如果把设计技能看得比 FED 的其它技能还重要,那么 FED 就不再是 FED,而是另一个岗位了(也许是前端设计师或者全栈设计师)。

更多知识会带来更多责任,我们应该问问自己是否真的需要学习这么多知识把自己的知识体系搞得复杂无比。如果今天我决定在组织中引入 React,那么他们想找开发者代替我的时候,这个人也必须会 React。如果新的开发者决定再加入 Redux……啊哦,你懂的。更糟糕的是,他们会继续雇佣前端开发人员,不会在意那些前端开发人员使用什么技术,因为部门中要用人的就是前端开发岗位。

巨大的权力确实带来了巨大的责任,最终我们作为开发人员要对所使用的技术负责。技术栈的变化会对行为带来冲击,它可能会引起一个长期存在的问题。

定义前端这一岗位

我们已经解释了前端开发者的含义,现在我们可以写下这样的职位描述:

前端开发者的职责是使用 HTML、CSS 和 JavaScript 构建 Web 应用的交互式用户界面和用户体验。

解释一下 —— FED 不需要懂得函数式编程,也不需要知道 SSL 技术的细节。这不是说 FED 不需要学习这些概念,但是至少这些东西不是必须要会的。

我们应该共同努力扭转开发社区中各种角色混乱不清的局面,帮助下一代前端开发者理解 FED 是什么。

这篇文章纯粹是我根据个人经历有感而发 —— 我希望你在评论中谈谈你的观点。

Vernon Joyce,一个全栈工程师。


酷毙

雷人

鲜花

鸡蛋

漂亮

最新评论

(200字以内)
验证问答 换一个 验证码 换一个

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187  

返回顶部