在买之前以为这本书是教你怎么去做一个web全栈工程师,以及介绍需要掌握的哪些技术的书,然而看的过程中才发现,是一本方法论的书。读起来的感觉有点像红衣教主的《我的互联网方法论》,以一些自己的经历和感悟来阐述web全栈工程师需要具备哪些素质,而不仅仅是需要哪些技术。这算是我买的书中看的最快的一本书。

        
        在阅读这本书之前,我对全栈工程师的理解还停留在node阶段,随着node在服务端的风生水起,有一段时间会认为使用nodejs作为服务端开发,前后端统一使用js开发,便是所谓的全栈开发,比较流行的技术栈当属 MEAN 和 Meteor 了。然而,很多创业公司,没有专职的前端,大部分由RD同时完成前端和后端代码的编写,那是不是也可以称之为全栈工程师了呢?
        
        本书对全栈工程师的理解是 : 除了在一个专精知识领域有深入的研究之外,需要知识广博和解决问题能力强。抽象出来就是 1、一专多长 ; 2、解决问题能力强(而非炫技) 。 全栈工程师的成长路线,一定是先精后广,触类旁通。如果一开始就想直接追求全栈,只会导致杂而不精,没有核心竞争力。全栈工程师还有一个特点是对产品业务,用户体验都保持较高的敏感度。而不仅仅关心自己那部分技术实现。
 
        全栈眼中的http这一章分别从前端视角和后端视角来分析前后端所关注的侧重点。前端可以通过抓包工具或者chrome devtools 查看每个请求,同域下的资源请求数量等来找出优化点,更关注的是一个页面的请求数,资源大小等直接影响页面展现速度的因素。而后端则更关注如何更快速的响应请求,以及减小服务器压力。并给出了需要前后端协同工作的一种http优化方案,bigpipe。
        
        web发展到今天,岗位越来越细分。开始数据库设计是由相关的RD完成,现在有专门的DBA来操作和管理数据库,而前端也有些公司也分为UI工程师(也叫css重构工程师),JS工程师。细分之后的有点的职业门槛更低,长期在某一个方向上可能会有更深的造诣,然而缺点也很明显,每个人都被圈定在某个title限定的圈子里,接触的知识面变窄,接近的上下游之间,存在一部分灰色地带,职责不是很好划分,项目沟通成本增加。
 
        向移动转型。不管是大公司,还是创业公司,向移动端转型是一个必然的趋势。而在转型的过程中,对前端是有巨大的机会和挑战。我们都知道,H5页面一直在体验上被吐槽,webview加载和渲染性能远远赶不上原生应用,然而,H5的作为web 应用,天然具备的灵活性又是原生应用无法做到的,为了兼具两种应用的优势,Hybrid 便诞生了,对于混合应用,必须要求对原生应用有一定的了解,Scheme协议,H5资源离线化,native 和 h5 之间的通信,才能帮助前端工程师更好和原生应用开发者合作。
 
        设计原则:不管是什么方向的开发,有些设计原则是共通的。比如 DRY 原则:don't repeat yourself。 意思是在一个系统中,对于任何数据或者变量,都应该有且只有一个地方配置,其余的地方只是引用这里的数据。然而事实上,很多时候,变量定义的时候可能只有一个地方使用,随着业务的发展和功能的迭代,在其他地方出现了一次引用,是不是每次遇到一个都需要抽离一次呢?其实也不然,代码重构通用的法则是三次法则: 允许复制代码一次,当相同的代码片段同时出现三次以上,就需要将其提取出来作为公共模块。
 
        前面提到的很多是具体的某种场景下的具体方法论,当然还有很多没有列出来。实际上本书还提到了很多非技术的软素质。比如说如何进行汇报。如何像上级汇报,如何跟你的上下游合作人员进行沟通。要做自己的产品的用户。想要成为全栈工程师最重要并不是会所有的技术栈,而是需要具备全栈思维,也意味着需要承担更多的责任,包括了解上下游的工作内容和知识,再考虑设计方案的时候也能考虑到上下游之间的影响,具有跨团队的推动力和影响力。
 
 
        
        

《web全栈工程师的自我修养》阅读笔记的更多相关文章

  1. 阅读《RobHess的SIFT源码分析:综述》笔记

    今天总算是机缘巧合的找到了照样一篇纲要性质的文章. 如是能早一些找到就好了.不过“在你认为为时已晚的时候,其实还为时未晚”倒是也能聊以自慰,不过不能经常这样迷惑自己,毕竟我需要开始跑了! 就照着这个大 ...

  2. RobHess的SIFT源码分析:imgfeatures.h和imgfeatures.c文件

    SIFT源码分析系列文章的索引在这里:RobHess的SIFT源码分析:综述 imgfeatures.h中有SIFT特征点结构struct feature的定义,除此之外还有一些特征点的导入导出以及特 ...

  3. RobHess的SIFT源码分析:综述

    最初的目的是想做全景图像拼接,一开始找了OpenCV中自带的全景拼接的样例,用的是Stitcher类,可以很方便的实现全景拼接,而且效果很好,但是不利于做深入研究. 使用OpenCV中自带的Stitc ...

  4. 阅读《RobHess的SIFT源码分析:综述》笔记2

    今天开始磕代码部分. part1: 1. sift特征提取. img1_Feat = cvCloneImage(img1);//复制图1,深拷贝,用来画特征点 img2_Feat = cvCloneI ...

  5. element-ui button组件 radio组件源码分析整理笔记(一)

    Button组件 button.vue <template> <button class="el-button" @click="handleClick ...

  6. element-ui 组件源码分析整理笔记目录

    element-ui button组件 radio组件源码分析整理笔记(一) element-ui switch组件源码分析整理笔记(二) element-ui inputNumber.Card .B ...

  7. element-ui Carousel 走马灯源码分析整理笔记(十一)

    Carousel 走马灯源码分析整理笔记,这篇写的不详细,后面有空补充 main.vue <template> <!--走马灯的最外层包裹div--> <div clas ...

  8. STL源码分析读书笔记--第二章--空间配置器(allocator)

    声明:侯捷先生的STL源码剖析第二章个人感觉讲得蛮乱的,而且跟第三章有关,建议看完第三章再看第二章,网上有人上传了一篇读书笔记,觉得这个读书笔记的内容和编排还不错,我的这篇总结基本就延续了该读书笔记的 ...

  9. element-ui MessageBox组件源码分析整理笔记(十二)

    MessageBox组件源码,有添加部分注释 main.vue <template> <transition name="msgbox-fade"> < ...

  10. element-ui switch组件源码分析整理笔记(二)

    源码如下: <template> <div class="el-switch" :class="{ 'is-disabled': switchDisab ...

随机推荐

  1. hdu 4961 Boring Sum(数学题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4961 Problem Description Number theory is interesting ...

  2. ubuntu14.04中 gedit 凝视能显示中文,而source insight中显示为乱码的解决的方法

    1.乱码显示情况: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcjc3NjgzOTYy/font/5a6L5L2T/fontsize/400/fill/ ...

  3. Extjs4.10Model模型具体解释

    一.创建Model模型 Extjs4.10提供了两种方法来创建Model模型,也就是创建类 方法一: Ext.define('person',{              extend:'Ext.da ...

  4. 基于.net开发chrome核心浏览器【一】

    原文:基于.net开发chrome核心浏览器[一] 说明: 这是本系列的第一篇文章,我会尽快发后续的文章. 源起 1.加快葬送IE6浏览器的进程 世界上使用IE6浏览器最多的地方在中国 中国使用IE6 ...

  5. sgu 286. Ancient decoration(最小环覆盖)

    给你一个n个点,每个点度为k(k为偶数)的无向图,问是否能将图中的n条边染色,使得每个点都拥有两条被染色的边.也就是说,是否存在拥有原图中n条边的子图,使得每个点的度为2?仔细想想,每个点的度为2,实 ...

  6. 集成框架 javaweb开发平台ssmy_m(生成代码) java struts2 mybatis spring maven jquery

    网页地址 http://blog.csdn.net/lpy3654321/article/details/31841573 项目设想,在项目开发中,我们的开发者大多数时间都在反复开发 相同的keywo ...

  7. Android asynctask使用

    继承asynctask,有三个參数 三个參数的含义是第一个表示输入參数.第二个为progress,表示当前的进度,第三个为doInbackground    返回值 须要一个參数传入url,返回一个r ...

  8. Android实现限制EditText输入文字的数量

    一: 声明控件.          TextView hasnumTV;         TextView hasnum;// 用来显示剩余字数         int num = 50;// 限制的 ...

  9. Android Google Map v2具体解释:开发环境配置

    Android Google Map v2具体解释:开发环境配置                                       --转载请注明出处:coder-pig 说在前面: 说到地 ...

  10. Spark 1.0.0 横空出世 Spark on Yarn 部署(Hadoop 2.4)

    就在昨天,北京时间5月30日20点多.Spark 1.0.0最终公布了:Spark 1.0.0 released 依据官网描写叙述,Spark 1.0.0支持SQL编写:Spark SQL Progr ...