现在学习全栈难吗

大势所趋的全栈开发一部指南助你升职加薪,走上人生巅峰……

全栈网络开发是给从未学习过编程的你,提供一个明确的指引包括如何成为全栈网络开发人员最必鈈可少的技能以及如何找到工作。我将从以下三点

12017年被大量用来教学给学生的程序。

2来自过去几年我在公司中面试的开发职位以及面試潜在的全栈网络开发职位的候选人员所积累下来的经验。

3来自 Coderbyte 中已经开始接受编程训练和之后得到编程工作的人的故事和反馈。

全栈開发人员是能够工作在应用程序的前端和后端的开发人员前端通常是指应用程序中用户将看到或交互的部分,后端是应用程序中处理逻輯、数据库交互、用户认证、服务器配置的部分全栈开发并不意味着你已经掌握了前端和后端工作所需的一切,而是意味着你可以在双端工作并理解构建应用程序时发生的情况

如果你想在 2017 年成为一个全栈开发人员,并找到你的第一份工作下面是一个参考指南,列出了伱需要学习的东西

几乎所有程序,无论是在线的还是离线的都在说明要成为 Web 开发者需要从 HTML 和 CSS 开始,因为它们是 Web 的基石简单地说,HTML 让伱给网站添加内容而 CSS 则为这些内容添加样式。

解释 CSS 盒模型

CSS 预处理器的优点(你不需要深入理解,但应该知道这是什么以及它们对开发起箌的辅助作用)

使用 CSS 媒体查询针对不同的设备编写响应式的 CSS。

Bootstrap (一个辅助页面设计和布局的框架大量在线程序或学校都关注 Bootstrap 教学。实际上深入理解基本的 CSS 比理解特定的 Bootstrap 特性和方法更为重要)。

Java 语言一年比一年流行新的库、框架和工具层出不穷。Stack Overflow 2016 年的开发者调查指出Java 在全棧、前端和后端开发中都是最流行的语言。它是浏览器唯一支持的原生语言同时也能作为服务器端语言(下面会看到 Node.js)。下面是一些作为全棧开发者所需要了解的主题:

理解如何使用 DOM了解 JSON 并知道如何操作它。

重要的语言特性比如函数式成分、原型继承、闭包、事件委托、莋用域、高阶函数等。

异步控制流、Promise 和 回调

了解如何正确地通过模块化组织你的代码,像 webpack、browserify 或者 gulp 这样的构建工具对此大有裨益

至少会使用一个流行框架(很多程序将重要放在教你使用像 React 和 AngularJS 这样的库或框架,但实际上更重要的事情是深入理解 Java 语言而不是特定的框架特性只偠你精通 Java,选用一个框架将不费吹灰之力)

虽然有些人可能认为你应该减少使用 jQuery,因为它正趋于死亡但 jQuery 代码仍然存在于大量应用中,彻底理解它会对你很有帮助

了解一些关于测试框架的知识,以及明白它们的重要性(有人甚至会认为这个话题可有可无)

学习重要的 ES6 新特性(鈳选)。

一旦你认为已掌握好 HTML/CSS 和 Java 技能你会向一门后端编程语言进军,以便处理类似数据库操作、用户认证以及应用逻辑的任务所有在线練习平台和代码训练营通常集中于一门特定的后端语言,而实际上你选择哪一门也并不重要只要你理解你正在做的事情并学到了你所选語言的本质。如果你问学哪一门后端语言最好你会得到各种各样的无数的回复,所以下图我给大家列出了一些受欢迎的组合

一个重要嘚提示:不管你决定学习哪一门,请坚持下去

Node.js:这是一个很好的选择,因为 Node.js 本身就是 Java 环境这意味着你不需要学习新的语言。这也是很哆在线平台和训练营为什么选择教学 Node.js 的原因这里你最有可能学习的也是最受欢迎的能帮助你开发网络应用的框架就是 Express 。

Ruby:用 Ruby 开发比较受歡迎的开发框架有 Rails 和 Sinatra 很多教学平台把 Ruby 作为首选后端语言。

Java:现在 Java 语言很少被选中作为全栈网络开发的教学语言但是一些公司现在还是使用 Java 作为后端语言,所以现在也还是一门有相当需求量的语言

编写 Web 应用的过程中有时候需要保存数据,以便稍后再进行访问那么最好掌握下面这些有关数据库和存储的主题。

理解关系型数据比如 SQL,带来的好处

知道在某些情况下,哪一种更合适

Web 存储可在浏览顺中存儲会话、Cookie 以及缓存数据。

伸缩型数据库、ACID 和 ORM (都是可选的)

HTTP 是应用于互联网的一项无状态应用协议 —— 它规范了客户端连接到服务器的行为(仳如 Java 代码通过 AJAX 请求后端服务器中运行的代码就是采用的 HTTP)。下面列出了你应该了解的重要主题:

什么是 REST 以及它为什么对 HTTP 协议和 Web 应用来说很重偠

当你认为已经掌握了 HTML/CSS、Java、后端编程、数据库 和 HTTP/REST ,你就到了难对付的部分了这时,如果你想创建一个稍微复杂的 web 应用你需要了解如哬组织代码,如何分割文件往哪里保存大量媒体文件,如何结构化数据库里的数据何处执行特定的计算任务(客户端还是服务器端),以及更多其他问题

网上你可以读到一些最佳范例,但是最好的学习应用架构的方法是自己实践一个包含多个分散部件的大型应用 —— 甚至更好的方法是:和团队合作开发一个相对大型/复杂的应用

这也是为什么,比如有个七年以上工作经验的人也许他未必比工作两年嘚另一个人更懂 CSS 或 Java ,但或许是多年各种不同应用和网站的工作经验使他学习到如何最有效的架构和设计应用(包括学习其他重要事项),并且在开发过程中能看清“全局”

Git是一套版本控制系统,它允许开发团队的开发人员跟踪代码库的所有更改了解与 Git 相关的一些事项非常重要,它能让你了解如何正确获取错过的最新代码更新部分代码,修复并修改其他人的代码而不会发生任何意外。 你一定要学习 Git 褙后的概念并多做尝试。

这里是一个参考列表它列出了你将会使用到的 git 命令。

这里是一本手册 对 Git 和 GitHub 的初学者很有用

7. 基本算法和数据結构

这个话题在开发世界中有点两极分化,因为有些开发人员认为在 Web 开发中不应该如此重视计算机科学的主题诸如树的遍历、排序、算法汾析、矩阵操纵等然而,像谷歌这样的公司在面试中问这些类型的问题是出了名的 有人说谷歌的前端工程师面试:

也就是说,正如 Ryan McGrath 所提到的我们的前端(FE)工程师要有一个坚实的计算机科学(CS)背景,就像我们所有的工程师一样

虽然有些公司确实要求申请人拥有计算机科学学位或同等学历,也有很多公司愿意雇佣没有这个技术资格的人如果他们能够证明他们懂得如何开发应用程序和展示出对整个域的理解。但是作为一个合格的开发人员,而不是编写低效的代码或使用错误的工具部分要求是理解一些基本算法和数据结构,能够汾析权衡所以你一定要学会一些东西:

研究哈希表并试着在更深的层次上理解它们。这个数据结构构成了 Java 中的对象(Python 中的字典Ruby 中的哈唏)的基础。

理解树和图作为数据结构有何益处

理解算法复杂度分析的基础知识,所以你不会做傻事像创建实际上没必要创建的3层嵌套的循环!

懂得何时使用对象或是数组,并懂得取舍

了解为何在处理大量数据时缓存是如此重要。也要了解内存存储和磁盘存储各自的利与弊

了解队列和栈的区别 。

学习所有这些是会很辛苦但最终还是值得的,并且全栈开发充满乐趣!

人类一思考上帝就发笑。

我从來没搞懂这句话什么意思什么目的,什么意义…… 也觉得并不重要

我倒是清楚地知道另外一件事儿:

你一说要学什么东西,人们就发笑……

说实话我花了很多年才琢磨清楚他们为什么要笑,他们的思路他们的结论,他们的未来和结局琢磨清楚了之后,才觉得这倳儿的合理解释意义对我并不大,因为我不是他们他们和我也没什么关系 —— 只不过是各自的道路有过一次交叉而已,现在各自早就身處不一样的世界了

有一件事绝大多数人搞错了,导致了不一样的思路不一样的结论,不一样的未来和结局:

学习这东西不是一定要學到大师的程度才可以拿出来开始用的。

“学成归来”是人们对大多数学习者的刻板印象,好像学不成就不要回来了似的

真实的学习過程是,学会一点最少必要知识(就是那些知道了之后就可以马上开始行动了的最少知识)然后就要马上开始实际操练…… 最终,大量嘚细节都是在实际操作过程中进一步学会的 —— 甚至还有大量的细节如果不进行实际操练的话,就根本没机会学得到

在中国,每个会開车的人其实早就应该意识到这种学习方式的神奇在中国,驾校的培训实在是太粗糙、太简单、太粗暴了…… 交了钱进了驾校,其实湔前后后在练习场上实际操作的时间少得可怜 —— 然后就冲出来上路了虽然各自进度有些差异,但总体上来看真正的驾驶技能几乎 100% 都來自于在真实世界里实际操作,而非驾校培训不是吗?

明明曾经靠着自己的勇气曾经学会过至少一项技能的人们最终不知道为什么变荿了另外一种人…… 真不明白为什么那么多小时候什么都学、什么都做不好却也根本没怕过的人们,长大了之后终究都成了怂货而且怂箌什么程度呢?怂到害怕别人不怂的地步……

于是绝大多数人的眼里,学习成了一条“漫长不归路” —— 听起来多可怕啊学不成就别絀来得瑟,学不成就别回来见人!天呐。

这还不算既然在脑子里把学习这事儿类比为一条“漫长不归路”,那么“它一定是一步一步赱过去的……”于是,无论做什么事情他们都感觉必须循序渐进,甚至若是看到别人不循序渐进,就很生气

循序渐进坑了一代又┅代的人……

其实,最有效的学习方式真的不是从零开始,一路走到大师境地 —— 那条路上遍地尸骨訇然兽出

仔细观察一下我们的真實生活,我们从来都是这样的:

横空出世向后钻研,向前突击……

我们的教育体系好像特别痴迷于把我们带到循序渐进的道路上去,父母们也觉得只有这样才放心(其实他们自己也是被弄脏了脑子自己不给自己洗脑的产物)…… 99% 的人循序渐进地从 ABCD 开始学学英语 16 年,开ロ说不了拿笔写不出…… 真不知道图个啥。

最简单的编程被抬高成“工程师”的境界 —— 可另外一个事实又明显地摆在那里:

很多自稱工程师的人,其实看到十四五岁的小黑客做的事情也不得不心服口服 —— 若是必须、只能循序渐进才行的话,那些小黑客是不可能存茬的不是吗?

小黑客们都不是靠循序渐进习得技能的都是“横空出世”的,他们最开始做的事情不是打基础,而是“突然有个问题偠解决”于是不管三七二十一只好“向前突破”,用尽各种方法(通常是很土的办法)先把问题解决掉…… 在这个过程中能补的补(姠后钻研),补不上的就先放在那里留给以后…… 然后反复迂回前进。

前些日子我发了这样一条 Tweet:

算了一下,一个普通人只要不笨┅年是可以成长为全栈工程师的。用不着一万小时

其实我不用猜就知道,一定会有大量的人明里暗里向我吐口水了 —— 事实上我今年 45 歲,一路就是这么过来的我一想学点什么,人们就发笑…… 他们的口水从来没能淹死我

我一个学会计专业的怕什么啊?我大学毕业出來搞的是销售而不是会计,不也得现学现卖吗做了那么久批发生意,后来跑去新东方教英语不也是跌跌撞撞先去考托福吗?离开新東方之后开留学咨询公司也得现学如何指导申请文书;再后来结果竟然闲着没事儿跑去学习 Ruby on Rails、后来搞出来个 ;在这过程中还闲着没事儿研究比特币,再后来还要学如何做创投;现在又没啥事儿干了就准备认真研究一下计算机领域,从一个基础的地方开始去搞定全栈技能(时代不一样了,十年前是没戏的)…… 我学我的他们为啥那么看不惯?好奇怪…… 其实我倒也不奇怪我知道他们的思路。

这么多姩来在学习这事儿上,除了我的父母之外真的从来没有其他人鼓励过我。我最感激我父母的方面就是这么一条:

只要我说买书、只偠我说报班,我要多少钱他们就给我多少钱 —— 虽然总是补上一句,“反正钱就这么一点点你花在那里就不能花在别的地方了……”

怹们就是这样在我小时候用行动支持我的…… 再后来我自己能赚钱了,就成了我自己用行动支持我自己

来自于亲戚、朋友的鼓励呢?说實话真的没有,完全没有 —— 当然我的情况特殊,我并不需要别人鼓励 —— 我自我鼓励的能力超强风凉话呢?那就太多了认识的鈈认识的都想上来泼一瓢冷水 —— 现在回头看这些年,最幸福的事情就是我也不知道为啥竟然没有被他们恶心到也没被他们吓倒,好像唍全没事儿似的……

所以我这一辈子都有个好习惯:

鼓励身边的所有人…… 只因为,我实在是太清楚“鼓励”这东西有多么稀缺了

老羅当年跟后来的老婆处对象的时候,据他说几乎所有人都反对只有我一个人说,“多好啊!你那么开心……” 西乔准备考雅思的时候峩天天说的只有一句话:“没那么难的,你就弄罢……” —— 我真的没有教她什么反正她从零基础开始一年之后考了雅思四个七分而后留学霍炬陪读最终全家移民成功。当年高雅说“我们老师都说我数学不行……” 我只不过回了一句“让他们都去屎” —— 她到美国本科僦选了数学专业,研究生选了设计…… 还有另外一个小朋友叫魏天天第一次托福,才 82 分当时我正在上海出差,她给我打电话电话通叻之后嚎啕大哭,我说的只不过是“哭个屁都这样的 —— 接着考!” 后来,她考了 108 分

如果你自己是个上进的人,那你就像我一样天忝鼓励那些同道中人罢 —— 我相信这绝对是善事。

还有另外一个事实是很多人曲解的:

谁说学过之后用的不够熟练就不能用了?!

我说叻个全栈工程师一年差不多了很多人就愤怒了…… 对不起,我不是故意的我用一两个月时间学会了,但用的不够好部署到网上没多玖就被人攻击了,甚至被“脱裤”了…… 这确实可以算作技艺不佳可这碍着谁了呢?—— 哈哈大家可能不知道,这事儿真的出现过峩当年学 ROR,用它写了个博客程序然后就被“黑客”攻击了,删除了第一篇文章然后留下几句话…… 他一定是觉得“这下我狠狠羞辱了李笑来一番”…… 偶尔挺想他的,不知道五年过去了他现在怎么样?

哦对了,还有另外一个事儿:

谁说没天分的人就不应该学东西了谁说没天分的人学得不足够好就丢人了?

我学过的几乎所有东西里都没有“我有天分”的因素…… 这一方面是破令人沮丧的事实,另┅方面又是勇气的来源我最没天分的事情,可能就是唱歌据说小时候唱歌很好听,后来有一次出去滑冰重摔,然后脑震荡然后就腦残了(这可是真的脑残),应该是负责辨音的部分受伤直接的结果就是变得五音不全,没办法准确地分辨别人的音高无法自如地控淛自己的声音…… 上初中的时候,我爹给我买了一把吉他说,“你唱歌都跑调将来怎么学英语呀?” —— 一副“老爹只能帮到你这里叻”的表情许多年后,我弹琴自娱自乐偶尔唱首“山丘”让同事们开心一下…… 他们很羡慕,却不知道那吉他对我来说这么多年来,其实一直是“脑残治疗仪”…… 我做销售也不是因为我擅长,而是当年会计没学好所以找不到会计的工作(也有别的原因);我去噺东方教书,你真以为我英语有多好啊只不过是考试成绩不错而已,发音那个烂啊…… 但发音烂就要被剥夺讲英语的权利吗我不信。後来搞投资你真以为我能点石成金啊?投了很多烂项目、死项目花很多钱买了很多教训之后才开始慢慢摸到一点门道……

而且,我心粗没有生气恼火的基本素质。更邪门的是我认识很多被骂得比我惨的人…… 比如王垠,比如罗永浩比如和菜头,比如霍炬并且,怹们之间还可能对骂呢…… 偶尔好像来气了的时候不小心不厚道地想到他们,我就又乐了…… 唉咋整?

有一天我在朋友圈里发过这麼一句话:

我找到了捷径,可惜早已身不在起点

真的有很多捷径…… 比如,现在这篇文章里很多话都是“捷径”因为你想通了,这些“捷径”就会帮你节省很多很多时间节省很多很多精力,了却很多很多烦恼甚至抄很多很多近路…… 捷径,不就是用来节省时间、提高效率的吗

说这么多,其实就是想说这么个事儿:

我就是想带着一群人(当然总体上其实肯定是少数人)大幅度降低对学习的恐惧,夶幅度压缩学而不用的时间大幅度地跨界 —— 跨越那些貌似无法跨越的界限 —— 因为我们能活很多辈子,七年就是一辈子你自己算算看?

这一定让一些人感觉不舒服,但相信我我们真的不是故意的…… 我们没想到会是这种情况…… 我们本来只是想自己过得更开心一點而已。大家尽量相互谅解罢

另外,这事儿需要补充:

我所说的、我所理解的全栈究竟是什么没必要在语义上争论,但在真正工程師的生活中,coding 应该基本上只占 20% —— 因为最终代码是用来表达思想的用来解决问题的;所以,全栈工程师是那种有真正的问题需要解决囿真正有价值的想法需要实现,有品位的设计者、创造者就好像我们都识字,都能写字能写漂亮钢笔字的人也很多很多,可最终写好攵章、写好教程、写好小说、写好诗歌的人才是“文字工程师”剩下的都只是“识字而已”。

哦对了,我特地从台湾请来一位教练莋全栈工程师集训,我也要跟着学2016 年 7 月 12 日开班,两个月5 万元学费。具体报名方式过两天公布。

互联网行业无疑是当今社会颇具包容性且发展前景广阔的一个行业如果单纯只是学习前端编程语言、而不懂后端编程语言,也不能算作是优秀的前端工程师在成为一個优秀的前端工程师的道路上,充满了汗水和辛劳如何学习全栈web前端开发知识呢.

学习 HTML,CSS 应该先跟着书仔细、扎实的学一遍然后就需要莋大量的练习,做各种常规的、奇怪的、大量的布局练习来捆固、理解自己的知识而学习 JavaScript首先要知道这门语言可以做什么,不能做什么擅长做什么,不擅长做什么!如果你只想当一个普通的前端程序员你只需要记住大部分 JavaScript函数,做一些练习就可以了

如果你想当深入叻解JavaScript,你需要了解 JavaScript 的原理机制。需要知道他们的本源需要深刻了解 JavaScript 基于对象的本质。还需要 深刻了解浏览器宿主下的JavaScript的行为、特性

铨栈前端就是学习的知识不仅是前端的基本知识,还有后台小程序,混合式开发等相关知识在以前,会一点Photoshop和Dreamweaver的操作就可以制作网頁。现在只掌握这些已经远远不够了。无论是开发难度上还是开发方式上,现在的网页制作都更接近传统的网站后台开发所以现在鈈再叫网页制作,而是叫Web前端开发

Web前端开发在产品开发环节中的作用变得越来越重要,而且需要专业的前端工程师才能做好Web前端开发昰一项很特殊的工作,涵盖的知识面非常广既有具体的技术,又有抽象的理念简单地说,它的主要职能就是把网站的界面更好地呈现給用户

其次,优秀的Web前端开发工程师应该具备快速学习能力Web发展的很快,甚至可以说这些技术几乎每天都在变化!如果没有快速学习能力就跟不上Web发展的步伐。前端工程师必须不断提升自己不断学习新技术、新模式;仅仅依靠今天的知识无法适应未来。Web的明天与今忝必将有天壤之别而前端工程师的工作就是要搞清楚如何通过自己的Web应用程序来体现这种翻天覆地的变化。

前端工程师是计算机科学职業领域中最复杂的一个工种绝大多数传统的编程思想已经不适用了,为了在多种平台中使用多种技术都借鉴了大量软科学的知识和理念。成为优秀前端工程师所要具备的专业技术涉及到广阔而复杂的领域,这些领域又会因为你最终必须服务的各方的介入而变得更加复雜

在成为一个优秀的前端工程师的道路上,充满了汗水和辛劳

为了帮助大家学习前端让学习变得轻松,高效!今天给大家分享一套教學资源从最零基础开始的的HTML+CSS+JavaScript。jQueryAjax,nodeangular框架等帮助大家在学习Web前端的道路上披荆斩棘

我要回帖

 

随机推荐