在买之前以为这本书是教你怎么去做一个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. 基于 Groovy 的自动化构建工具 Gradle 入门(转)

    本人工作之初没有使用自动化构建,后来敏捷了,开始使用 Ant - 完全面向过程的定义步骤,不进行依赖管理.再发展到 Maven,面向对象的方式管理工程,有了依赖的管理,JAR 包统一从中央仓库获得,保 ...

  2. The Swift Programming Language 中国版

    iSwifting社会的 Swift 兴趣交流群:303868520 iOS 微信公众账号:iOSDevTip Swift 微信公众账号:SwiftDev iSwifting社区 假设你认为这个项目不 ...

  3. Linux通过使用pdb简单调试python计划

    python自带的调试工具库:pdb # -*- coding:utf-8 -*- def func(num): s = num * 10 return s if __name__ == '__mai ...

  4. [WPF]DataGrid C#添加右键弹出选择菜单

    private void dataGrid_MouseRightButtonDown(object sender, MouseButtonEventArgs e) { ContextMenu cont ...

  5. PyUnit框架学习

    http://www.oschina.net/question/12_27127#INSTALL http://www.360doc.com/content/11/0606/23/54470_1221 ...

  6. 【NIO】dawn在buffer用法

    网络编程,buffer它用于数据传输到网络上的集线器应用程序,不用说,一个重要的线.提到buffer我不能说什么零拷贝,buffer什么内存管理,在dawn在,基于directbuffer再次能够实现 ...

  7. 二叉树3种递归和非递归遍历(Java)

    import java.util.Stack; //二叉树3种递归和非递归遍历(Java) public class Traverse { /******************一二进制树的定义*** ...

  8. 【j2ee spring】27、巴巴荆楚网-整合hibernate4+spring4(2)

    巴巴荆楚网-整合hibernate4+spring4(2) 1.图文项目 2.首先我们引入对应的jar包 这里用的是oracle 11g,所以我们使用的数据库连接jar包是ojdbc6, 的区别就是支 ...

  9. C# Windows Phone 8 WP8 开发,取得手机萤幕大小两种方法。

    原文:C# Windows Phone 8 WP8 开发,取得手机萤幕大小两种方法. 一般我们在开发Windows Phone App时,需要取得萤幕的大小来自定义最佳化控制项的大小,但是开如何取得萤 ...

  10. C# Windows Phone 8 WP8 , 文字超连结到网页 免打程式码,Xaml就搞定 ! !

    原文:C# Windows Phone 8 WP8 , 文字超连结到网页 免打程式码,Xaml就搞定 ! ! 一般我们在开发Windows Phone 8 APP ,有时会需要超连结连到其他的网页,但 ...