6 月 20 日,极客大学与 GMTC 全球大前端技术大会共同组织了一次晚场活动——前端夜话。活动邀请到了前端大咖 winter、百姓网技术顾问贺师俊(Hax)、Swift 大神王巍(喵神)、《CSS 世界》作者张鑫旭、阿里前端技术专家狼叔等 5 位前端大牛,聊聊前端工程师的成长和发展,分享一些前端人关心的话题。以下内容整理自五位讲师的分享。
winter:谈谈框架选型
桑世龙(狼叔):当你对框架了解够多时,技术选型会更加容易
Node 里面有很多 Web 框架,研究里面的东西乐趣非常多。当你了解足够多的时候,你技术选型的点更加容易。
王巍(喵神):选型要看周围工程师的水平,以及整个公司的技术栈积累
Line 相当于日本的微信,主体的 APP 项目是比较大也比较老了,他们的选型可能会有更复杂的流程。周边的很小的项目,技术选型这方面基本就是几个工程师凑在一起,大家私底下商量商量,稍微资深一点、见多识广的来拍板。小公司给你试错的风险比较大,机会比较少,可能走错一步就凉了;而大公司好一些,走错一步我们换个方向再走一步。虽然是这样说,但是技术的选型并不是越激进越好,还是要看周围工程师的水平,以及整个公司现在积累的一些技术栈。
贺师俊(HAX):框架选型时可能有一些是商业上的决策反过来约束你的技术范围决策
框架选型时可能有一些是商业上的决策反过来约束你的技术范围决策。那么高级架构师怎么做呢?除了技术,还要考虑业务的需求。架构师很多时候考虑的是约束在哪里,这需要对技术、对业务都有很强理解,同时还要考虑团队的问题,要衡量现有人员架构下,大家的学习能力和团队,是不是能够做这样一个方案。所以选型这个事情比较复杂的,很难用一两句话讲清楚,很多时候是要拿 Case 来看。
大公司和小公司也有不一样。比如 Web 前端选型,可能不同框架完成你的需求都是可以的,但区别是,它的学习曲线或者说整个生态的情况会有不一样,这就需要根据情况选择了。在大公司里面,学习曲线、配套的生态就都不是问题,大公司会对这些事情做足够的投资,这也是大公司好处,相对比小公司来讲,大公司可以选一个再尝试一个。我甚至可以有几个团队分别有几个栈都没问题。
我个人还是比较倾向于 Vue,Vue 也是国际化的,并不存在中国人做的东西就一定不好,整体的工程水平完全是可以的,你有任何问题在中国可以得到更多支持,也可以得到比较好的资源。还有一个非常重要的特点,像 React 后面有大公司支持,主导权一定在公司,Vue 背后不是大公司支持主导,它是社区的东西。我作为高级架构师要去考虑的技术之外的因素就是,我这上面投入非常大资源的时候,是不是能够获得足够的参与的权利。从这方面来看我觉得 Vue 是更好的选择。
前端人的成长离不开与优秀的同伴共同交流,你可以加入我们的“前端技术交流群”,社群内会经常讨论前端相关的技术、分享免费学习资料,我们也会邀请前端专家进行社群分享、直播、公开课等活动,winter 就在群里哦!如果你感兴趣,欢迎添加社群管理员微信 GeekUni004,回复“前端群”申请入群。
winter:怎么看全栈?
桑世龙(狼叔):全栈是一种追求,一种解决问题的能力
我的经历比较杂。我创建了一个公众号—— Node 全栈,以 JavaScript 为核心统一前端和后端。当时觉得,如果我能用 JavaScript 做后端、前端,就可以称之为全栈。但是随着时间推移,我慢慢觉得,全栈更多是一种追求,一种解决问题的能力。
举个例子:以前在某厂,产品提了需求,后端说不能实现。产品非常想做,就跟我们聊,我们把 SQL 怎么写交给后端的同学,他就不说话了,后来再有什么需求都接。
所以说,你了解越多,能做的事情越多。今天我们都是大前端,把所有端都涵盖了,在大前端选择什么方向,这是全栈能够给我们提供的一个很好的选择视角,只有了解足够多,才能做出更正确的选择,所以我非常支持全栈。
王巍(喵神):公司规模不同,对全栈的需求不同
在 BAT、美团这样的公司里,可能并不需要你是全栈程序员。团队中每个人必须扎根在自己的技术栈,做到细致、完美,才能做出比较好的产品,相对来说这样的公司对于全栈的要求并没有那么高,但对某个领域专深的要求比较高。小公司会有截然相反的需求,开发者资源有限,如果一个开发者能够统筹全局,对各个方面都有一些了解,可能会对公司发展比较好,这个需要看各位所处在公司的环境需求。
对个人来说,我想法跟狼叔差不多,全栈是代表你学习能力,不一定是不全栈没办法过下去了,或者不全栈你就没有价值了。但全栈给你一种能力,你可以一个人独自做完整的设计、实现、运维上线,对你自己的技术提升会是非常好的一个飞跃。
贺师俊(HAX):是否全栈,是跟我们自己最后内心想要做的事情相关的
一类工程师的内心驱动力是“要做一个世界级的产品”,那很可能你比较适合全栈的方向。因为你的目标是做产品,能够从前到后掌控的越多越好,不但是技术,包括设计、运维、运营、市场。另一类工程师内心驱动力是“解决一个世界级的难题”,这个可能是最高的一个目标了,这可能就不一定适合走全栈的方向,因为你可能更希望做一个专家型,在一个特定领域技术钻研下去,成为专家的发展的道路。当然也有一些人是两者兼具的,但是这样的人是非常少的。
补充一点,我们前端有很大优势做全栈。偏向后端的工程师,如果往全栈发展,很可能需要学习一个新技术,因为你选择的后端是其他语言,前端要学的东西可能不太一样。但如果你从前端入手,不管你是用 JS 或是 Swift,现在都可以。所以,你往前端方向多发展一点,将来不管做不做全栈都一定有比较大的优势。
winter:从成长角度看,前端工程师是应该去大公司还是小公司?
张鑫旭:大公司小公司都有各自的好处
我刚开始工作是在一家小公司,没有很多会议、汇报、KPI 绩效考核,不用展示工作成果,我可以全心全意学习技术,只需要安心把工作干好,所以前期对我技术成长非常有帮助。去大公司则学到不一样的东西,你可以看到一个产品如何协作、迭代,慢慢壮大发展,如果以后创业,这种对你非常有帮助。另外小公司可能很多作风和习惯比较野生。我第二份工作是在腾讯,刚去腾讯的时候,没意识到我之前很多做法非常野生,经过大团队的协作,意识到原来自己以前那样是不足的。
王巍(喵神):如果去小公司,要看小公司的管理层是否优秀
小公司相对来说一个好处是没有很多繁琐的流程,而且你可能很容易每天跟 CEO 打一个招呼见面,跟 CTO 一起吃饭聊天。如果小公司团队管理层非常棒、非常强,这对你的成长有很大的好处。相对大一点的公司,流程方面会非常正规,这样对你的工程师的素养塑造很有好处。大公司锻炼一段时间以后,如果你想创业或是回到小公司,这些素养可以帮助你做得很棒。
桑世龙(狼叔):掌握学习能力,大公司、小公司都去做一些,谁知道哪一天会不会去创业呢?
我可能是换公司换的最勤的,十年差不多十个。对我来说,想到一个地方工作,最主要的动力是要把那里的东西学到。所以大公司、小公司我都去,包括自己创业,从 0 开始组建团队,都有经历过。对我来说,闲时要有吃紧的心思,忙里要有偷闲的乐趣。更多的时候是把时间利用好,不断自己成长。
但是小公司跟大公司还是区别的。小公司是什么都干,比如在天津当 CTO 的时候,前端要写、后端要写、数据库要自己管、服务器要自己维护,产品不行、设计不行要自己上,运营没有人做我也要上,这很锻炼人。那个时候非常穷,创业连底薪都没有,真的是情怀。
到大公司发现不一样,格局、眼界的收获非常难得。在阿里,去年扛了大文娱的双十一,那个紧张劲儿是不一样的,对于业务各种部门之间的协调、产研,甚至斗争经验都能够提升非常多。以俯视的视角看一些事情,业务角度的大局观不是小公司能够锻炼得到的。所以还是掌握学习能力更重要,大公司、小公司都去做一些,谁知道哪一天会不会去创业呢?也可能当一个没有薪水的 CTO 呢?
贺师俊(HAX):要有规划,你去这家公司想要得到什么?
第一点,大公司和小公司是有区别,但是不同的大公司之间、不同的小公司之间也有很大的不同。比如,可能有的小公司,没有大公司的命,得了大公司的病,200 人的规模已经跟 2000 人的公司一样有复杂的官僚。不同的公司规模一样,但内部却会有不一样的地方,所以还是要看具体的公司,有可能这个公司比那个规模小,但他有很多大公司的毛病。
第二点,最好大公司、小公司都去感受一下。我运气比较好,大公司小公司都经历过,而且都是比较好的。但现在这个年纪我回头看,觉得大家还是要有一个规划会比较好,你去这家公司想要得到什么?这个是你去的时候要想一想的,如果你到那里发现跟你想得不一样,也许你要快点调转方向了。
举个例子:我之前在百姓网,去的时候有 50 人,现在是 200 人,最多算小型公司到中型公司转变。他一直保持前面各位讲的优点,CEO 可以直接见到,可以跟他聊很多东西。我去百姓网时也可以选择去 BAT 级别的公司,我为什么选了百姓网?因为当时有一个想法,有一些技术架构上的东西想要验证,抱着这样目的我选择了相对小的公司。在大公司,他可能已经完全成熟了,你能够改变他的东西非常少。
我现在去了 360,相对来讲是一个大公司,有很多事情是只有在大公司才能做的。有些东西在小公司可能是一个没有用的屠龙之计,只有在很大平台上才能发挥价值,所以成长到这个阶段,你就要选择适合你的平台。
winter:目前所谓的经济寒冬和裁员潮,你们觉得会不会对大家的工作、求职、就业有一些影响?我们应该做什么?
张鑫旭:对于热爱学习的人来说是没有任何压力的
我觉得经济寒冬对于在座的这么多热爱学习的人讲肯定没有任何压力的。那些寒冬只会影响那些不来参会的人,不爱学习的,平时不注意内功修炼,学点皮毛的。
桑世龙(狼叔):最重要的是能看清行业后面的发展方向
其实对于我们来说,最重要你能看清楚行业后面的发展方向。从 2013 年之后,大前端属于爆炸性增长,到 2017 年基本开始趋于稳定了,现在新的框架特性没有那么多了。前端后面会越来越广阔,再往后走,前端能做更多后端的活儿。前端行业在变,整个世界在变,只有不断增加端上的各种应用,对我们来说这是非常好的事,只要我们坚持不断学,不至于说被落下、被时代抛弃就好了。
王巍(喵神):成为多面手,选择顺应时代潮流的车道
国内从去年年底开始经济寒冬,我在国外感触不是特别深,所以没有太多的发言权。日本这个地方相对来说更稳定一些,公司也不能随便就把你开排掉,雇佣是终身制的。但是如果你的公司有困难,可能会把你排挤到边缘部门,没有什么活儿干。虽然大家可能觉得没什么活儿干挺好的,看报纸、喝茶什么的,但应该是没有人想过那样的生活。为了避免这种情况发生,要不停的学习,不管是你在某一个方面能够精深下去成为专家,或者能够当一个多面手,只要做得出色,我相信最后找到一条出路是没有问题的。
还有另外一个比较重要的问题就是,大家在看一个技术的时候需要逐渐培养对一个技术方向的预判的能力,比如说如果你从头到尾还是做塞班,不管你怎么样,它都寒冬了。该转型、该选车道时,我们一定要果断选择符合时代潮流的车道,不要逆行。
winter:关于面试大家有什么可以分享的?
张鑫旭:展示最真实的自己
一定要展示最真实的自己,千万不能说这家公司喜欢这种类型,就伪装或者是表现成这样。过度包装自己反而不好,就算自己包装自己,进入公司后发现做的事情跟你不匹配,对公司和对你都不太好。
桑世龙(狼叔):面试即学习、给自己创造场景
面试的时候也能提高你技能点,有时候在某一方面可能没有那么厉害,但是在你不断的面试过程中能够提高,也是非常难得的。可能刚开始面试你碰了很多壁,但是慢慢发现自己的技能、能力都上来的时候,想进哪一个公司进哪一个公司。另外,你要能够给自己创造这种机会,比如我以前是做 iOS,要写 Node 哪儿来的精力?这个更多要给自己创造机会,比如说做一些开源项目,参与翻译,写书,都是非常好的学习方式,这也是非常重要的能力。
王巍(喵神):注重学习能力、交流能力
我个人来说当面试者经验是比较少的,但是我当面试官的经验比较多。我主要是看人的学习能力是不是强,是不是能够适应这个团队,是不是能够进很快的掌握新的技术栈。学习能力并不是一两眼或者几句话能够套出来和看出来的,那这个怎么看呢?是看你的交流能力。平时大家比较忙,但是一定要抽出时间,不管是小组内部做分享,还是跟你的同事每天沟通,都可以思考一下怎么说话,怎么把自己的心意和感情表达出来,这样在面试的时候也会有一些帮助。
贺师俊(HAX):面试和沟通都要真诚
首先自身的基础、技术要不断学习,本领过硬一定是没有特别大的问题。我认为最重要的事情是什么?应该是面试或者任何技术方面的沟通,都要真诚。我认为做技术就要踏实、真诚,是一就是一,没有那么多虚的。即使这次面试因为真实的表述,让面试官觉得你不符合当时的岗位要求,也没有关系,因为我们都在这个行业里,总会有新的机会。
很多时候作为面试官也会考虑,这个岗位不适合,但这个人有别的亮点,可能就会推荐其他岗位,甚至推荐其他公司。所以我觉得真诚这一点是比较重要的,它能减少面试官和面试者之间的隔阂、摩擦、阻力。
程劭非(winter):坦诚、努力、明白面试官的目的
首先,面试坦诚、真诚是沟通的一个基础,如果你有一些虚假的成分,面试官 95% 都是可以把你的伪装拆掉的,而且拆掉的过程可能非常的不愉快。比如说,有的人喜欢在简历上写“学习能力强”,这可能是因为没有别的可写了,其实这个事情特别容易被拆穿。
既然你说学习能力强,那一般我会问一下最近学了什么东西,给我讲一讲。这个时候有一些应聘者就开始造假,比如说“我最近看了一些函数式的编程的东西”,我说你用函数式编程给我写一个代码看看,然后可能这个话题到这里就结束了。
第二点,在坦诚的基础上,也要为自己简历上的每一条有意识的做一些努力,比如不一定是公司的项目才可以写在简历上,你参与的开源项目也可以,开源项目没有做,那像鑫旭写个博客也可以。其实你写一些博客,总结一些知识也是非常好的展示自己的机会。
我们很多人都是通过博客认识张鑫旭的,如果你博客也没有写,你甚至可以把自己对技术的理解写在简历上,展示自己。我第一次找工作的时候干过,当时投微软的简历我用 500 多字写了我认为应该怎么学 C++、我怎么理解,那个简历就命中了,后来跟招聘主管聊这个事,主管说其实那个东西没有什么用,没有太看,但是发现这个人写了这么多。
还有一个案例,微博 HR 的老大晒了一篇简历,那篇简历做了一个脑图,各种颜色,写微博的业务应该怎么发展。其实里面观点很幼稚,但是能看出他很认真,所以当时他就进了微博,而且据说这个产品经理发展还不错。
第三点,你要学习一下面试官的问题到底想问什么?比如,我运营的同事说他会问:你看过什么电影?有的应聘者很放松的说喜欢看《大圣归来》,再问他为什么喜欢看,他说:追女生。其实你们可以想想面试官为什么问你这个问题?明显是想通过电影,知道你的审美,知道你的品味,而不是跟你闲聊。面试官的问题都是有目的性的,都是设计好的,不会随口问。
「Tips:我个人的面试风格是高压式,我态度很好,但问题会让你压力很大,而且我有一个特别的习惯:不管什么人面试,如果我特别满意,这个人我想要了,我最后一定问一个问题让你感觉答不出来,所以参加我的面试,通过的一般体验不好,不通过反而最后闲聊挺开心。」
winter:有什么学习方法或者书可以给大家推荐一下?
桑世龙(狼叔):学习有三个境界
学习有三个境界:一是的最简单的跟书学;第二境界是跟人学,比如说跟贺老、跟 winter 学,你怎么从他身上把东西学走这是本事;第三是自己悟,比如像鑫旭老师,积累那么多的博客,写出了《CSS 世界》。
贺师俊(HAX):要有一个自学的能力
今天的学习条件已经比当年好很多很多了,不管书也好,视频也好,课程也好,都可以,我觉得最后你还是要有一个自学的能力,你要有一个消化的过程。这是个什么样的过程呢?比如看书的时候,你可以写一些读书笔记,再下一步提炼出来可以写 Blog。再往下还可以做翻译,一些国外的文章可以翻译过来,在翻译过程当中,也可以吸收知识。当然再下一步也可以写书或者是课程。
程劭非(winter):前端工程师要学习的是如何提升自己的能力
前端工程师要学习和成长的,我个人的观点是能力占 80%,知识只占 20%,所以你掌握了知识还远远不够,更重要的是快速提升自己的能力。这里的能力是指编程能力、架构能力和工程能力。
编程能力是用代码解决问题的能力。你编程能力越强,就能解决越复杂的问题,细分又有调试、算法、数据结构、操作系统原理等基础的支撑,你才能解决各种麻烦的问题。
架构能力是掌控复杂系统的能力。当一个系统足够复杂,你会写每一块、能解决每一个问题,不等于你能搞定整个系统,这就需要架构能力。架构能力包含了一些意识,比如解耦、接口隔离,也包含认识业务建立抽象模型,也有一些常见的模式,比如经典的 MVC,还有设计层面,比如面向对象、设计模式等。
工程能力,其实核心就是成事的能力。你要知道,当系统规模越来越大时,光靠你一个人是没办法完成的。那如何保证几个高手互相能够配合好?如何保证项目里面水平最差的人不拖后腿?工程化建设,往往会跨越多个业务,包括前后端解耦、模块化、质量保证、代码风格等。
当然要提升这些能力,肯定需要找到一个合适的方法并持续地练习,最好在练习的过程中还能得到监督和反馈。
极客大学前端训练营邀请 winter,带你用 3 个月时间通过从 0 实现 3 个项目,全面提升你的编程、架构和工程能力。通过刻意的练习和手把手的辅导,帮你感受大厂前端工程化实践过程,提升你的核心能力。如果你想了解详细的课程内容或者试听课程,可以扫描下图的二维码联系学习委员,获取视频课及前端学习资料。
前端训练营的受众是具备一定基础前端技能和经验但困于初级岗位的前端开发工程师,如果你正在这样的状态中挣扎,欢迎来战,突破瓶颈,就在前端训练营。
评论 1 条评论