云社区 博客 博客详情

读评《web全栈工程师的自我修养》

feichaiyu 发表于 2020-02-17 23:09:13 2020-02-17
1
0

【摘要】 这本书年初的时候在班车上面翻了一遍。刚开始的时候对其中很多观点不以为然,认为太浅。不过后来再翻一次的时候,不少东西还是很有启发意义,因此加以推介,涉及到作者观点、大纲,有兴趣的同学可以自行阅读,加以判断。非常适合对全栈感兴趣,但对某一细分技术还不甚了解的同学。什么是全栈工程师现在,技术其实变得越来越简单。云服务就在提供水和电。 所以你需要充分的去了解PAAS服务的平台,amazon的服务,g...

这本书年初的时候在班车上面翻了一遍。刚开始的时候对其中很多观点不以为然认为太浅。不过后来再翻一次的时候不少东西还是很有启发意义因此加以推介涉及到作者观点、大纲有兴趣的同学可以自行阅读加以判断。非常适合对全栈感兴趣但对某一细分技术还不甚了解的同学。

什么是全栈工程师

现在技术其实变得越来越简单。云服务就在提供水和电。 所以你需要充分的去了解PAAS服务的平台amazon的服务github的服务让技术不再成为门槛让事情聚焦在提供专业的价值上面。这也就是世界级的IT支持了你再也不用担心“只差一个程序员”了。

LAMP的技术栈 MEAN的技术栈

作者提出全栈工程师或者说工程师的前景

  • 一专多长

  • 解决问题而不是醉心技术

其实全栈工程师跟我在taobao十年里面看到的工程师可能是不相符合的。很多淘宝的大型系统需要非常专业的工程师进行很多的优化才可以实现。

如何成为全栈工程师

我们都是普通人“一万小时定律”是绕不过去的。所以要成为有竞争力的专业人员必须要投入大量的时间。

对于招聘来说要的不仅仅是满足要求很多时候非常希望候选人能够超出预期。你必须要有一些额外的亮点也就是竞争力才行。

对于成为全栈工程师这件事情作者提供了一些建议

  • 围绕商业目标转型是每时每刻都存在的每个人不仅仅是公司都应该围绕商业目标。商业目标是稳定的比技术更为稳定。

  • 对于直接制作产品给用户使用的团队就需要对外关注如何提高产品质量、降低产品成本对内应该关注如何优化流程、减少错误率、如果团队输出的结果是公司内其他部门需要的原材料就要关注下游的需求研究如何更好地输出结果如何在流程上使得输出产品的过程更加顺畅。

  • 关注用户体验

  • 不爽的地方不要习惯而是要去改变。

  • 专注目标以目标的维度去思考不要让别人费事的去猜。

  • 做自己会用的产品

从学生到工程师

本章主要论述了从学生进行校园招聘到入职实习后作者的一些感悟对于未毕业的学生还是可以一看的。已经工作的同学就略过吧~~

野生程序员的故事

这一章是这本书争议比较大的地方甚至在csdn上面也引起了广泛的讨论。主要的争议点在于作者的“野生程序员”观点引起了小公司技术者的反弹。

除了对野生程序员的讨论本章中另一有益的讨论是针对大公司和创业公司。 大公司可以给你的

  • 较小的风险

  • 技术最佳实践

  • 垂直专精的技能

  • 服务海量用户的经验

  • 软技能

  • 人脉

  • 心态

由此而见作者本人是比较喜欢大公司的。不过根据《黑客与画家》中的观点大公司会让你的公司没有可放大性与可衡量性。究竟如何选择就是仁者见仁智者见智了。

工程师事业指南

对技术人员而言职业生涯的发展非常重要。《您就是极客》中提出了对软件工程师而言最重要的三点技术、成长和声望。

为啥架构师那么火就是因为他看起来对所有的问题都知道答案。如果你是团队中这样的角色那么可以说你非常重要。所以首先对你来说就是成为那个什么都懂得家伙。

其次对你来说重要的是积累你的作品集。作品集其实是想别人老板、潜在老板、志同道合者的展示窗口。github显然是程序员最重要的作品集之一。而对于高逼格的设计师来说dribble则是更好的选择。同时github提供的静态页面托管服务对于不想费力租赁机器搭建网站的人来说也是一个很好的选择。

全栈工程师眼中的HTTP

http协议是web开发绕不开的关键点但是前后台对其理解都有不同。 Http版本现存最多的还是http1.1而大部分的浏览器和服务器server都已经支持http/2了。 从前端的角度来看有很多http的优化方式:

  • 减少请求

  • 合并同域请求

  • 减少同域内请求以规避达到同域并发上线

  • 传输内容缩减

  • 雪碧图

  • 代码、html gzip压缩

  • 静态资源单独部署

  • 各类缓存cdn、浏览器缓存

而从后台来看则是另外的一种场景

  • 关注服务器最大连接数

  • 关注服务器网络模型

  • 必须防范DDos攻击 B* igPipe提供针对一次http请求服务器返回多次的结果从而规避过多的建立连接过程。事实上大数据时候http server本来就会分块传输。

高性能网站的关键缓存

本章主要是从基本概念的维度介绍了一下缓存从服务器缓存到浏览器缓存两大门类。 服务器缓存则分为

  • 数据库缓存读多写少的场景

  • memcache闻名的web缓存支持分布式但不支持无痛扩展。

  • 文件缓存

  • 静态化叫缓存可能不准确了更多是加速。

浏览器缓存

  • expires设置过期时间无须交互

  • last-modified需要和服务器简单交互一次304

  • cache-control新的倒计时式的缓存

作者推荐的浏览器缓存最佳实践

  • 对于动态生成的HTML页面使用Https头Cache-controlno-cache

  • 对于静态HTML页面使用HTTPS头Last-modified

  • 其他文件类型设置Expires头并在文件内容修改时更改Query String(现在的前端构建都是通过修改文件名的方式了。)。

大前端

作者在本章提出了大前端的概念这也是最近在前端业界被提的比较多的一点。 比较有参考价值的是作者提出的前端知识体系 初级工程师

  • 对浏览器兼容性的了解

  • 对HTML/CSS/JavaScript语法和原理的理解

  • 对编辑器和插件的熟悉程度

  • 对调试工具的了解程度

  • 对版本管理软件的熟悉和应用经验

  • 对前端库/框架的使用

  • 标准/规范

中级工程师

  • 对代码质量、代码规范的理解

  • 对Javascript单元测试的熟悉

  • 对性能优化的应用和理解

  • 对SEO的应用和理解

  • 代码部署

  • 移动web

高级工程师

  • 代码架构

  • 安全

  • 对自动化测试的理解

一家之言不过大家需要的可以自行对照参考。

向移动端转型

移动端转型是大势所趋因为大家在手机上花费的浏览时间越来越长了。 移动端可以参与的主要有

  • IOS原生App

  • Android原生App

  • Windows Phone原生App

  • Web App

  • 混合模式App最近热的发烫的reactor

本章在讨论移动端的同时也强调了一个观点

让市场认可你的能力而不是让老板认可因为老板会变老板的标准不一致而市场是一致的。

持续集成

对于服务端和前端开发而言由于没有客户端和移动app端的集成开发环境比较难打通包括版本控制、包管理、依赖关系、持续集成在内的流程。

版本控制软件中SVN与GIT难解难分。本质上是集中管理å分布式代码管理之争。这里不展开但是提供一些版本控制的最佳实践

  • 鼓励频繁的提交

  • 确定分支流程feature分支和bug修复分支是必须的

  • 定义主干原则主干必须可以随时上线

  • 不要把逻辑修改和代码格式化混在一起

  • 不想干的代码分开提交

  • 保持工作代码库干净适当的ignore

包管理中node的npm做的非常出色。经历过java的maven那一套的都能理解npm做的有多好多简单。同时作者还推介了bower作为新的包管理工具这适用于有很多前端版本js库的情况。

最后本章讨论了构建工具

  • 首先必须有良好架构

  • 具备合适的分离粒度区分全局、局部组件

  • 最小知识原则组件和对象不应暴露细节

  • DRY特殊功能不应存在多个副本

  • 最小化预先设计选择器这类组件必须留下自定义空间不限死排列

  • 一致且可执行的命名规则

  • 完成了良好架构接下来就是grunt、gulp等javascript构建工具的登场

  • 理解编程语言

本章更多是以一种白话的方式老生常谈了程序界经常讨论的问题是语言重要还是对算法和系统的理解更重要。 当然最终作者没有也无法给出答案这个只能读者自己来思考了。

全栈游乐场

全栈工程师的游乐场是VPS随着阿里云、腾讯云、AWS的大力推广现在获取VPS的成本也越来越低了。 获取自己的VPS并搭建自己网站最大的好处就在于它可以给你一览网站的全貌而不再是局限在自己的技术栈中。 作者在本章也给出了使用VPS的一般入门有兴趣的同学可以关注下。

软件设计方法

本章作者主要介绍了常见的设计模式比较有料的是介绍了Web开发中的MVC这种架构模式。同时也列举了一些不同语言中常见的MVC框架

  • Javascript mvc frameworkAngularJS、backbone.js

  • PhpCakePHP、Yii、Codeigniter

  • Objective-C: Cocoa

  • Ruby mvc frameworkRuby on Rails

  • NodejsSail.js Total.js Express

  • 高效工程师

效率在现在快节奏的职场中越来越重要。对于工程师来说必须做到

  • 不断学习

  • 阅读英文资料

  • 加入技术社区

  • 善用搜索引擎

  • 时间管理

  • 时间管理四象限要忙但是不要瞎忙

  • 消除重复的工作善用脚本善用工具

  • 给自己留出专注的时间

  • 番茄工作法

  • 跨界思考

  • 智商头脑风暴

  • 学习设计

对工程师来说了解设计对设计有感觉非常的重要。 作者这里推荐了一本《写给大家看的设计书》着重强调了设计的四大基本理论

  • 亲密性

  • 对齐

  • 重复

  • 对比

对这些理论的理解能够让我们在coding的同时也能停下来看看自己的产品究竟做的如何。

全栈思维

一个人的价值体现在他能够承担的责任。

市场越成熟这句话应该就越对。 同时作者强调了沟通能力在全栈能力中的重要作用

  • 针对目标听众

  • 诉诸对方的利益

  • 找到方法

  • 金字塔原则任何事情都可以归纳出一个中心论点。

  • 向上表达自己的想法:

  • 立场足够简单围绕这一立场沟通

最后书中推荐的书单汇总

《专业主义》 《重来》 《精益创业》 《写给大家看的设计书》 《打造facebook》 《您就是极客》 《代码整洁之道》 《精益创业》 《黑客与画家》 《卓有成效的管理者》 《编程的本质》 《图解HTTP》 《高性能网站建设进阶指南》 《从0到1开启商业与未来的秘密》 《代码的未来》 《禅与摩托车维修艺术》 《只是为了好玩Linux之父林纳斯自传》 《卓有成效的程序员》 《软件随想录》 《金字塔原理》 《卓有成效的管理者》 《安静内向性格的竞争力》

本文转载自异步社区。

原文链接https://www.epubit.com/articleDetails?id=NC7E3EF9345F000018D50A8B013271D91

登录后可下载附件,请登录或者注册

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:huaweicloud.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
评论文章 //点赞 收藏 0
点赞
分享文章到微博
分享文章到朋友圈

上一篇:吴穹:如何利用看板更好地交付

下一篇:读书笔记 | 原来你是这样的硅谷——《硅谷之谜》

评论 (1)


HorizonDP2号小助手

1楼2020-06-16 10:29:13
学习WEB前后端开发知识,成为web全栈开发工程师,速戳链接报名:
https://developer.huaweicloud.com/activity/full-stack/web-developer.html?utm_source=kfz_kj

登录后可评论,请 登录注册

评论