c#发展

注册

 

发新话题 回复该主题

面试感悟年轻女性前端开发者越来越不重视基 [复制链接]

1#

春节过后,公司需要招聘前端程序员。可能因为公司提供双休、6小时工作制、从不加班、入职即办理社保(五险)、住房公积金等,应聘的前端程序员绝大多数都是女性开发者。

我们期望的岗位画像是2-3年前端开发经验、熟练使用vue2框架、28岁以下女性开发者。我这两周陆陆续续面试了十几位符合这个画像的候选人,甚至也有4到5年经验的。一轮沟通下来,我惊讶地发现她们都存在基础知识严重欠缺的现象。我知道或许这不是普遍现象,只是局限于我接触的这些应聘者身上,但是我忍不住要与大家分享一下。

我说的基础知识欠缺,真的是“基础中的基础”。比如,作为一个前端程序员,竟然绝大多数应聘者,没有回答出来“UI”是什么。我问的就是英文缩写词“UI”,不是UI岗位职责。都说知道UI是干什么的,一大半人不知道UI是UserInterface的缩写。

再比如,有一个面试问题是请从前端开发、UI设计、产品原型三者之间的关系入手,决定前端程序员天花板的关键是什么?基本上无论工作经验2年3年,甚至4年的应聘者,都很少能立刻准确回答的。因为问题的关键词是前端程序员,不是程序员,又因为问题限定在产品原型、UI设计、前端开发三者的闭环之内,因此问题的答案必然是围绕先做出原型,再设计界面的高保真图,最后需要由前端人员开发出来,这样一个线索去思考。这个问题换一种问题,或许好理解,前端开发者只负责把用户界面开发出来,还是也有对用户界面负责的义务?

实际上,作为一个前端开发者,对用户界面的最终呈现,是负有最重要的义务。她既需要从技术层面评估产品经理或UI设计人员是否有“异想天开、信马由缰”的部分,又要像产品经理那样去思考用户交互的合理性,也要像UI设计人员那样具有“审美”的意识。

你可以不这样做,但是如果你要像突破coder(码农)的层面,正儿八经的像个programmer(程序员)那样工作和思考,你就必须成为一个真正的“前端开发者”,因为真正的“前端开发者”是天然的具有“审美”的意识的。

很多应聘者都只是回答了他们三者在工作上的联系,即出原型、做图、代码实现,说明他们工作了3至4年,从来都没有从本质上思考过这个岗位,我也理解大多数开发者的苦衷,甚至可能会挨骂,因为软件外包公司的特性,只要求赶工期、出活快、搞定客户。很少培养甚至不支持程序员做工作以外的技术储备。更要命的是前端开发者在外包公司,很难去要求产品经理和UI设计人员,但是这个面试问题的真相是想看到一个前端开发者工作数年后,最起码要有基本的困惑,你可以因为外包公司的原因,无法进一步思考“前端许愿也应该懂审美”,但你至少要有这方面的困惑。

可惜的很,大部分应聘者都是一脸茫然。

还有一个非常基础的问题,就是html和html5有什么区别?

很多前端开发者回答说html5比html新,有更新的语法特性。实际上html是一个超文本标记语言,html5只是他的一个较新的版本。html5有非常多的新特性,其中最重要的是加入了很多动态特性,以及canvas画布技术,可以非常方便的实现2.5D效果。

大部分人也没有完全准确的回答出来。你要说语义化、规范化是可以,但动态特性和canvas是必须要回答的。

在关于css方面,更让我吃惊大家基础的薄弱。比如,css中实现渐变效果的最简单方式是什么?很多人都知道是一个属性、方法、函数等等,但是都没有准确的回答出linear-gradient这个函数名称。linear是线性的,gradient是渐变的含义,这就是CSS实现线性减半的一个函数,我都不知道这些小伙伴是否对得起她们的CET-6级。再问她们渐变有哪些?也不知道除了线性渐变,还有径向渐变(辐射渐变)、锥形渐变(圆锥渐变)等等......

作为一个前端开发者,网页布局是面试中最最基础的问题之一。当问到弹性盒子(flex)和网格布局(grid)的区别时,都能说出来是如何使用的,但是绝大多数应聘者,都没有准确的回答出来flex是一维布局,而grid是多维布局,对于一个页面来说,它本身就是多维的(行和列),用grid进行页面布局,在一行的细节处用flex布局。当然,你可以全部用flex或者grid进行布局,也可以用其他方式,甚至用table标签进行布局,但是在flex和grid的范畴内,你在长期实践内,是要明白它们本质上的差别是一维布局和多维布局,而不仅是局限在用法的不同。

说心里话,我觉得对于一个工作了2年、3年以上的前端,这些都应该是最基本的知识点。

在vue方面,更是让我大跌眼镜。任何一个vue的使用者,都知道MVVM模式,也都知道M代表Model,V代表View,VM代表ViewModel。而vue最重要的特性就是支持view和model的双向绑定,无论视图和数据哪一方发生变化,另一方都立刻自动更新。而实现这种自动更新的关键就在于VM(viewMode视图模型)的存在,实现了View和Mode之间的及时更新(DOM和数据的实时同步)。

我的面试问题就是viewModel为什么能实现双向绑定?是因为js里的什么功能?

大部分人都能回答出setter和getter,但这与问题关系不大,众多应聘者中,只有一二个小伙伴说js里有一个方法好像提供了技术上的可能,我再追问,什么方法?谁提供的方法?就没有下文了。

我想,难道是因为公司在合肥,不在大城市,所以招不到和的优秀学生吗?或者优秀的前端开发者吗?合肥只有一个就是中科大,只有合工大和安大,优秀的学生或者优秀的前端开发者都去大城市了吧!或者都已经被其他公司招揽了吧?

作为vue的灵魂特性,一个工作了2年、3年,甚至4年的前端开发者,在不断使用vue框架进行项目开发时,难道就没有好奇过,为什么它能够实现双向绑定码?

我算是一个后端程序员吧,主要从事c、C++,也用过C#,前端很少接触,vue只是简单的了解,但是当我刚接触vue时,我就好奇这个双向绑定,稍微了下。其实这个面试题的答案就是js里的全局对象object有一个内置的方法defineProperty,这个方法可以重新定义一个对象的属性的getter和setter,就这么简单的一个回答就可以了。

在文章最后,我想送给所有年轻的程序员们一段话,也许不一定正确,但是我这么多年职业生涯的感悟:

要么从大量项目中被动的积累经验,要么从项目中主动积累经验。项目数量不是重点,而是是否具备自主学习的意识。大多数项目是重复性的,区别在于业务逻辑的不同,而不是代码逻辑的不同。

如果是项目经理、产品经理、UI人员、架构人员,没有办法,只能不断地通过新项目的积累去学习业务逻辑,从而获得成长。但是后端和前端开发人员,恰恰有快速成长的捷径,就是从项目本身中积累自己的代码逻辑。

段誉,年3月3日,写于合肥。#优质作者榜#
分享 转发
TOP
发新话题 回复该主题