FM_2019Cover_final

那天,我关闭了我的portfolio网站

(本文我写了个英文版本,如果有兴趣可以去看看:https://medium.com/@mengyinli/the-day-i-shut-down-my-portfolio-website-180ce0a82aa1

tldr: 这个世界对前端的要求,已然完全不一样了。

从还在学校开始,我就知道,我得有一个portfolio网站。我学的是媒体艺术,专业方向是Web and Motion Graphic。找工作的时候,平面艺术的同学们还可以拿着设计作品实物给人看,而我的所有作品,都是关于网络和依存于网络的。所以,还有什么比一个能够体现自己创意和技术的portfolio网站更重要呢?

我的porfolio网站至少有四五个版本。每次被问到,你之前最喜欢的项目是哪个的时候,我总是忍不住想说,是我的portfolio网站啊。有的时候,我有了新的构思,然后思考用什么技术实现;也有时候,我看到了新的技术,然后考虑是否可以用到自己的网站上。每一次设计新的界面,选择实现的方法,加入交互元素,在这个过程中,不断挑战自己,不断创新,学习新技术,对于自己来说,也是个非常重要的成长过程。

我做了四年的全职设计师,期间兼职插画设计。然后,机缘巧合,我的职业道路转到了前端开发。其实在那个时候也不能算机缘巧合,因为在一个小广告公司里上班,作为设计师,日常工作也包括写自己设计的网站的前端。在做为前端的那几年里,我仍旧更新了我的portfolio网站,只不过,作品分类里加上了一条:前端开发。那个时候,找前端的工作,往往要求提供代码样本,所以我的作品里有一些以前开发的网站链接。而也有另一些职位,希望前端有设计背景,所以我的设计作品和插画作品也仍旧在其中。

最后一次更新大概是四年前了吧。最近一段时间以来,我接触到了一些新的工作机会,也经历了一些与新的公司互相选择的机会。我想,是时候可以关闭我的portfolio网站了。

这些年以来,前端开发的面试方式实在是改变了不少。当我得到第一份前端工作的时候,我的面试是一份作业,面试方提供一个psd文件,里面是一个页面的设计,而我需要在给定的时间里,将这个页面做出来,包括具体的用户交互、页面优化、使用js插件等等要求。这份作业做完,我基本上就已经拿到了offer。在那前后我面试了几次,基本程序都大同小异,电话面试或多或少包括一些css/html的基本知识,技术上的测试则有的时候是一份作业,有的时候是在线coding,写出一些简单的layout。

后来,事情就不太一样了。

当我第一次在在线面试的时候被问到了一道经典bfs算法题时,我简直是呆了。后来虽然在面试官的提示下做了出来,但是我已经完全地被吓坏了。因为我的学历背景,我是从来没有学习过这些基础CS知识的。在工作中,我会用到简单的数据结构,但是更多的是解决实际问题,而现代Javascript自带的函数可以满足大部分需求。甚至我工作中需要用到的一些简单的线性代数计算,也有现成的库提供了。而时间、空间复杂度,对于我们需要处理的数据量来说,并没有特别的要求。对于性能优化,更多的是从用户体验的角度来考虑,而不是编程的层面。

后来,我还面试了几次,虽然简单粗暴地上来就给一道算法题的不多(可能主要原因是我尽量避免了这类公司),但大部分,会给一道掩盖在实际应用中的算法题,比如,关于字幕显示的binary search,掩盖在shopping cart下的数据结构,等等。虽然说比起其他SDE,前端的面试算法已经不算很多。

好吧,我打开了leetcode,这简直是一扇通往新世界的大门。而这个新世界,让我这个自学成长起来的野生前端感到头晕目眩、压力山大。

我想,这跟这些年来前端技术的发展以及前端开发的工作职能发生了很大的改变有关。

多年前,说起前端,大家的期待就是给你一个mockup,你把它变成一个静态页面。好吧,随着浏览器技术的发展,页面增加了一些交互,jQuery让这些做起来并不困难。剩下的工作,有后台程序员,或者全栈工程师解决。基本上我作为前端的前几年,就是这样的状况。

随着前端技术的发展,渐渐地,从前端要求数据、处理数据的做法越来越多,类似Nodejs甚至提供了服务器端的功能,前端工程师们可以做的、需要做的越来越多,具体地我就不说了,现状大家都知道:

(https://www.reddit.com/r/javascript/comments/cad1nj/frontend_evolution_19952019/)

突然间,我用起了React,开始写Components,开始向REST或者GraphQL endpoint请求数据,拿到数据后再把它变成想要的形状,考虑把它放到哪里,是local state,redux还是context?我开始考虑数据怎样在不同component之间传递。我用上了3D库,开始写基于网络的三维交互。是不是感觉棒棒哒?

UI不再是前端的唯一工作,而只是一个起点。我一直很喜欢这个图:

这个世界对前端的要求,已然完全不一样了。你知道我最喜欢的部分是什么吗?最后那里。

Keep Learning。

PS: 如果有兴趣,Chris Coyier有一篇talk:https://full-stack.netlify.com/ 我觉得还挺有意思的。

(本文图片来自https://frontendmasters.com/books/front-end-handbook/2019/

<< 返回所有文章

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>