March 27, 2016
此篇博客是阅读《WEB 全栈工程师的自我修养》后结合自己的一些想法总结而出的,希望能给自己以外的人带来些许收获。
先说明这句话的含义:在一个特定的方向上有足够深入的钻研,然后再将学习的范围扩展开来。如何拓展,围绕核心的专长,先是该领域所需要的知识再拓展前后相关的领域的学习。例如,我现在以前端为发展目标,我需要学习 JavaScript
、CSS
、HTML
,这是这个领域所需要的最基本的知识。其中的JavaScript
还可以往Node.js
发展,这样又是一条拓展的方向,此时就往 JS 版的后端靠近了。为了熟悉 WEB 的开发,最好还得懂后端的开发流程或者具备后端开发的能力(好在我在大二的时候,开始就是写后端的)。为了能编写出具有良好用户体验的交互页面,还可以学点设计。对于大前端,原生 APP 的 UI 也是能学习的一个方向。除此之外,还有很多的技能树……基于这些,如果一开始你最基本的前端没专精到一定程度,相关联的都学了个遍,最后在有限精力的限制下没有突出任何亮点! 工作需要你在你所负责的领域里做到足够好,没有一门专精的技术是站不住脚跟的。作者的话是:
有一个专长,得到一个能让您成长的工作,进入强大的团队,您就能有自己的阵地,以此为生,然后再逐步学习更加广博的知识,朝自己的个人目标去努力。如果您连阵地都不稳固,就不存在开枝散叶、落地生根的可能性了。
如何做到专精呢,在掌握了基础的前提下,继续深入到性能优化、SEO(Search Engine Optimization)、多种框架,响应式页面等前端细节中去。
当您只有一把锤子,您看什么都像钉子
为了工作的话,不能一心只醉于一门单独的技术,要考虑你的技能能带来的收益。有人要反驳了(我也想),一门做到极致不就够了么?但是何必吊死一棵树上,编程语言是工具,不能痴迷于一个工具死不放手,当别的工具能更好的实现你想要达成的目标的时候,就该给自己的工具箱里添加一个新工具了。
这个我只能看看作者的观点了,用户体验很重要,现在都是产品为王,内容至上的时代。各种优秀的产品刁钻了用户的品味。所以,每一个糟糕的用户体验背后都蕴育商机。要做自己产品的用户,从用户的角度去考虑产品的使用方式。作者泛化了 用户 的定义:所有您为之服务的人。比如我们课程中的 PPT 演讲,表达自己观点的时候。基于接收方的立场来进行你的“服务”。
作为一个大三的在读学生,专业所在学校不出彩。但是可以有的是项目经验,在老师的工作室中有机会参与到实际的项目当中,完成任务目标的过程中能学到额外的许多知识。但是小项目毕竟有其局限,而我想从事的前端在学校除了HTML5
的课程与其关联,并学不到有关的前端技术。一切只能靠自学,光有项目经验也许不够,还需要更多用以展示自己的作品,作品是证明自己能力的最佳工具。
参与到开源社区中去,提到这个莫过于 GitHub
了。一直觉得自己没那个能力加入到其中去,或许只是不够自信。往后在熟悉的项目中看看 issues 列表,看看有没有自己能解决的问题,也为使用着的开源项目贡献点微薄之力。那在开源项目中贡献代码有哪些好处呢?
博客,如果觉得前面那个难以做到的话,那么这个只需要你总结自己获得的经验和知识,然后把它描述出来,用键盘敲出来。唯一的成本是时间与耐心,然而付出的这两样收获的是一份梳理完整后的知识体系。可以简单的使用 CSDN的博客来书写,支持 Markdown
语法,或者是使用 hexo + GitHub Pages
搭建一个静态博客,很简单,丰富的主题效果可以自由选择。还有 WordPress
之类的选择,推荐 hexo
,免费使用,配置简单。
个人项目,这个选择其实相当不错,可以运用学到的最新技术和自己喜欢的技术结合起来,不受任何人限制的最大化利用自己的知识体系。平时课程中有许多的大作业,如果时间足够,可以很用心的来完成一个酷炫狂拽*炸天的作品。期待能够完成我的这个计划。
这么说的原因无非是大公司能提供更好的环境,避免成为“野生程序员”(什么都懂一点,但是基础和技能的专业性都不够)。
作者提到这个,是因为目前移动端十分热门,大家都用手机下载、使用着各式各样的 App,在目前,原生 App 确实体验更好。说到转向移动端,我就提提我所了解到的可能——混合模式 App(Hybird App)。也就是在原生 App 启动后,部分或全部的内容是由WebView
加载网页实现的,淘宝 App 也是这样做到的。
Ionic
、PhoneGap
都能达到用JavaScript
编写,然后导出成多个平台的应用的目的。“一次编写,到处运行”,自然有其缺点,如果想了解,可以点击链接查看或者 Google。
这里列出一些书中提到的知识性内容,有许多我都并不是了解,仅在此做个记录,待之后的学习中深入。
减少请求、减小文件。在这里有个疑惑,最近看到了HTTP2
这个新的 HTTP 规范,其中提到了新技术中减少请求不是那么必要的优化措施,还可能是反优化,但是鉴于目前的方案以及 `HTTP2 的尚未普及,这两样应该仍是我们所需要知道的最基本的优化方式。
还不太了解这部分的内容,先不做总结……
待最近正阅读《JavaScript 设计模式》的读完后来个总结。
Git
是现在非常流行和有名的版本控制工具,最早是 Linux 之父为了对 Linux 系统的版本控制而开发出的一个工具。官方的中文教程: 《Git Book》
版本控制的最佳实践:
npm、Bower是两个基于Node.js
的包管理工具。
作者提到了 Grunt
、Gulp
,结合我个人的学习,我会在接下来学习的构建工具为:Gulp
、Webpack
。其中Webpack
与著名的React
框架还有ES6 + Babel
的结合使用是我想要学习的主要原因。
可以学习使用VPS搭建属于自己的小服务器,可以使用它来部署自己的项目上去玩玩,据我所知,还能科学上网(●’◡’●)
这个无可厚非,软件开发领域的英文资料最齐全,文档最新。使用框架的时候可以免于查找中文文档的艰辛……英文能力对英语程序员的进阶还是十分重要的。
在此推荐一个大家都知道的社区 StackOverflow,作为最大的 IT 工程师平台,平时我们遇到的许多问题基本都能找到详尽的解决方案。除了这个我还想推荐两个我经常向身边的朋友推荐的中文社区(我没收广告费!)SegmentFault、稀土掘金
作者介绍了一个广为人知但是却也很有效的时间管理工具:时间管理四象限
应该将 80% 的时间花在“重要但不紧急”象限中,避免“瞎忙”。奇妙清单、Trello 都是不错的时间管理工具,奇妙清单简单易用,Trello 则更加全面但是使用更复杂一些。
编写程序需要大量的精神投入,需要整块连续的时间思考,尽量腾出整块的时间来进行工作,不仅仅是编码,做计划、总结、思考同样需要。
笔跟纸是最灵活、最容易修改、成本最低的头脑风暴方式。—— 作者
之前看过一本刘未鹏前辈写的《暗时间》,里面同样提到了纸是思维的缓冲区,头脑思维有一定的“内存限制”,但是纸却是“无限”的,将脑海中思考的东西一步步记录在纸上可以帮我们整理思路,梳理思维中的条理以及漏洞。所以刘未鹏也是及其推荐写博客的,这是一个自我强化学习的方式。回到正题,我们不一定要遵循完整的“Mind Map”的方式来梳理,只需要将脑海中的关键字列出来,分别拓展开来就能达到帮助我们“风暴”的目的,整理总结同样适用。
当我们知道一个“东西”的名字,就会在看到这个“东西”的时候,立马意识到它。但是如果我们不知道它的名字,可能一辈子也不会认识它。这就是约书亚树原理。——作者余果
以上这句话摘自原书,也是作者引自“《写给大家看的设计书》—— Robin Williams”中。 “设计感”就是我们身边的约书亚树,我们虽然不清楚某个设计为什么是美的,哪些设计是“专业”的,哪些是“业余”的,但是我们能感觉出来。所以懂设计就是让我们不仅能感觉,还能掌控,使我们的创造更加“专业”,更美。
其实上面的设计就属于这个,除此之外我们还能学点管理、沟通。其中沟通是我们的软技能,即使我们是技术至上的工程师,但是一个更好的沟通技巧仍然是我们学习工作、生活的绝佳利器。
不恰当的地方请指教,可在下方评论~