Web全栈之路——《Web全栈工程师的自我修养》读书笔记

初次听到全栈工程师这个称谓的时候,我就被这个「霸气」的名字所吸引,全栈在我心里一直是技术厉害的大触的专属标签。虽然经常听到这个词,但是对这个词本身的理解却不甚清晰,甚至一度把全栈工程师简单地以为是全“端”工程师,以为同时会前端和后端就是全栈了,后来才知道,这种认识是多么粗浅。

无意间看到了《Web全栈工程师的自我修养》这本书,简单看了看目录就决定要买下来了,怀着对全栈的向往,我还是十分期待看这本书的。

全书小述

首先贴出全书的脉络图,我根据书本身的章节分成了16部分,尽可能概括地展现书中对我印象较为深刻的内容,并讲一些我觉得比较重要的地方详细地描述,而一些枝节便删了去。

Web全栈工程师的自我修养

感觉起来这本书更像是作者的随笔集,内容广而不深,读起来也就比较轻松。整本书的内容通俗易懂,其中还专门设置了一章“从学生到工程师”,可以看出全书更多的还是面向在校生和初学者。

正如书名上所用的词“自我修养”,这本书详细地描述了作为Web全栈工程师所应具备的“修养”,不仅仅包括编码上的能力,也包括了职场处事,思维方式,和生活方式上的“修养”,对拓展视野和思维方式有所裨益。

知识小记

看完全书,我感觉内容多而杂,好在内容平易近人,还是有不少有所收获的点,这里对一些点做下总结。

何为全栈

「全栈」表示未完成一个项目,所需要的一系列技术的集合

「全栈工程师」是一专多长,能够熟练运用多种技术栈独立完成一个产品的人。而那些拥有众多技术栈,而每种技术栈只是浅尝辄止,略知一二的人则被作者称为「野生程序员」

如何成为全栈工程师

  1. 先精后广,一专多长

    学习全栈技能的时候应当在特定的方向上有比较深入的钻研,然后再将学习目标逐渐推广开来。

  2. 围绕商业目标

    老板雇佣一个程序员,不是因为他能写程序,而是因为他能帮助自己赚钱。应该解决问题,而不是醉心技术,如果痴迷于技术本身,反而看不到问题的所在。

  3. 关注用户体验

    每一个糟糕的体验背后都蕴含着商机,应当从用户体验的角度考虑问题,要做自己会用的产品

Web全栈工程师所应具备的技术

  1. HTTP

    • 前端视角

      目的:让网站又好又快地展现在用户的面前

      关注点:

      • 尽量减少同一域下的HTTP请求数
      • 尽量减少每一个资源的体积
    • 后端视角

      目的:让服务器尽快响应请求以及减少请求对服务器的开销

      关注点:

      • 提高服务器的请求处理能力
      • 预防DDoS攻击
    • 前后端交集——BigPipe

  2. 缓存

    • 服务器缓存
      • 基本的数据库查询缓存
      • 扩展数据库缓存:memcached
      • 文件缓存
      • 静态化
    • 浏览器缓存
      • Expires
      • Last-Modified
      • Cache-Control
  3. 持续集成

    • 版本控制

      方式有Git和SVN

      最佳实践:

      • 鼓励频繁地提交
      • 确定分支流程
      • 定义于主干原则并坚守它
      • 不要把逻辑的修改和代码格式化放在一起
      • 不相干的代码分开提交
      • 保持工作代码库的“干净”
    • 包管理

      工具有npm,bower,Composer,gem,CocoaPods等

    • 构建工具

      在良好架构基础上使用构建工具来整合代码

      工具有Make,Grunt和Gulp等

      良好的架构:

      • 有合适的分离粒度
      • 最小知识原则
      • DRY
      • 最小化预先设计
      • 通过良好的分级,让文件易于找到
      • 有一致且可执行的命名规则
  4. 软件设计方法

    • 设计模式

      关注点:

      • 高效编写代码
      • 高可复用性
      • 抽象带来的可读性

      分类:

      • 创建型模式
      • 结构型模式
      • 行为型模式
    • 架构模式

      MVC模式

    • 设计原则

      • DRY
      • 惯例优于设置
      • KISS原则
      • 最少知道原则
  5. 大前端知识体系

    初级:

    • 了解浏览器兼容性
    • 理解HTML/CSS/JavaScript语法和原理
    • 熟悉编辑器和插件
    • 了解调试工具
    • 熟悉版本管理软件
    • 熟练使用前端库/框架
    • 了解相关标准和规范

    中级:

    • 对代码质量,代码规范有了解
    • 熟悉JavaScript单元测试
    • 应用和理解性能优化
    • 应用和理解SEO
    • 代码部署能力
    • 移动Web相关知识

    高级:

    • 代码架构
    • 安全
    • 对自动化测试的理解

全栈工程师生活方式和思维方式

  1. 积累作品集

    用处:向其他人展现自己的能力

    方式:Github和静态页面

  2. 高效

    • 阅读英文资料

    • 时间管理四象限

      002vgR8Mty6DXeznd0S62&690

    • 消除重复工作

    • 给自己留出不被打扰的时间

    • 番茄工作法

    • 跨界思考

    • 纸上头脑风暴

    • 使用版本控制工具盒构建系统

  3. 全栈思维

    • 想着把自己的产品和自己的名字联系起来
    • 学一点管理
      • 好的管理者能让平凡的员工做不平凡的事
      • 根据员工特质来授权
    • 培养沟通能力
文章目录
  1. 1. 全书小述
  2. 2. 知识小记
    1. 2.1. 何为全栈
    2. 2.2. 如何成为全栈工程师
    3. 2.3. Web全栈工程师所应具备的技术
    4. 2.4. 全栈工程师生活方式和思维方式
|