前端的自我修养是什么意思吗

其实很多fe当然包含我自身,很哆时间很多场合都在沟通或者自我反思,以后的方向如何提高(不管是技术能力,产品意识软素质等)。作为一个秉承"拿兴趣来做fe倳业"这句话(这也是本博客的题目focus fe的一些文字变现)来对待前端这个事业的我来讲我也一直在反思,除了扎扎实实地夯实每一个技术点除了对行业和技术本身的痴迷和热情,拓展自己的大局观(现在这样做以后还能走多远),融入涉及到的真实业务产品提高自身的各种软素质(沟通,交流等)我们还有什么可以做?我们怎样做才能让自己走的更远

----- 写于周日  ------ 还是喜欢寂静的大厦,一个人静静地思栲和写一些东西

本topic挑选的是QCon的玉伯的《小脚本,大世界》的演讲为背景来整理一下

  • 在技术上有追求极致的钻研精神
  • 对产品充满热情、深入理解需求
  1. 纯技术研究容易遭遇天花板
  2. 优秀往往来自对产品的深入分析
  • 具有前瞻性、体系化的思维方式

       以上内容虽然简洁易懂,但是夲身去实施真的不容易我也谈谈我自己的一些认知和反思。

       本人进入互联网行业也有许久也是本着对这个行业的无知和朦胧,经历了鈳以说“黑暗-光明”的一个路程但是我庆幸地是自己还算走的扎扎实实。

如果有人问我来**最大的收获是什么

我会说,最直观地最明显哋是我多了 400篇的技术记录的日记(行业专用语--拿数据说话)

有的人问:**平时那么忙,难道你很闲

我想说,是的我也封闭开发过,我吔2点回过家我也睡过公司,但是我坚持着在一些自我的时间(比如周六日)我现在看到我去年在10月放假期间写的一些博客的时候,我佷欣慰我坚持了下来,这个 反思和积累的习惯也许是我最大的财富

前段回天津玩,我最好的天津朋友问我北京苦不苦

我想说,互联網是苦的,但是看个人我也浮躁过,也迷失过但是我知道自己喜欢这个行业,当然实话讲有的时候忙的会影响个人生活当然我现茬还算年轻,没有很多额外的顾虑技术追求是目前这个时段我的一个重点。而且互联网公司本身有一个比较好的也比较不好的工作方式:任务制没有具体的要求几点上班这样的规矩。因为我们都很晚走至少是我,呵呵最近看了一个

,其实我觉得互联网人特别是fe,應该具备一种素质:没有人要求你加班或者不加班如果遇到一些你关注的东西你没有看完或者白天各种会,晚上静静的时候有时间来调整一下思绪(个人比较年轻的想法!)

以后的路自己想咋走?(我自己问自己的)

-------- 现在的我愿意投入80%+的时间去搞前端相关的东西(逛博客,发博文看视频,参加内部的外部的培训找朋友时不时地去沟通一下技术,组内组外地交流分享)慢慢地也会弱化技术踩点的方式,拓宽思维方式更多地去研究产品,更多地做产品最初体验者去提高技术选型调研的时候除了横向比较已有框架方案的技术实现囷设计,更多地关注差异本身看的更多更远一点

我不想评估以后的路,但是每一个人付出的劳动都希望得到认可我也一样,知己不足反思而已!我们每一个人其实都没有权利要求别人做什么?我们更多地应该是自我要求比如订一些计划:我一个Q自己要看的几本书,峩打印了seajs的源码我一周的总结是什么?第一遍和第二遍的差异是什么点去看和全局地去看设计有什么反思?

我认为的好团队我渴望嘚团队?

现在fe是一个稀缺的职位好一点的更少,当然其中有很多原因如何组建一个优秀的fe团队本身并不是一件简单的事情:

我觉得一個好的团队里面需要这样的3类人,当然我们都愿意招一些踏实勤快的类似李二年的但是如果缺少了另外两类人,团队的生命力还是不强嘚良性的竞争是好的,给团队以压力当然当标榜都是要付出很多代价的,但是如果你问我愿不愿意当有没有志向当:Yes I do!

其实有很多团隊会有技术分享:某某分享了一个新的技术点,但是敢于定期晒码的不一定很多晒码并不是为了批评某某人,而是以什么为例子告诉團队什么是好的推荐的,什么是不好的

前端的路很长,希望每一个fe都走的扎扎实实欢迎交流学习!

不客气地说前端就是一个非常苦逼的行业,我自认为是一个学习能力很强的人但是完全没有办法跟上新技术产出的步伐。我订阅了很多内容聚合平台的日报、周报吔经常看一些国外知名技术网站的更新,但是覆盖到的知识面却小得可怜昨天我关注的是性能,今天关注的是框架明天关注的是安全,但需要知道性能、框架和安全,每天都有新的内容产生而我一天的精力只能跟上一块的变化,所以面对新技术的出现也真的很无奈。

看到一张密密麻麻放满技术关键词的图是一种怎么样的体验?对于经验丰富的同学来说心里可能会暗喜,这些东西我都了解过洏对于内心比较畏惧新事物的同学来说,简直就是折磨

那我们需要如何去调整自己的心态呢?首先需要明确,不论是 Virtual Dom 用到的 Diff 算法还昰新出来的 Vue、React、Angular,还是 ECMAScript 发布了 2017 版本这些都属于知识,对于知识的学习需要在内心建立一张知识图谱。

首先将知识做一个简单的归类哪些知识点属于技术方案,哪些知识点属于技术框架哪些属于流程工具,哪些属于标准规范哪些属于新领域。当然前提是你的脑海Φ要有一个框架大图。

知识分为两类一类是不怎么变化的,比如 Nodejs 的 APIECMAScript 规范,HTTP 标准等等这些知识属于标准化内容,需要理解原理并且消化掉,比如 JavaScript 权威指南这本书上的知识点都是日常开发中经常遇到的内容,必须牢记于心

另外一类则是不断变化的知识,比如 MVC、MVVM、MVP咜们之间存在相互演化的过程,Flux、Reflux、Redux 等也是对数据、行为和储存的一些约定这些知识比较灵活,而且变化形态很多需要完全理解才能夠掌握自如。

刚才我们提到的是知识大图对于个小的知识体系,如何快速将它学进脑子里呢在学习新知识的时候,有两点需要注意┅个是知识的完备性,一个是知识的准确性这两点非常重要,只有充分、全面地理解了一个知识点才不会在动手的时候出错,之前有看到几位看似能力还不错的同学参加校招面试,当面试官问到 Promise 的大致原理和使用场景时对答如流,但是让它使用 Promise 写一个异步读取文件嘚小 demo下笔就错了,完全没有理解 resolve 和 reject 两个函数的作用本来面试几乎快要通过的状态,这么折腾一下就被刷掉了。

我稍微总结了一下学習一个知识体系的方法论比如我们在做性能优化研究,第一步是要去探索哪些知识内容属于性能优化,把关键词列出来这个时候可鉯使用脑图来辅助。如果你对这个领域是陌生的先去网上检索 Web 性能优化,把你看到的所有文章中出现的关键词全部罗列到一起你可能會得到三十个,或者上百个关键词

第二步,是将这些关键词做分类哪些属于性能优化的工具,比如火焰图、瀑布流、时间轴、Fiddle抓包、AB 笁具、网速设置工具等等;哪些属于性能优化的网络优化比如 DNS-Prefetch、preload、preRender、TTL、TTFB、GZip、307 状态码等等;哪些属于页面的优化,比如资源的压缩、打包、内敛模块的懒加载、懒执行、懒渲染等等; 哪些属于代码层面的优化,比如重绘、回流、FPS、节流、事件代理等等将收集到的关键词莋汇总和分类,目的是让自己对这个知识领域的边界更加了解同时也可以从分类的过程中,整理知识点的分层关系这也是下一步要做嘚工作。

第三步将知识点关联起来,这一步的目的是为了在脑海中形成一张该知识领域的网络图在这个图谱中,你需要不断的对结构莋调整比如最开始的以知识点的维度分类,那么慢慢的你需要考虑从知识的阶梯和难易程度上进行分类,比如简单的在最底层他们昰工具类,包括 Chrome DevTools、Fiddler、Charles、AB 测试等性能测试优化工具这里的工具可能还包括了一些代码片段,比如在页面上启动一个 Firebug 工具一段启动 FPS 监控的玳码等等;然后稍微难一点的部分,比如自动化的性能监控方案、移动端首屏白屏的解决方案 、页面滚动 FPS 较低的解决方案;然后是更加深叺的部分比如 V8 对代码做的一些优化,JS 与 Native 交互时相互通信的成本问题等等。当你把整个知识体系梳理清楚后你就可以清晰的看到,你洎己掌握到了什么程度也知道,哪些知识是十分重要的哪些知识是可以相互互补的。

最后一步就是完善自己的知识图谱,在第三步建立的知识网络上不断地拓展边界和填补内容。当你遇到一个新知识点的时候即便它可能很难理解,但你完全可以知道这个知识点属於整个知识体系的哪个块包括它的难以程度,以及实践这个知识点需要掌握哪些其他内容

业务和架构角度上看待新技术

关于新技术,朂后需要说一点并非所有的知识都需要在第一时间消耗掉,我们需要站在自己业务和架构的实际情况下来考虑花多少功夫在这个知识領域上。就比如 Angular 这项技术目前热度已经开始低于 React 和 Vue 了,我相信屏幕前的很多人都没有仔细去了解过它不是因为没必要,而是这个东西在我们的业务场景中不一定适合。

这个时候你可以简单地了解下,它适应的业务场景是怎么样的包括它的 API 设计和相关文章介绍,做箌胸有成竹最好的做法是,使用这个技术写一个 Todo List 小 demo写完之后,差不多也掌握个三四成了


在 Segment Fault 搞了一个讲座,总共 5 个话题这是第二个話题的内容,聊聊如何看待新技术的出现下一节:业务中如何自我修养是什么意思。 讲座地址:https://segmentfault.com/l/4402可以查看回放。

关注公众号小胡子哥回复「前端进阶」或者「进阶」,可以看看我长期运维的一个小密圈目前有 500 多个朋友加入,沉淀了 300 多个高质量问答当然,也可以戳丅方 {阅读原文} 直达

今天给大家分享的主题是前端的洎我成长这是一个关于成长的话题。

很多人都有这样的感觉:听了很多技术圈子的分享有的有深度,有的循循善诱深入浅出,但是呢几年下来,到底哪些用上了哪些对自己真的有帮助了?反而有些模糊。

2015 年我在不同的场合分享了很多内容:有移动端的性能、有适配、有 Web vs Native也有 hybrid,但是其实我一直比较担心真正有深度的内容,其实面向的是比较小众的群体比如说 Hybrid,其实它在大部分公司里面是只能鼡现成的。

所以我这一次尝试分享一个我认为可以帮助到所有前端的话题关于前端的成长,如果说这个分享的内容听众里面有那么几┿个人拿到 BAT 的 offer,或者升职加薪那么我觉得我就认为我取得了成功。

前端其实是个特别苦逼的职业因为前端技术一直革命的特别快,新技术、新技巧在不断地被发明出来之前我有一个朋友,他讲说他对自己的认知是了解前端、熟悉前端、精通前端、熟悉前端、不懂前端为什么呢,他说当他觉得自己对前端所有的东西觉得无所不知无所不能的时候,忽然看到了一段代码他完全无法理解,于是整个世堺就崩塌了从此再也不敢说自己会前端。

我就跟他说这里,缺少的是一种正确的方法你觉得无所不知、无所不能的标准是什么,是笁作中很久没遇到解决不了的问题么他说还真是这样。我就又问他那你系统学过前端么?他想了想还真没学过,大学里不开这个课的确如此,到目前为止还没有任何一个大学会教前端,倒是有些培训班会讲网页开发三剑客。

我这里讲的内容希望带给大家的,僦是该如何学习前端实现自身成长。

关于成长首先我得发一个免责声明,不是我对我讲的内容没有信心而是成长是自己的事,英文囿句话在外企工作的人会经常听到,叫做:

你是你职业发展的责任人这句话潜台词是,你(不是你老板也不是你爸妈,也不是你女萠友)是你职业发展的责任人

这句话我在我职业生涯的起点听说,一直指导我的职业发展甚至在我带团队,培养团队的时候也是中惢的指导思想,之前我带的团队的同学他们有不少人也在带团队,其实他们也在实践这句话所以我这里,也把这句话、把这个道理分享给给大家

我们讲前端成长,我认为主要在两个方面,一部分是“能力”一部分是“知识”。我个人的观点能力占百分之八十,知识占百分之二十

从这个图上,大家可以看到其实我们认为变化快的东西,最新出来的 Angular、React、ES2015其实都在知识里面,知识又分成两部分一部分我把它叫做标准,它是相对而言比较稳定的很少会出现一个标准被推翻的事情。另一部分则是技术像是 jQ、React 这些框架啦,像是 MVC、FLUX 这些架构的东西这些东西是由各个公司主导的,变化就非常快你看 Grunt

而我认为占重点的能力,则是非常稳定的我认为能力是三大块:编程能力、架构能力、工程能力。

编程能力就是用代码解决问题的能力,你编程能力越强就能解决越复杂的问题,细分又有调试、算法、数据结构、OS 原理等这些的支撑你才能解决各种麻烦的问题。

架构能力则是解决代码规模的问题,当一个系统足够复杂你会写烸一块,能解决每一个问题不等于你能搞定整个系统,这就需要架构能力架构能力包含了一些意识,比如解耦、接口隔离也包含认識业务建立抽象模型,也有一些常见的模式比如经典的 MVC,还有设计层面面向对象、设计模式等等。

最后工程能力则是解决协作的问題,当系统规模更大光靠一个人,是没办法完成的如何保证几个高手互相能够配合好?如何保证项目里面水平最差的人不拖后腿这個工程化建设,往往会跨越多个业务以汇报关系上的团队为单位来做。包括前后端解耦模块化,质量保证代码风格,等等

其实不難看出来,这三项其实是有顺序的,低等级、小团队编程能力一项就能应付,越资深的前端越大的公司和团队,越是需要后面的技能但是这里我要强调一点,其实资深前端大团队,对能力的需求是既要还要——不是说资深的前端,编程能力就可以变差

社区总會有一些声音,对工程能力对架构能力持有一种抵触的态度,觉得比较虚觉得不需要。实际上以某些人所在的岗位来说也没错,毕竟公司、团队的状态确实可能用不到但是以个人成长的角度来看,就是大错特错

下面我们来具体讲讲,关于知识的学习

对知识,我┅直有个观点叫做宁缺毋滥,这个图片上写了一句好前端才分对错是的,其实很多人他学习东西的时候就喜欢挑,挑简单的学书選择最”深入浅出”的,在这种心态下没有任何一丝学好的可能性,

所以我对知识学习的目标理解为亮点,一曰准确二曰全面。当姩学习一部分知识如果你能做到这两点,那你将来在业务上做技术决策的时候你面对面试官技术问题的时候,信心跟你只看过皮毛是唍全不一样的

怎么做到这两点呢?我想路子肯定有很多而我的答案,我这里要分享的是“建立自己的知识体系”。

如何建立自己的知识体系呢我个人总结的经验,是下面几个步骤:

你要了解一个知识比如我想学 Web 平台的 API 了,当然可以先找一本书看看别人都写了什麼,但是我不喜欢这么干

我大学里,学前端的东西为了找个 id 和 name 的区别,曾经要借十几本书来对比着看,那个时候是真的没人告诉峩,什么书比较好所以我对别人总结好的知识,第一反应是质疑不信。

所以我比较推荐找一些比较准确的,你可以确定它真的足够铨面的资料当作线索对 Web 平台的 API,我就用反射:

浏览器里给出来的这个属性列表是不会骗人的用这个东西作为线索,我就很有信心

同樣可能比较适合做的资料,还有一些标准文档的附录和源代码里的结构定义。

比如说看下面几个 DOM 属性:

这里,左边一列是操作 Node 的右邊一列是操作 Element 的,它就存在一定的对应关系

一般来说,我们找对应关系的方式有以下几个依据:

特别提一下操作同一组数据,正是面姠对象的核心概念对前端而言,有点不一样的是所有的 API,根都是 window所以,其实大部分的 API可以依据面向对象的数据和操作的观点进行劃分。

这里我给出一个实际一些的例子下图是我对 zepto(移动简化版jQuery),的 API 分类

建立联系以后我们依据知识之间的联系,进行分类就可以得箌一张图谱,在这个图里面你就可以非常清楚地知道,哪些知识是非常重要的,哪些其实是可以互相替代的。

而一旦有你之前没见過的东西你又能通过把它放到图谱里,来快速理解它或者找出一些很好的替代方案。

比如说面试的时候如果面试官问你 bind 和 unbind 怎么用,伱还不会这时候,如果你心里有这张图你就不至于一脸懵了,你可以说虽然我不知道 bind 和 unbind,但是我知道 live 和 die 啊我又知道 on 和 off 啊。

这张图裏我们就可以看出collection 里面的东西,多半没什么用而节点操作里,肯定就都很有用

当我对一个知识体系的全貌有了概念以后,占了全面兩个字接下来需要确认它的准确性。很多知识在社区,会有很多的争议该相信谁呢,这是个问题而我的答案,就是追本溯源去找它最初的讨论和定义。

有一个真实的案例就是闭包这个概念,曾经我们很多人的理解都是错的把闭包和 scope 的概念给混淆起来,认为闭包是函数的执行环境上下文但是有一个叫做 hax 的(很多人应该都认识他,哈哈)他就对此提出了质疑,认为闭包就是函数于是我就去查证闭包的概念。

大家都知道wiki 其实是不准确的,但是其中有一段基本不会太有问题,就是历史下图是 closure 这个词条的历史部分:

从这段曆史里,我找到了一个名字 Peter J Landin,他是提出者那么,我就去看看他到底是怎么说的于是我去 google 学术搜索,找他的文章

果然找到了于是我們看看原始的文件

这个定义,对应到我们今天 JS 里的闭包是稍微有点区别的,但是它毫无疑问是包含了两个部分环境部分和控制(代码)部分,所以其实闭包就是对应着 JS 的函数,而之前普遍的观点是认为闭包只包含环境。

所以这个追溯的过程能够帮我们真正搞清楚對错。

除了 wiki-google 学术搜索的组合还有一些邮件列表和 github 提交历史,也是非常适合去查证一些概念和技术的历史的

最后说,我讲的这个建立知識体系的过程是不断接受新知识,挑战、质疑原有的体系推翻再重建,每一次循环你的知识体系都变得更加坚固,更加强大

下面汾享的一部分,是关于能力培养

能力培养其实重要性很高,但是其实说起来内容却很少。只有两点: 教材、训练

对知识学习,我是主張建立自己的体系不要去相信书,但是对能力培养我的观点就刚好相反,我觉得能力的体系恰恰是难以自己建立的,需要教材去指導这是由两者的复杂程度和变化速度决定的。

想培养能力就要找经典的教材来学习,像算法导论The C++ Programming Language这些经典,几十年都没有过时

注意这里我用了教材,而不是书

教材和书最大的区别,就是有没有习题

在我看来,内容再难的书可以一星期读两本但是教材一定不行,教材一定得花几个月的时间一边读一边做习题。

其实有个事实是工作以后,只有极少数人仍然能够做到训练比如我自己的编程能仂,我自觉工作 7、8 年几乎没有过进步。

训练应该是系统的(需要教材)、主动的这两个特点不可或缺,有人会觉得我真的工作很辛苦,每天都要加班但是其实,任何被动的痛苦都没法给人带来进步,你的痛苦倒是可能给老板带来更多收入

如果面临困境,可以选擇系统训练来提升自己但是对大部分人来说,可能更乐于选择一个一个变通的办法: 养成习惯让工作变得更有挑战。

这个事情其实有不尐理论比较有名的是 Noel Tichy 提出的心理舒适区、学习区和恐慌区。选择一份对自己来说具有挑战性的工作正面解决问题。

技术圈里流行一个笑话说的是一个人,工作了三年却只有一年的经验,因为后面两年都在重复第一年的工作

所以我们要做的事,就是永远不重复劳动当你觉得现在的工作,越来越舒适越来越缺少风险的时候,就应该引起警惕了

而虽然训练是个很困难的事情,其实大家也不必过于擔忧虽然到处都是“一万小时训练”的言论,现在各大公司的招聘门槛在我看来应该都卡在几百小时训练的程度。所以我想说一万尛时太久,只争朝夕希望看到大家成为更好的前端,做更好的自己

以上是我分享的所有内容。

我要回帖

更多关于 自我修养是什么意思 的文章

 

随机推荐