Skip to content

Latest commit

 

History

History
318 lines (174 loc) · 5.69 KB

File metadata and controls

318 lines (174 loc) · 5.69 KB

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

What

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

  • 一专多长
  • 解决问题,而不是醉心技术

Done is better then perfect --- facebook

How

  • 先精后广,一专多长

先一个专精,才有“亮点”。

  • 围绕商业目标

老板雇佣一个员工,不是因为他能写程序,而是因为他能帮助自己赚钱。

  • 关注用户体验

每一个糟糕的体验背后都蕴含着商机。

大巧若拙

做自己会用的产品(一定要是产品的目标用户)

Study

岗位优于公司

《写给大家看的设计书》设计四大原则:对齐、对比、距离和重复。

将自己的简历做成自己的一个作品,会是一个很大的“亮点”。

Wild

大公司优势

  • 较小的风险
  • 技术最佳实践
  • 垂直专精的技能
  • 服务海量用户的经验
  • 软技能
  • 人脉
  • 心态

Reputation

答应做的事,全部都要完成,实在有问题,要讲出事实。

积累作品集。

  • Github/Dribbble
  • Github Pages + Jekyll/Dexy

Http

前端视角

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

后端视角

  • 提高服务器的请求处理能力
  • DDoS攻击

Cache

服务器缓存

  • 基本的数据库查询缓存
  • 扩展数据库缓存:memcached
  • 再加一层文件缓存
  • 静态化

浏览器缓存

  • Expires
  • Last-Modified
  • Restful Web API
  • HTTP 1.1加入的Cache-Control
  • 浏览器缓存的现实世界

Front-end

知识体系

  • 对浏览器兼容性的了解
  • 对HTML/CSS/Javascript语法和原理的理解
  • 对编辑器和插件的熟悉程度
  • 对调试工具的了解程度
  • 对版本管理软件的熟悉和应用经验
  • 对前端库/框架的使用
  • 标准/规范

中级工程师

  • 对代码质量、代码规范的理解
  • 对Javascript单元测试的熟悉
  • 对性能优化的应用和理解
  • 对SEO的应用和理解
  • 代码部署
  • 移动Web

高级工程师

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

Mobile-developer

一个转型故事之行动重于计划。

一定要是自己产品的用户,先要有,生存下来再优化。

《精益创业》:客户需求只有在实际使用中才能辨明,再多的前期调研也只能发现客户认为他们想要什么,而不是客户实际上想要什么。

  • IOS原生开发
  • Android原生开发
  • 混合模式

Continuous-integration

版本控制最佳实践

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

包管理

  • 一个程序只做一件事,并做好

构建工具

Programming

全栈工程师最佳实践

通用通途语言VS特定领域语言

  • 尽量用最熟悉的通用语言来解决问题,比如Python、Java或C++
  • 优化解决方案,提炼出一种真正精简、优雅的扩展库
  • 开源扩展库,根据其他人的贡献来继续优化解决方案

VPS

有条件建议购买VPS玩。

  • 增加对网站全貌的了解
  • 更稳定
  • 部署自己的环境
  • 学习Linux
  • 理解HTTP

实践

  • VPS选择:
    • 内存>硬盘大小和读写速度>CPU
    • 客户服务
  • 关注服务器安全
  • 操作系统选择
    • CentOs 上手成本低,资料全,社区支持高
    • Debian 更稳定,占用空间&资源少,
  • 域名解析(建议设置在国内智能DNS提供商,如DNSPod)
  • 云服务器(更小成本的替代方案)

Design-pattern

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

设计原则

  • DRY = Don't Repeat Yourself
  • 惯例优于设置
  • KISS = Keep it simple,stupid
  • 最少知道原则

Efficient

时间管理四象限

如果平时没有做重要的事情,往往是在做紧急的事情

  • 1.重要又紧迫(立即执行)

如:线上出现bug、服务器出现漏洞、用户投诉

往往第二象限问题没处理好导致,经常在这一象限,说明平时在“瞎忙”

  • 2.紧急不重要(可请他人代劳)

如:会议、一些可转交的需求

  • 3.重要但不紧急(制定计划)

如:线上体验优化计划、团队的长期发展方向和个人培训

主要工作投入,避免“瞎忙”

  • 4.不重要不紧急(拒绝)

如:逛论坛、刷朋友圈

消除重复工作

比如利用grunt/gulp,抽象常用代码库,整合常用工具

给自己留出不被打扰时间

编程需要连续思考时间,也才能深入。

番茄工作法

每25分钟专注工作+5分钟休息

跨界思考

了解其他岗位的基本知识和思维方式,减小沟通成本,提高自我价值。

纸上头脑风暴

笔跟纸是最灵活、最容易修改、成本最低的头脑风暴方式。

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

莫被加班绑架

Design

设计十大基本理论

  • 亲密
  • 对齐
  • 重复
  • 对比

设计工具

  • Axure
  • Sketch
  • Quartz Composer
  • 代码

thought

  • 兴趣
  • 耐心
  • 责任感

学一点管理

  • 没有在最开始做出合理的时间评估
  • 没有根据人员的强项来安排任务
  • 没有唤起他们对项目成功的渴望
  • 缺乏沟通

《卓有成效的管理者》5个思维习惯

  • 知道时间用在什么地方
  • 总是对外界的贡献
  • 善于利用长处;包括自己、上司、同事和下属的长处
  • 集中精力于少数重要领域
  • 必须善于做有效的决策

针对目标听众,面对什么人,说什么话