[心得] 前端找工作之道

楼主: allqooxx (BIKU)   2016-07-30 17:47:57
Hi 大家,
关于找工作或职涯发展的东西我都是看这个版,
本着取之于网络,回馈于网络的心境,
来抛砖引玉地分享一下一个前端工程师找工作的心得,
不过可能不会根据公司和职缺一个一个来,
主要想分享一下整个“找工作的流程”,
中间也会穿插一下对于征才者的一些看法。
希望让求职或征才的人,都能更了解要怎么对待前端工程师 XD
这是网站版的:http://goo.gl/KS9ag8
(不过我尽量让 PTT 排版也能好读一点了 XD)
题外话是之前有写过一篇关于前端工程师入门学习的:
文章代码:#1MdHy0Kj
网志连结:http://abalone0204.github.io/2016/01/18/way-to-fed/
网络上还有很多其他优秀的前端学习资源,
推一下保哥的:
我要成为前端工程师!给 JavaScript 新手的建议与学习资源整理
http://goo.gl/OyZkDl
只是到底要学习到怎样的程度才能找到想要的工作,
这中间的隔阂,似乎还是很容易让人迷惘,
所以今天这篇就自己的经验来来分享,
身为一个普通新鲜人是怎样准备“找工作”这件事情,
老实说我觉得重点永远都不该是什么研究履历怎样排版、
怎么猜 HR 或面试官看履历的眼动,
甚至问学什么比较有前途,
我不是说这些事情不重要,这些事情你当然还是得做,
只是如果你只是做了这些而已,往往都是治标不治本的方法。
做一件事情有分“术”跟“道”,
“术”是具体的做法;
“道”则是做事的过程和背后的哲学。
而前面讲的这些具体作法,我把它们归类为求职“术”(方法),
这些“术”,不懂写程式的猎头可能都比你了解,
所以身为一个实事求是软件开发者,
我们应该要找到自己为了什么工作,
以及想做什么工作的本质,
也就是探询自己的求职之“道”,
懂了之后再搭配方法(术),找工作这件事自然也就水到渠成,
就算有问题,也会比较知道问题出在哪里。
也许我工作经验还不足,有想地不够的地方,
但希望能帮助到还在迷惘的大家,
当然,也希望能省掉一点面试者和被面试者的时间(XD。
注:
这里的前端工程师指的是不负责出图,
而是要跟设计师协作、写 html、CSS、JavaScript 的 web 前端工程师。
这篇文章可能会比较长一些,结构大概是长这个样子:
- 我的背景介绍
- 找工作之前
- 为什么要当前端工程师
- 开始找工作
- 评估自己的能力
- 找到想去的地方及准备
- 面试完以后
- 开价
- 自己的经验分享
- 结论
# 背景介绍
非四大的学士,不是本科系,
2014 年中开始学习写程式,
之前完全没有写程式的经验,到现在差不多写了两年。
学习的路上碰到蛮多困难,也常常卡关,
觉得自己资质在众工程师间绝对是属于中下的,
当年要学写程式时,我的朋友告诉我:
“写程式太吃天份了啦!现在才起步太晚了。”
那时候我刚好看完了 vgod 的“神乎其技的程式设计之道”,
尽管满腔热血,
但也清楚这世界上有像 vgod 这种天份好、够努力,
甚至还对 CS 充满热情的人在;
只是后来仔细想想,哪个领域顶尖的人不是这样子?
我们可以把他们当作目标,而不是却步的理由。
再者,开始工作和学习也发现:
许多人的努力根本就还没达到要拼天份的程度,
就算不跟一些怪物比,这世界还是充满机会的 XD
再说连我都能做到的事情,
相信大概八成以上的人都能轻松做到,
如果你喜欢写软件,真的不该拿天份当作限制你自己的理由。
总之这篇主要的目的还是让新手能省掉一堆绕远路的时间。
# 为什么要当前端工程师
这是一切求职前的源头:
“为什么要当前端工程师?”
为什么你要来写程式?为什么你不去做后端?
为什么你不想做 Data Engineer?
这不是一个答错就找不到工作的题目,
但是从来没有思考过这个问题,那其实就是在思考上懒惰,
现实做了再多努力也很容易只是徒劳。
而且这个问题的答案也是当你遇到挫折时,
真正有办法支持你继续走下去,而不是得过且过的根。
在这里也分享我对这个问题的想法,
对我来说初期选择网页前端的原因跟很多人蛮像的:
可以看到东西,比较有成就感。
后来也发现前端虽然很好入门,
但仍然那么缺人的原因,
是劳力的供需双方都出了问题。
首先是“劳力的供给者(求职者本身)”的问题:
正因为网页前端算是个“好入门”的领域,
所以许多人不把自己当作真的“软件工作者”,
以为我们只要照着需求拉拉页面就好,
有的也为了薪水所以跟风跳了过来却发现薪水不如预期,
这时候就不免得问自己如果这个工作门槛这么低,
被取代性这么高,
到底哪来的自信觉得这样有办法坐领高薪?
许多“前端工程师”忽略了浏览器本身是多么复杂的软件,
也忽略了你将来可能要协作的会是一个复杂的系统,
少了一些电脑科学和软件工程的知识当基石,
面对问题时你会少了很多想像力(这里指对于解决问题的方法)。
蛮常听到一些人在抱怨说学校里教的理论脱节,
老实说,技术的东西会随着时间迭代演进,
也许教授没有告诉你这个跟你未来要做的事情有什么关系,
扪心自问一下,
其实我们是在根本不够熟悉理论前就嫌他不实用而已。
Computer Science 一直都是一门实用的科学,
但如果只是为了考试而念,那当然就不实用啦!
前端的生态大概每几个月就会跑出一大堆新东西,
(像是最近很红的:`Vue.js`)
当追随各种 framework 或是工具时,
很容易显得浮躁,会学的不好甚至盲从,
更重要的是看一下这个“工具”能解决什么问题,
细细探究下去会发现“工具”为什么要这样设计的哲学,
也会发现其中有许多原本以为很“理论”的东西被实作在里面,
而这些“研究”就是在锻炼选择和学习工具时的品味,
长期来看,这让你自己更快速地建立自己的知识体系,
也更快速地提升自己的价值。
只是许多人忽略了这点,
忙着去追逐一些绚丽的画面、火热的框架,
这就是对自己的职业定位不够清楚的缘故。
再来是“征才者”的问题:
这里会比较单纯一点,
因为大多都是征才方不知道怎样面试一个前端,
或者不了解前端的重要性。
有些人心里觉得:
“啊不就画面拉一拉、改一改,有什么难的?”
或是:
“有必要搞那么多 Framework 或是 pattern 吗?什么 MVC、MVVM 的。”
但实际上 UI 实做起来的程式码很容易就不合逻辑,
要写出能够维护、好扩充的程式码更是需要实务和一定的“品味”,
举例来说可以看看下面这个 Flux challenge,
这是 Cyclejs 的作者对于 Flux 这个单向资料流框架发起的挑战:
https://github.com/staltz/flux-challenge
不用下去实作,光是看一下就会发现要良好地控制资料流、画面的 state ,
以及设计一个精巧的 template 有多困难。
正因为对求职者期待错误,薪水自然也错误,
到最后如果好运把东西做出来,那可能也跟屎有七八分相像。
当你真的开始重视前端的复杂度和专业时,
自然面试的水平以及来应试者的水平就会上升,
好的企业跟求职者是相辅相成的。
讲完双方,言归正传一下,
对于我来说,
后端 API 的逻辑是理性的,
设计师图稿的美感是感性的,
而前端就是站在理性跟感性中间的接口设计者,
处于这个位置,不管你面向哪边都能够看到许多有趣的东西,
而前端本身又一直是一个“生机蓬勃”的领域,
这是我为什么选择这个职业的原因,
但这也是我认为前端工程师容易浮燥、忘记如何追求知识本质的原因,
这个之后再提。
# 开始找工作
## 评估自己的能力
这里不空谈什么人格特质,
只谈两件事情,一为学历,二为技术力。
学历:
首先是大家最爱讨论的学历,
老实说,如果不是大公司或是比较传统的企业,
前端对于这一块需求还好。
尽管学历可能不会是一个好的评断标准,
但在履历数量大的时候直接用学历筛,
对于想偷懒的征才者来说蛮方便的。
另外,学历是最现实的东西,
假如你跟我一样学历不好看,却又非得进摆明需要四大硕本科学历的大公司不可,
尽管上网问完有些人会告诉你有作品集比较重要 blabla 之类的,
但八成的情况是这些意见比较多是属于安慰性质而已,
还是务实一点努力去考硕士或是换个目标吧 XD
把时间花在犹豫和求安慰真的是最可惜的一件事情。
如果你只是单纯想要学习的话,你并不需要成为学生,
可以先看看这篇文章:http://goo.gl/6eSXoK
技术力:
前端的东西太多太杂,我不会一一细列,
但对于你每个想火力展示的技术,
我认为都可以分为以下三个等级:
Level 0: 用过,看过 document 上的 get started。
基本上处于这个阶段的技能,别硬要放上履历表,
而是问问自己除了好玩之外为什么要学这个?
最好能讲出这技术背后的想法为何,
如果连你仔细思考后都无法回答这问题,
那真的得问问自己为什么要把时间分配在这上面。
举例:
我对于 Cycle.js 这个 framework 就是如此,
当初只是为了了解处处是 Observable 到底是怎样的体验。
(意外相当不错 XD,只是基于现实考量没有用它)
有兴趣可以看看我的 Blog 上有些简单的学习纪录。
Level 1: 有应用在实务上过。(指上 production)
通常服务一上到 production 环境后会遇上各式各样的毛,
而且到这等级,好运一点的话你会有作品可以 Demo,
再怎么不济也要好好回想自己曾经遇到哪些 issue 或 bug,
甚至是比较麻烦的地方,将这些经验分享给其他人,
大多都能得到不错的回馈。
在这一阶段的技术能证明你能独立作业并有实质产出。
Level 2: 摸透技术的本质
http://i.imgur.com/Q101c5V.png
这里指的摸透,不只是有丰富的实务经验,
同时也对这个技术背后设计的哲学有深入了解,
能去进行底层的扩充和更改。
如果真的到达这境界,也应当要能理解其发展出来的历史背景,
很多时候会发现这些东西跟商业或是人的关联性,
让你能更站在作者的角度去思考。
到达这一阶段的人,通常能分享知识并提升身边的人素质。
举例:
我在看过 “Secret of the JavaScript Ninja”这本书前,
曾经傲慢地觉得 jQuery 实在没存在的必要,
但细究当时的背景,
一个有办法跨越各个浏览器,
以及提供一个简洁的接口来做 ajax 是很了不起的事情,
更别提 jQuery 在原始码中有许多程式设计的典范,
以及为了工程需求而做的折衷,
这些都不是一个没摸透 JavaScript 本质的人能写出来或是理解的。
至于到底要放哪些在履历表上,或是该怎么展现,
如果你还是没办法靠自己完成,
相信我,对自己有了上述的理解,
你也更容易让别人愿意帮助你。
假如只说个我会 jQuery、React、Angular,
除非通灵,不然没人知道你的“会”是到哪个程度,
身为一个工程师,连自己的规格都描述不清楚那是非常不专业的事情。
## 找到想去的地方及准备
假如你已经很有经验,猎人们自然会排队帮你找工作;
反之你就得自己做打算,
但公司种类简直跟前端框架一样也是百百种,
如果有任何文章提出一个应付所有公司的解法,那一定是在扯淡。
这阶段真正要解决的核心问题是:
“你到底想要在哪里工作?”
很多人会抱怨把 104 打开或者是投履历都没人理或者没回,
其中一个很大的问题是因为这是个“海投”的策略。
将心比心的问题,身为一个求职者,
你会希望自己被好好对待,
可是“海投”却是一个让你没办法好好对待每个机会的策略,
这不见得对于每个人都成立,但我认为对方如果要付出面试时间,
自己也应该准备足够,让对方没有在浪费时间的感觉,
正因为每个选择都要付出很多时间,
所以有没有想清楚是不是非这间公司不可就显得非常重要。
接着继续解开“到底想在哪工作”这个问题,
前端工程师目前在台湾是一个有点尴尬的职位,
光是看许多人套 bootstrap 就称自己 fullstack,
就知道蛮多公司不重视前端这个工作,
所以挑选时,除了各方上网搜寻意见之外,
也别忘记去公司的网页 inspect element 看看 XD
不要想着进去一间公司就要待到老死,这样对你和公司都是坏事,
(想待到老死去考国营就好了,不用在这尘世间浮沈)
先设定一个目标和时间,比如说待两年,
然后问问自己这两年你要完成什么事情,待在这间公司有办法帮你达到吗?
很多职涯相关的文章已经讲说面试要准备问题问面试官讲到烂掉,
但每次提供的问题都蛮垃圾的,有时候会有点分不清楚内容农场跟媒体的差别。
总之“要问面试官什么”的根本就是上述那个问题,
所有你想要的,都应该 contribute 到你想完成的那件事情上,
而有了这个问题当作基础,就很好延伸思考了。
当你现在准备和了解的越少,
你未来可能要付出的代价越大。
## 开价
谈薪水其实已经偏向“术”,只是这个阶段实在太重要 XD,
所以特别讲一下。
一定要开一个让自己觉得有尊严的薪水,
不要因为很怕自己不值得这个钱而开一个自己无法接受的低价钱,
不然你进去才一直觉得公司欠你,心态会渐渐扭曲。
另外这里没办法写的很具体,
是因为我实在无法评断会某技能,就值多少钱,
一来,会到什么程度只有自己最清楚,也关系到面试怎么展现;
二来,地区、产业、公司的不同,都会大大影响。
如果前面的准备有做好,
这时候应该对自己的喊价应该要充满信心才对。
## 面试完以后
一面试完,
要先思考的问题就是:
“你有多想跟面试你的那些(个)人一起工作?”。
就算未来不是你真正 co-work 的人,
我相信待在同一间公司的人都会有某些相同的特质。
面试要考倒一个人是相当容易的,
所以要自己过滤一下哪些明显是在刁难。
(履历上完全没提到自己会,却又故意问非常深入的部分。
比如说应征前端结果问你熟不熟 CSP 和 Actor model的差别)
再来就是检讨自己有哪些不足的,简单分可以分成两种:
一,短期内学习就有效果的。
(e.q:某个东西的 API 不熟悉,或是某个名词你不知道是啥)
二,需要长期养成基础的,要再拟个计画来补强。
(e.q:算法不熟)
接着再更改履历,
强烈建议用 git 来管理自己的履历,
你也更容易从中看到每个版本的自己有什么进步,
而针对不同的公司只要新开一个 branch 就好了。
每次面试完以后,我也会回到再度“评估自己的能力”一次,
如果你准备的够足够,
面试完时通常都能获得更多,
因为你去的都是你认可的公司,同时你每次也是全力以赴。
# 自己的经验分享
这里首先来分享自己曾经忽略的几个点。
什么资料结构、算法,或是作业系统就不再提。
- SEO:
有些公司会需要前端工程师来处理 SEO 相关的东西,其实是蛮合理的。
推荐一下这篇文章,看完你会知道为什么我认为这跟前端有关了:
Web语义化标准解读:https://goo.gl/4YyQJj
- 网络:
这里的用“网络”是有点太 general,不过我找不到更简单的词来说明。
举例来说熟悉 http 中各个 method 的特性和 status code 会蛮有帮助,
了解网络相关的知识也容易让你对产品做出更多优化。(cdn, gzip)
- 浏览器:
了解浏览器是怎么运作的,
推荐一下这篇文章,应该很多人看过了 XD
How Browsers Work: Behind the scenes of modern web browsers:
http://goo.gl/WFb7T
然后是一些迷思:
1. 写文章或是经营 github 上的 side project
我的经验是如果单纯为了找工作才刻意去做这些事情,
那很可能会无法持之以恒,
我写的所有技术笔记都是为了让自己以后忘记时有东西可以参考,
同时我也认为我们平常工作上靠 google 得到那么多资讯,
自己应该有一些回馈的责任,
而且如果搜寻问题的前几个结果能是繁体中文的文章,
那会是一件很莫名令人开心的事情。(XD)
总之如果这些事情是你真心认为想做再去做才有意义。
2. 参加社群
人脉真的很重要,而分享和吸收新知也相当有意义。
我记得第一次参加大型技术 conference 时,
看着世界上许多人技术和商业都如此强劲,
真的会起到相当大的激励作用。
不过就这阵子的观察,有些活动很近似于大拜拜的行为,
好像参拜完大神会得到灵魂上的升华一样,
这不是一个很健康的现象。
参与社群时不应该时时想着从中得到什么,
假如得到了什么,更要思考着该怎么样去做有效地回馈才是。
3. 是否有必要去上职训、资策会等等课程
我没有上过任何上述的课程,这里也不想谈论自学和上课哪个好。
但这些课程中,大多都是在业界实战过的老师,
出来的学生素质会参差不齐的原因很有可能是因为:
他们没真正想过“为什么想成为前端工程师”,
去上课可能是一个更有效率建立知识系统的选择,
但把上课当成一个速成脱离低薪的“速解法”,
就很容易高不成低不就,甚至怪这些课程没有用。
# 结论
最后想要分享一下之前在 twitter 上看到的这段话:

你使用的语言被人嘲笑
职业被藐视
解决问题的努力被视为噱头
自诩不弄脏手的人轻视你面对的问题
执行引擎到处是实作者从未重视过的 Bug
所有跨平台的承诺都在增加你要解决的问题
UX认为要的效果很简单
QA给你的回报难对上问题
最后,报酬通常低于平均水准
你说,你想成为前端工程师

- @GregWang: https://goo.gl/FsIVoA
网页前端的迭代速度跟特别的技能树,
让这个职业既有吸引力又让人容易感到挫折,
希望透过这个分享让大家更了解前端工程师,
也让对前端有兴趣却不敢踏出那一步的人可以试试看。
我知道版上蛮多是针对每份工作和公司的面试心得,
但我想就这种角度来分享试试看。
作者: ripple0129 (perry tsai)   2016-07-30 18:03:00
先推再说!
作者: tonyofthu (ˊ_>ˋ)   2016-07-30 18:04:00
大大saga那篇文章帮助了我很多!
作者: sivid (go back to sleep)   2016-07-30 18:11:00
推推
作者: tonyofthu (ˊ_>ˋ)   2016-07-30 18:11:00
所以LV2是要到能够Review Source Code且Contribute的阶段吗?
作者: xo1100 (虾蒸河粉)   2016-07-30 18:39:00
不用多说了 已收藏
作者: strlen (strlen)   2016-07-30 18:47:00
作者: testPtt (测试)   2016-07-30 18:51:00
其实台湾很多幻想以后进入游戏业而念资讯的
作者: feeling543 (ifeelings)   2016-07-30 18:53:00
好文章
作者: lovdkkkk (dk)   2016-07-30 19:06:00
作者: nosecoolie (諾苦力)   2016-07-30 19:13:00
作者: clipwww (\アッカリ~ン/)   2016-07-30 19:14:00
作者: Eleina (艾琳娜)   2016-07-30 19:21:00
作者: CharityTC (Charity)   2016-07-30 19:28:00
今年人生最低潮的两次在前端职涯卡关,都会潜水看一下这版,刚好您的文都是我很需要的,推推,感恩… :)
作者: ks0518 (Ao)   2016-07-30 19:32:00
推推
作者: seesaw20 (reman)   2016-07-30 19:37:00
作者: washqwe (阿蹦)   2016-07-30 19:46:00
呵,谁规定要到什么地步才可称为fullstack
作者: BignoZe (BignoZe)   2016-07-30 19:59:00
其实fullstack本身就是在说前后端都点到满的高手 当然你都会一点也可称自己做fullstack,不过别人看了会觉得...
作者: cc2011 (秋西西)   2016-07-30 20:08:00
推推
作者: ripple0129 (perry tsai)   2016-07-30 20:11:00
资讯的东西有人敢说自己点到满啊XD?
作者: davidsky (Alive)   2016-07-30 20:51:00
作者: ginnyhuang (ginnyhuang)   2016-07-30 20:51:00
推!文章有些部分不只前端适用
作者: BignoZe (BignoZe)   2016-07-30 21:01:00
是不敢自己说 但是高手不说你就看不出来高手是高手那也可以不用混了
作者: Hevak (Arthow Eshes)   2016-07-30 21:02:00
推,这篇值得m起来
作者: sandokaishy (FBF)   2016-07-30 21:30:00
推,心有戚戚焉
作者: hungys (hungys)   2016-07-30 21:53:00
Get Started 下个 Lv 直接跳 production?
作者: zeroshine (rain)   2016-07-30 23:49:00
前端要会的东西非常多 好的前端难找 善待前端的公司也难找
作者: boy955403 (~夹脚拖男孩~)   2016-07-31 16:49:00
术与道的比喻颇有趣的 推推
作者: pearcup736 (来讶)   2016-07-31 17:36:00
作者: neo5277 (I am an agent of chaos)   2016-07-31 19:13:00
可以给我女朋友看
作者: yuanyu90221 (菜菜鸟)   2016-08-01 01:10:00
推受益良多^ ^
作者: lovedpotato   2016-08-01 07:31:00
作者: Twinkle0414 (巴拉巴拉巴)   2016-08-01 10:40:00
好文~推推推~
作者: bndan (seed)   2016-08-01 13:46:00
纯推拜拜那段.这种东西泡沫化机会主义盛行不是件好事 (摊手
作者: zerofinal (人生~)   2016-08-01 14:02:00
推一个
作者: magus (Magus)   2016-08-01 22:29:00
bbbbb
作者: z147258   2016-08-02 05:00:00
作者: Malum   2016-08-02 11:11:00
好奇问 现在为什么这么多人要做前端啊
作者: TFnight (二十四夜)   2016-08-02 12:26:00
谢谢大大分享 收到了点东西
作者: Zeusken (Rushken)   2016-08-02 22:52:00
必须推!学背后的哲学这点真的很重要
作者: kurtisgod (蹦蹦蹦)   2016-08-09 17:05:00
认真文推!!!
作者: richer6605 (Rhapsody)   2016-08-10 23:42:00
认真推一个!!
作者: Lemmings (小旅鼠)   2016-08-12 13:41:00
很棒的内容 值得细细品味

Links booklink

Contact Us: admin [ a t ] ucptt.com