读评《web全栈工程师的自我修养》
现在,技术其实变得越来越简单。云服务就在提供水和电。 所以你需要充分的去了解PAAS服务的平台,amazon的服务,github的服务,让技术不再成为门槛,让事情聚焦在提供专业的价值上面。这也就是世界级的IT支持了,你再也不用担心“只差一个程序员”了。
LAMP的技术栈 MEAN的技术栈
作者提出全栈工程师或者说工程师的前景:
一专多长解决问题而不是醉心技术
其实全栈工程师,跟我在taobao十年里面看到的工程师可能是不相符合的。很多淘宝的大型系统,需要非常专业的工程师进行很多的优化才可以实现。
我们都是普通人,“一万小时定律”是绕不过去的。所以要成为有竞争力的专业人员,必须要投入大量的时间。
对于招聘来说,要的不仅仅是满足要求,很多时候非常希望候选人能够超出预期。你必须要有一些额外的亮点,也就是竞争力才行。
对于成为全栈工程师这件事情,作者提供了一些建议:
围绕商业目标:转型是每时每刻都存在的,每个人,不仅仅是公司,都应该围绕商业目标。商业目标是稳定的,比技术更为稳定。对于直接制作产品,给用户使用的团队,就需要对外关注如何提高产品质量、降低产品成本;对内应该关注如何优化流程、减少错误率、如果团队输出的结果是公司内其他部门需要的原材料,就要关注下游的需求,研究如何更好地输出结果,如何在流程上使得输出产品的过程更加顺畅。关注用户体验不爽的地方不要习惯,而是要去改变。专注目标,以目标的维度去思考,不要让别人费事的去猜。做自己会用的产品
本章主要论述了从学生进行校园招聘到入职实习后作者的一些感悟,对于未毕业的学生还是可以一看的。已经工作的同学,就略过吧~~
这一章是这本书争议比较大的地方,甚至在csdn上面也引起了广泛的讨论。主要的争议点在于作者的“野生程序员”观点,引起了小公司技术者的反弹。
除了对野生程序员的讨论,本章中另一有益的讨论是针对大公司和创业公司。 大公司可以给你的:
较小的风险技术最佳实践垂直专精的技能服务海量用户的经验软技能人脉心态
由此而见,作者本人是比较喜欢大公司的。不过根据《黑客与画家》中的观点,大公司会让你的公司没有可放大性与可衡量性。究竟如何选择,就是仁者见仁,智者见智了。
对技术人员而言,职业生涯的发展非常重要。《您就是极客》中提出了对软件工程师而言最重要的三点:技术、成长和声望。
为啥架构师那么火?就是因为他看起来对所有的问题都知道答案。如果你是团队中这样的角色,那么可以说你非常重要。所以首先对你来说就是成为那个什么都懂得家伙。
其次对你来说重要的是积累你的作品集。作品集其实是想别人(老板、潜在老板、志同道合者)的展示窗口。github显然是程序员最重要的作品集之一。而对于高逼格的设计师来说,dribble则是更好的选择。同时github提供的静态页面托管服务对于不想费力租赁机器搭建网站的人来说,也是一个很好的选择。
http协议是web开发绕不开的关键点,但是前后台对其理解都有不同。 Http版本,现存最多的还是http1.1,而大部分的浏览器和服务器server都已经支持http/2了。 从前端的角度来看,有很多http的优化方式:
减少请求合并同域请求减少同域内请求以规避达到同域并发上线传输内容缩减雪碧图代码、html gzip压缩静态资源单独部署各类缓存(cdn、浏览器缓存)
而从后台来看则是另外的一种场景:
关注服务器最大连接数关注服务器网络模型必须防范DDos攻击 B* igPipe:提供针对一次http请求,服务器返回多次的结果,从而规避过多的建立连接过程。事实上大数据时候,http server本来就会分块传输。
本章主要是从基本概念的维度介绍了一下缓存,从服务器缓存到浏览器缓存两大门类。 服务器缓存则分为:
数据库缓存(读多写少的场景)memcache:闻名的web缓存,支持分布式,但不支持无痛扩展。文件缓存静态化:叫缓存可能不准确了,更多是加速。
浏览器缓存:
expires:设置过期时间,无须交互last-modified:需要和服务器简单交互一次,304cache-control:新的倒计时式的缓存
作者推荐的浏览器缓存最佳实践:
对于动态生成的HTML页面使用Https头:Cache-control:no-cache对于静态HTML页面使用HTTPS头:Last-modified其他文件类型设置Expires头,并在文件内容修改时,更改Query String(现在的前端构建都是通过修改文件名的方式了。)。
作者在本章提出了大前端的概念,这也是最近在前端业界被提的比较多的一点。 比较有参考价值的是作者提出的前端知识体系: 初级工程师:
对浏览器兼容性的了解对HTML/CSS/JavaScript语法和原理的理解对编辑器和插件的熟悉程度对调试工具的了解程度对版本管理软件的熟悉和应用经验对前端库/框架的使用标准/规范
中级工程师:
对代码质量、代码规范的理解对Javascript单元测试的熟悉对二手性能优化的应用和理解对SEO的应用和理解代码部署移动web
高级工程师:
代码架构安全对自动化测试的理解
一家之言,不过大家需要的可以自行对照参考。
移动端转型是大势所趋,因为大家在手机上花费的浏览时间越来越长了。 移动端可以参与的主要有:
IOS原生AppAndroid原生AppWindows Phone原生AppWeb 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 framework:AngularJS、backbone.jsPhp:CakePHP、Yii、CodeigniterObjective-C: CocoaRuby mvc framework:Ruby on RailsNodejs:Sail.js Total.js Express高效工程师
效率在现在快节奏的职场中越来越重要。对于工程师来说,必须做到:
不断学习阅读英文资料加入技术社区善用搜索引擎时间管理时间管理四象限:要忙,但是不要瞎忙消除重复的工作:善用脚本,善用工具给自己留出专注的时间番茄工作法跨界思考智商头脑风暴学习设计
对工程师来说,了解设计,对设计有感觉非常的重要。 作者这里推荐了一本《写给大家看的设计书》,着重强调了设计的四大基本理论:
亲密性对齐重复对比
对这些理论的理解能够让我们在coding的同时,也能停下来看看自己的产品究竟做的如何。
一个人的价值,体现在他能够承担的责任。
市场越成熟,这句话应该就越对。 同时作者强调了沟通能力在全栈能力中的重要作用:
针对目标听众诉诸对方的利益找到方法金字塔原则:任何事情都可以归纳出一个中心论点。向上表达自己的想法:立场足够简单,围绕这一立场沟通
最后书中推荐的书单汇总
《专业主义》 《重来》 《精益创业》 《写给大家看的设计书》 《打造facebook》 《您就是极客》 《代码整洁之道》 《精益创业》 《黑客与画家》 《卓有成效的管理者》 《编程的本质》 《图解HTTP》 《高性能网站建设进阶指南》 《从0到1:开启商业与未来的秘密》 《代码的未来》 《禅与摩托车维修艺术》 《只是为了好玩:Linux之父林纳斯自传》 《卓有成效的程序员》 《软件随想录》 《金字塔原理》 《卓有成效的管理者》 《安静:内向性格的竞争力》
下一篇: 几款你绝对不知道的PHP集成开发环境软件