本文分类:
读书笔记

作者:余果。作者对全栈工程师的一些看法,以及五年工作经验的一些思考,尽管是否要成为全栈工程师有些争议,本书中的一些观点仍有借鉴意义。

第1章 全栈工程师的职业前景

全栈工程师是指,一个能处理数据库、服务器、系统工程和客户端的所有工作的工程师。根据项目的不同,客户需要的可能是移动栈、Web栈,或者原生应用程序栈。

传统流水线工作模式的优势和弊端:

优势:分解复杂性,使每个环节可以独立测试,利于提高质量和把控进度;产品以团队的方式来运作和生产,公司不会过于依赖某一个工程师;

弊端:灰色地带的工作无人主动处理;工程师缺乏主人感导致产品质量差;工程师缺乏全局的视野影响个人成长。

全栈工程师的发展前景:

全栈工程师是创业公司的理想选择,是自由职业市场的耀眼明星,还是天生的创业者。

第2章 如何成为全栈工程师

先精后广,一专多长;

围绕商业利益作为目标,技术是服务于商业目标的;

从用户体验的角度考虑问题,每一个糟糕的体验背后都蕴含着商机。用户就是所有你为之服务的人。

一个案例

我在面试求职者时遇到一个综合能力不错的候选人,他是一个全栈工程师。我问他,您现在掌握的技术比较多,那您未来的职业规划是怎样的?他说,他觉得用什么语言并不重要,但是最近一年开始把重心放在Android开发上,因为移动端App开发是现在的潮流,有很大的需求,在这里可以有所成就。但在未来,不排除改变方向去做别的事情的可能,到时候可能是iOS或者其他新的系统。基本上来说,自己掌握的知识体系是可以复用的,但也期待学习新的语言。

我喜欢他这样的态度,对未来有自己的方向,但也知道自己没法看得太清晰。对商业和市场有想法,而且自己也有足够的技术能力和自信向未来前进。相比而言,有些候选者的项目经验和学习技能很杂,东一锤子西一榔头,有些时候纯粹是为了折腾而折腾。

记住,当您只有一把锤子,您看什么都是钉子。而如果您痴迷于工具,反而看不到问题所在。因此,要先看看有哪些问题需要解决,然后再补充您的工具箱。永远从商业目标的角度来决定学习哪些东西,而不是纯粹为了锻炼技术能力而去学习。

第3章 从学生到工程师的转变

岗位优先于公司,即使在一个很好的公司里面,如果只是做着自己不喜欢也不擅长的工作,那能有什么前途呢。

记住团队里的每一个人。

有任何问题,主动问导师。

主动介绍自己,告诉大家自己是新人,请多关照。

每周发邮件记录心得总结、经验教训、学习成长。

实习结束时,用邮件总结所有项目,给出交接文档,并向大家致谢。

第4章 野生程序员

所谓“野生程序员”,就是没有计算机基础知识和相关教育经历,靠着对计算机开发的兴趣进入这个行业,虽然知识面比较广,但是各方面都一知半解的开发者。

作者建议首先加入大公司,从毕业生自己前途发展的角度来看,先加入一家上市大公司是个不错的选择。在大公司的头两年,是从学生到职场人士的一个转变,您可能会从大平台学习到一些规范的流程方法,养成一些足以影响您一生的习惯,认识更多的能对您职场有帮助的人脉。此外,大公司有如下优势:

  1. 较小的风险
  2. 技术最佳实践
  3. 垂直专精的技能
  4. 服务海量用户的经验
  5. 沟通、影响力、项目管理和演讲等软技能
  6. 人脉

第5章 程序员提高自我声望的方法

软件工程师事业的3个关键词,分别是技术、成长和声望。

怎样获得良好的声望?很简单——答应做的事,全部都要完成。如果遇到非常棘手的问题,那么真诚的讲出事实,寻求帮助。

积累自己的作品集,作品集是指您个人的项目和作品的集合,一份精心准备的作品集比简历更能说服人。

第6章 HTTP协议

基本优化方法是:

  1. 尽量减少同一域下的HTTP请求数

    (1)把静态资源放在非主域名下,这种做法除了可以增加浏览器并发,还有一个好处是,减少HTTP请求中携带的不必要的cookie数据。

    (2)合并同一域名下的资源

  2. 尽量减少每一个资源的体积

    (1)压缩图片和源码

    (2)选择合适的图片格式:如果图片颜色数较多就使用JPG格式,如果图片颜色数较少就使用PNG格式,如果能够通过服务器端判断浏览器支持WebP,那么就使用WebP格式和SVG格式。

  3. 缓存

    (1)使用CDN

    (2)延长静态资源缓存时间

  4. 把CSS放在页面头部,把JavaScript放在页面底部

  5. 资源静态化

第7章 缓存

  1. 服务器缓存

    • 数据库查询缓存
    • 内存缓存
    • 文件缓存
    • 页面静态化
  2. 浏览器缓存

    • Expires
    • Last-Modified
    • HTTP 1.1加入的Cache-Control

第8章 大前端

本章主要介绍了前端的知识体系。

第9章 向移动端转型

对于独立开发者,面向移动端进行转型是非常不错的选择。

对于前端工程师,当用户的客户端变成了手机浏览器和手机App,前端工程师自然要转移战场。而对于后台开发者来说,技术还是基于HTTP等互联网基础设施,不直接接触用户,所以并没有太大的改变。

第10章 持续集成

本章主要关注一下版本控制最佳实践:

  1. 鼓励频繁地提交。
  2. 确定分支流程:所有的特性和较大的bug修复都应该使用分支来修改。
  3. 定义主干原则,并且坚守它:主干对应的代码必须是可以发布并且不会产生bug的。
  4. 不要把逻辑的修改和代码格式化操作混在一起。
  5. 不相干的代码分开提交:也就是说不要在一次提交里修复两个bug。
  6. 保持工作代码库干净:不需要提交的文件包括编译后文件、配置文件和第三方依赖等,如果有文件不想也不需要提交,就加入到忽略列表(ignorelist)。

第11章 理解编程语言

编程语言有差别,但没有那么极端,也不存在绝对标准。语言只负责描述一个程序,而程序运行的速度,其实很大程度上不取决于语言,而主要取决于算法和编译器的质量。在快速开发中, 更重要的是库。

第12章 VPS

本章主要讲搭建自己的VPS,购买自己的域名。

第13章 软件设计方法

本章主要介绍了若干设计模式和设计原则。

第14章 高效工程师

本章中主要介绍若干可以提高效率的方法,主要的有:

  1. 阅读英文资料
  2. 使用Google搜索
  3. 时间管理四象限
  4. 消除重复工作
  5. 给自己留出不被打扰的时间
  6. 番茄工作法
  7. 时间宝贵,天下没有免费的午餐,不把时间消耗在搜索免费的资源上。

第15章 学习设计

主要都是《写给大家看的设计书》中的内容。

第16章 全栈思维

  1. 责任

    • 不要给自己没能完成的事情找任何理由,而要以诚恳的态度说明当前进度,以及未来是否能如期完成目标,如果不能,就直接说出来。这样老板可以对进度有所了解和预期。
    • 在职场中,评估一个人并不是根据他的能力,而是他能承担的责任。无论项目成功或者失败,准时完成或者延误,如果有一个人能主动汇报和负责,拍着胸脯说“我负责”,那他就应该是项目的主导和骨干,而不论年龄和资历。
  2. 学一点管理

  3. 学一点沟通技巧

本文来自 [时光记 - 王智超的个人空间](www.hiwzc.com),转载请注明出处。