前端工作越来越难找,是不是已经饱和了?

转载 2017年12月18日 00:00:00

前端的工作越来越难找,到底是不是前端领域已经饱和了?


的确,前端的热度比前几年相比明显降低了很多。前两三年,互联网经济异军突起,热钱涌进来。这个阶段,人才是稀缺资源。所以在前几年,凡是懂点前端的都比较好找工作。


而现在,市场上已经不缺初级前端,而是能够开发像WebQQ那一类的高级前端。


从前端学习的曲线来讲,它是先平缓再陡峭再平缓。在学习曲线变陡峭那一段,很多人卡在那里。所以就有了我们现在看到的:一堆初级前端找不到工作,一堆公司招不到好前端。公司要的是经历陡峭之后的那些人。


作为前端技术主管,经常需要在投递过来简历的人中,耗费大量精力来筛选符合公司要求、团队发展、技术基础三方面条件的人选。常见的招聘要求中,基本都有“工作经验”的要求,而且都是以年作为单位。但是实际情况往往是:工作经验往往不是以年衡量的,甚至有些时候跟时间没有关系。有很多工作时间不算短的前端开发工程师,都停留在了学习曲线变陡峭之前。


今天想要分享的一点,是关于“为什么你的工作经验不值钱”,或者“怎么样才能让工作经验值钱”。


我们从一个小小的面试题目入手:



编写一个javscript函数 fn,该函数有一个参数 n(数字类型),其返回值是一个数组,该数组内是 n 个随机且不重复的整数,且整数取值范围是 [2, 32]。


如果愿意,请先暂停阅读文章,自己动手写一下这个函数。是的,老简单了。我可以等你五分钟。

 

~~~ 华丽的五分钟过去了 ~~~


现在假设你的工作时间为 y 年,经验系数默认为 1,即工作经验是:Y = 1 * y。从现在开始,以下的错误,你要是遇到了,请自行调整经验系数。


| 可用


作为一段需要满足需求的代码来说,它最核心的、最低的要求:可用。


如果你没有产出一个函数( fn ),或者产生了语法错误,那就请设置 经验系数为 0,然后去面壁思过;


请将代码在控制台运行,并执行 fn(3),看看是否输出一个数组,数组中包含了三个随机且不同且在[2,32]的整数,如果不是,请将 经验系数 * 0;


一个参考的半伪代码是:

  1. function fn(n){

  2.    //准备一个容器保存结果

  3.    var arr = [];

  4.    //循环

  5.    for(var i=0; i<n; i++){

  6.        //创建一个随机数

  7.        var rnd = getRand(2, 32);

  8.      //检查是否重复

  9.        if( checkInArr(arr, rnd) ){

  10.            i--;

  11.        }else{

  12.            arr.push(rnd);

  13.        }

  14.    }

  15.    return arr;

  16. }


其中 getRand 、checkInArr 还另有讲究,后面会提到。当然思路和方法不止一个,后面也会提到。


有相当多的面试者,包括不少工作时间为2年以内的同学,都会在这一步犯错,非常遗憾。


| 健壮


640?wx_fmt=png

代码是否老道,过了“可用”这一关后,就开始见分晓了。


所谓“健壮”,即最基本的兼容性处理、边界处理,异常处理、用户输入校验。很多时候,需求方不会明确告诉你这些逻辑怎么处理,但并不意味着你不需要处理。


健壮的程序,一定会将这些兼容性、边界、异常、输入做处理,以保证核心功能的正确输出。当然,如果你的代码没有任何输入并不考虑兼容性(可能吗?)或者仅仅是内部函数,那这一步要求可以降低,并不意味着你可以完全不做。


好,回过头看代码:


  • 如果你没有对 n 的取值范围做校验(n必须是 1 到 31 之间的整数),请将 经验系数 * 0.3;

  • 如果你没有对 n 是否为数字做校验,请将 经验系数 * 0.5;

  • 如果你没有对 n 是否存在做校验,请将 经验系数 * 0.7;

  • 如果上述校验都做了,但是没有校验对,请将 经验系数 * 0.9;你需要多练习,仔细认真的。


| 可靠


大多数面试者都止步于前两关,鲜有进入第三关的:可靠。


javascript没有强数据类型,函数的返回值也无法强制返回的数据格式。但是作为“可靠”的要求,尽可能在任何情况下,都返回一个可靠的结果,哪怕是异常情况下。是的,这一步很简单,几乎不耗费几个字节的代码,但是会让 fn 的返回值变得可靠:


  1. function fn(n){

  2.    //健壮性校验

  3.    if(!isThere(n)) return;

  4.    if(!typeOK(n)) return;

  5.    if(!rangeOK(n, 2, 32)) return;

  6.    //核心功能同上,此略

  7.   ...

  8. }


如果你留意到并处理可靠返回值的问题,那请将经验系数 * 1.2;


另外,一个牵涉的话题就是:异常情况下,是否要抛出 Error,或 console.error ?


关于这个话题,似乎没有定论,需要自己衡量。我的观点是:如果异常情况下不会造成太大影响的话(包括定位错误),就不用抛错或提示。但同样的,这个衡量仍然是经验性的。此处不再展开讨论。


| 宽容


如果在你的日常开发中注意“可用”、“健壮”、“可靠”原则的话,你的工作经验就会大于你的工作时间,也就会更容易受到重视,自己所挖的坑就会少。而我近期面试的人中,甚至包括5、6年工作时间的,几乎都止步于此。


如果你要想成为一个受欢迎的技术人员,“宽容”是第一步: 对需求宽容、对用户宽容、对调用者宽容、对维护者宽容。


回到代码:


  • 如果 n 是一个字符串数字,是否可以允许进入处理流程? 如果是,请将经验系数 * 1.1;

  • 如果 n 是一个含有小数的数字,比如 3.000001,是否允许进入处理流程?如果是,请将经验系数 * 1.1;

  • 你的代码中,是否有足够多且清晰的注释? 如果是,请将经验系数 * 1.2;

  • 如果需求调整了 [2, 32] 的范围,你的代码是否可以快速调整,甚至不用调整? 如果是,请将经验系数 * 1.2;


一个参考的半伪代码是:

.

  1. /**

  2. * 获取指定个数的随机整数,整数范围[2,32]

  3. * @param  {number}   n 需要的整数个数

  4. * @return {array}  返回包含n个整数的数组,如果n非法,则返回空数组

  5. */

  6. function fn(n){

  7.    //将整数取值范围作为变量提取出来

  8.    var min = 2, max = 32;

  9.    //参数校验

  10.    if(!isThere(n)) return [];

  11.    if(!typeOK(n) && !isOKStr(n)) return [];

  12.    n = formatInitNum(n);

  13.    if(!rangeOK(n, min, max)) return [];

  14.    //准备一个容器保存结果

  15.    var arr = [];

  16.    //循环

  17.    for(var i=0; i<n; i++){

  18.        //创建一个随机数

  19.        var rnd = getRand(min, max);

  20.      //检查是否重复

  21.        if( checkInArr(arr, rnd) ){

  22.            i--;

  23.        }else{

  24.            arr.push(rnd);

  25.        }

  26.    }

  27.    return arr;

  28. }




| 精益求精


恭喜你完成了前四关!


如果你在实际开发中,时时刻刻留意这些原则,这足够让你的工作经验扩大化,并给你带来更多的认可,这些认可来自于需求方(或许是那个曾经非常蛮横的产品狗)、用户以及你的同事。但不应该包括你自己,你还需要更进一步。


宽容是宽以待人,精益求精是严以律己。内外兼修才是高手。当你将这五个原则(可用、健壮、可靠、宽容、精益求精)变成你自己的开发习惯,你的工作经验就跟你的工作时间没有关系了。


640?wx_fmt=png

看到这里,不知道你的前端经验系数是多少,有没有达到自己的心理预期了呢?


如果离自己的预期还差那么一点,那不妨关注一下网易出品的「前端开发工程师直播:前端开发工程师成长之路」


直播主题:前端开发工程师成长之路


640?wx_fmt=png

包勇明

网易资深前端工程师


直播时间:12月20日 20:00


你将听到:


  • 学习前端到底要学些什么?

  • 初级前端突破瓶颈实现进阶,有什么诀窍法门?


想要参与免费直播的同学,欢迎扫码添加直播助手小姐姐,加入网易前端开发学习群。

640?wx_fmt=png


除了免费直播外,添加助教老师微信后还可领取一份弹窗效果的项目源码~

640?wx_fmt=png



2018 年,新手前端是否真的很难找工作?

点击上方“CSDN”,选择“置顶公众号”关键时刻,第一时间送达!前几天,前端求职群里有人发出了一张招聘的截图:Web前端开发成为竞争最激烈的岗位之一这是不是证明前端岗位已经饱和?其实不然。从“前端工程...
  • csdnnews
  • csdnnews
  • 2018-01-10 00:00:00
  • 6556

前端工作越来越难找,是不是已经饱和了?

问题:我怎么才能收到你们公众号平台的推送文章呢?答案:只需要点击标题下面的蓝色字【web前端开发】关注即可。前端的工作越来越难找,到底是不是前端领域已经饱和了?的确,前端的热度比前几年相比明显降低了很...
  • snsHL9db69ccu1aIKl9r
  • snsHL9db69ccu1aIKl9r
  • 2017-12-19 00:00:00
  • 2190

web前端工程师还没参加工作,项目经验咋积累?用这个办法模拟项目经验非常好,找工作好找多了。

随着技术的发展与革新,优秀的前端框架层出不穷,还没有在选择上拿捏准确的时候,却发现根本学不过来,学了点皮毛又很快忘掉,因为并不是学以致用,可能是出于好奇心、危机感等等原因解除了一些新的知识,但讲起来头...
  • fanyingnedu
  • fanyingnedu
  • 2017-11-30 22:23:56
  • 239

java程序员饱和了吗?

java程序员饱和了吗? 之所以说这个话题是因为最近被很多朋友问到,这里统一回答下!下面这些内容只代表本人的看法和见解!【个人和部分朋友的观点综合】不管对与不对,给大家一个参考。  欢迎大家留言...
  • huangshulang1234
  • huangshulang1234
  • 2018-01-18 09:41:53
  • 1036

2017年,前端开发市场饱和了么

前言 本文来自极客教程投稿,极客教程博客地址: http://www.jianshu.com/u/5c13b327009c 感觉现在新手很难找到了工作,感觉没有机会,公司动不动就要求3到5年...
  • u010321471
  • u010321471
  • 2017-11-16 00:11:55
  • 2146

又有程序员跳楼了 我们是有多累?

干什么,都别自杀。「 头条简述 」今天对我们这个行业的头条莫非这个了:网友寒夜来客12月14日发在微博一篇文章称,她老公欧建新于12月10日在中兴通信跳楼身亡。欧建新出生于武冈市的一个农村家庭,从小学...
  • GsL9D1P04F6x2ts3C9
  • GsL9D1P04F6x2ts3C9
  • 2017-12-15 00:00:00
  • 1027

web前端简历的详解

一、基本信息 基本信息就是介绍自己的姓名、性别、年龄、出生年月、婚姻状况、民族、籍贯、政治面貌、身高、现所在地、练习电话、电子邮箱等,其中一些事必须要写的,有些事不需要写的,看个人情况。 二、求职意向...
  • xiaowu_hhb
  • xiaowu_hhb
  • 2016-11-22 08:55:26
  • 6965

面试经验分享之阿里客户端研发实习生笔试

单选题:
  • NonShan
  • NonShan
  • 2015-04-02 23:51:04
  • 2366

不是行业饱和了,是你对行业不饱和

有位服务端开发人员问大牛IOS客户端开发人员,我也想学习IOS,不知难不难。IOS大牛告诉他,现在IOS基本都已经趋近饱和状态了,建议不要学了,你学习服务端开发就好了。 其实这位服务端开发人员在半...
  • vatty748895431
  • vatty748895431
  • 2016-04-16 10:40:15
  • 1392

web前端简历怎么写?

前端工程师简历怎么写? 其实前端工程师并不少,但很多时候合适的前端工程师难找。可能是由于程序员比较内向,前端工程师都没有把自己最厉害的那一面表现出来。今天我们来聊聊前端工程师的简历怎...
  • GaojbSunny
  • GaojbSunny
  • 2017-03-07 10:00:08
  • 845
收藏助手
不良信息举报
您举报文章:前端工作越来越难找,是不是已经饱和了?
举报原因:
原因补充:

(最多只允许输入30个字)