2017年成为全栈开发工程师的权威指南

来源:互联网 发布:php有线程吗? 编辑:程序博客网 时间:2024/05/19 04:54

http://www.css88.com/archives/7529?utm_source=tuicool&utm_medium=referral

根据 2016年 Stack Overflow 开发者调查 显示,全栈开发工程师是当今最受欢迎的开发者职业。 毫无疑问,有许多在线和现场教学课程可以帮助你成为全栈开发工程师,甚至帮助这些新开发人员找到高薪编程开发工作。

国内外有很流行的在线课程,比如: Lynda ,Udacity ,Coursera ,Thinkful , 全栈开发工程师远程就业班,带你轻松搞定node.js,从前端小工到 BAT 中高级工程师的必备技能,Vue2.0全栈实战项目,WEB前端开发零基础课程,React 大神进阶 等等。

除了这些在线课程,还有许多 现场教学课程 正在教人们成为 Web 开发人员所需的技能。

在这篇文章中,我不会讨论哪些在线或现场教学课程比较好。相反,我将提供一份我认为当今要成为一个全栈开发工程师所需最重要技能的权威指南,如果你以前从未编写过代码的话,或许可以获得一份好工作。我会从三个方面列出成为一个全栈开发工程师所需的最重要技能:

  1. 2017年教给学生最多的课程是什么。
  2. 我过去去面试开发者岗位 和 在我现在公司全栈开发工程师的个人经验。
  3. 在 Coderbyte 接受现场教学,然后从事全栈开发工作的开发者们的故事和反馈。

权威指南

全栈开发工程师是指能够独立开发应用程序的前端和后端工作的开发人员。前端通常是指用户在应用程序中能看到或交互的部分,后端是应用程序中处理业务逻辑,数据库交互,用户认证,服务端配置等部分。作为一个全栈开发工程师并不意味着你必要完全掌握前端或后端所需的一切开发技术,而是意味着你可以进行前后端开发工作,并且了解构建应用程序时发生了什么。

如果您想在2017年成为一个全栈开发工程师,并找到你的第一份工作,以下是参考指南,列出你应该学习的事项。

1. HTML/CSS

几乎每一个课程,无论是在线还是在场,教你成为全栈开发工程师都是从 HTML 和 CSS 开始的,因为它们是 Web 构建的基石。简单地说,HTML允许你向网站添加内容,CSS允许你为内容设计风格。与 HTML / CSS 相关的以下主题经常在面试时和实际工作中出现:

  • 语义化的 HTML。
  • 能够解释 CSS 盒子模型。
  • CSS 预处理器 的优点 (您不一定需要了解如何深入使用它们,但是您应该了解它们的用途以及它们对开发的帮助)。
  • CSS Media Queries (媒体查询) (愚人码头注:原文是这个链接) 定位不同的设备并编写响应式CSS。
  • Bootstrap(一个框架,帮助设计和布局页面内容,并且许多在线课程或学校重点关注和教学 Bootstrap ,事实上相对于 Bootstrap 的功能和方法,更重要的是深入掌握 CSS 的基础知识)。

2. JavaScript

JavaScript 语言每年都越来越受欢迎,新的库、框架和工具都在持续不断的涌现。根据 2016年 Stack Overflow 开发者调查 ,JavaScript 已经成为 全栈,前端 和 后端开发中最流行的语言。它是在浏览器中本机运行的唯一语言,并且也可以将其作为服务端语言(比如您将在下面看到的 Node.js )。以下是你成为一个全栈开发工程师所需要了解的一些主题:

  • 知道如何 处理DOM ,同时也知道 JSON 是什么,以及如何操作它。
  • 重要的 语言特性 ,如 functional composition(函数组合),prototypal inheritance(原型继承),closures(闭包),event delegation(事件委托),scope(作用域)(愚人码头注:作用域可以查看 深入理解JavaScript中的作用域和上下文 这篇文章),higher-order functions(高阶函数) 等。
  • 异步流程控制,promises 和 callbacks 。(愚人码头注:当然还有 ES 7 中的 async / await 也可以作为一个了解点。)
  • 学习如何正确地构建你的代码,并将代码 模块化 ,像 webpack ,browserify ,或者像 gulp 这样的构建工具将会很有帮助。
  • 至少知道如何使用一个 流行的框架 (许多课程将重点放在一些库、框架上,如 React 或AngularJS (愚人码头注:还有 Vue 等),但实际上,你需要更加深入地了解 JavaScript 语言,而不是非常重视框架特定的功能。一旦你对 JavaScript 有了很好的了解,拿起一个框架就不会太难了)。
  • 虽然有些人 可能会争论 说,你应该尽量少使用慢慢地消亡的东西,但是现在的实际情况是 jQuery代码在大多数应用程序中仍然存在,并且理解它将会很有帮助。
  • 了解有关 测试框架 的知识以及它们的重要性(有些人甚至认为这个主题应该是可选的)。
  • 了解一些重要的 ES6 新特性(可选)。

3. 后端语言

一旦你感觉 HTML / CSS 和 JavaScript 掌握的很好的时候,那么你将需要转到后端语言,来处理数据库操作,用户认证 和 应用程序逻辑 等操作。所有 在线课程 和 现场教学 通常集中教学一门特定的后端语言,只要你了解一门后端语言,并且学习与所选择的语言的细微差别,那么在实际中,无论你学什么都会比较轻松。如果你问某些后端语言是最好的学习方法,你将收到不同的答案,所以下面我列出了一些流行的组合。一个重要的说明:无论你决定学习什么,只要坚持下去,尽可能多地学习它 – 所有以下列出的语言都可以找到相关的工作。

  • Node.js:这是一个很好的选择,因为 Node.js 本身只是一个 JavaScript 运行环境,这意味着你不需要学习一种新的语言。这是很多在线课程和现场教学选择教 Node.js 的重要原因。最有可能学会,帮助你开发 Web 应用程序的框架是 Express。
  • Ruby:Ruby 开发的一些流行框架是 Rails 和 Sinatra 。许多 课程规划 都把 Ruby 作为第一选择的后端语言。
  • Python:Python 开发的一些流行框架是 Django 和 Flask 。
  • Java:涉及到全栈 Web 开发,Java 语言目前并没有太多的学习课程,但是一些公司确实将 Java 作为后端,它仍然是一个需求量很大的语言(见上图)。
  • PHP:现在很少有教 PHP 的课程,但是它和 JAVA 一样,它仍然是非常需要的语言,它是当今 Web 开发的基石。

4. 数据库 和 Web 存储

当学习构建 Web 应用程序时,在某些时候你可能想要在某个地方存储数据,以便以后再访问它。你应该很好地掌握与 数据库 和 存储 有关的以下主题。

  • 理解 关系形数据 的好处,例如:SQL 。
  • 学习 NoSQL (非关系型) 数据库,例如:MongoDB 。
  • 理解 不同场景 中选择哪些会更好。
  • 知道如何使用你选择的后端语言连接数据库(例如: Node.js + MongoDB)。
  • 理解像 Redis 或 memcached 这样的内存数据存储的 好处 。
  • 掌握 Web storage(存储) 可以在浏览器中存储 session ,cookies 和 cached 数据。
  • 了解 扩展数据库 ,ACID 和 ORM (全部可选)。

5. HTTP & REST

HTTP 是互联网上的无状态应用协议 – 它允许客户端与服务器进行通信的方式(例如,您的 JavaScript 代码可以通过 HTTP 发起一个 AJAX 请求 ,来获取服务器上运行某些后端代码的结果)。你应该掌握的重要主题如下:

  • 什么是 REST ,以及它对 HTTP 和 web 应用的 重要性.
  • 设计 RESTful API 的 最佳实践 。POST / GET 请求。
  • 学习如何使用 Chrome DevTools 非常有用。(愚人码头注: Chrome DevTools 中文文档)
  • 什么是 SSL证书 ?
  • HTTP/2 & SPDY (可选)
  • WebSockets ,Web Workers 和 Service Worders(全部可选)

6. Web应用架构

一旦你认为你掌握了 HTML / CSS ,JavaScript ,后端编程 ,数据库 和 HTTP / REST,那么接下来就是棘手部分了。这时,如果你想创建一个有点复杂的 Web 应用程序,你需要知道如何构建代码,如何分离文件,在哪里存储您的大型媒体文件,如何在数据库中组织数据,在哪里执行某些计算任务(客户端 vs 服务器端)等等。

你可以在线阅读许多最佳实践的文章,但是实际上,了解应用程序架构的最佳方式是通过对自己的大型应用程序(包含几个 移动端项目 )进行处理总结出来的 – 更好一点的方式是,在一个团队工作,一起开发一个 大型/复杂 的应用程序。

为什么这么说呢?例如,具有 7 年以上经验的开发人员可能不一定比具有 2 年经验的开发人员更好地了解 CSS 或 JavaScript ,但是在这些年中,他们参与开发了许多不同的应用和网站,并 学会如何 建构和设计应用程序,在实践中学习通常是最有效的,往往是 经验丰富的开发人员 能掌控“大局”。以下是你可以阅读的一些内容,可以帮助你了解如何高效地构建Web应用程序:

  • 学习公共 平台服务 ,例如 Heroku 和 AWS 。Heroku 允许您轻松上传您的代码,并且不需要多少的配置 或 服务器维护就可以轻松启动和运行应用程序。AWS 提供了数十种产品和服务来帮助存储,视频处理,负载均衡等等。
  • 针对应用和现代浏览器进行 性能 优化 。
  • 关于Web应用程序架构应该采纳的 一些意见 。
  • 微软的 设计web应用指南 。
  • MVC 。
  • 最重要的是,你应该尝试与其他开发人员合作,看看 GitHub 上热门的项目代码库,并从高级开发人员那里 学到 尽可能多 的东西。

7. Git

Git 是一个 版本控制系统 ,允许开发团队中的开发人员跟踪代码库的所有更改。了解与 Git 有关的一些重要事项很重要,以便你了解如何正确获取你错过的最新代码,更新部分代码,修复,并修改别人的代码,而不会搞破坏。你一定要学习 Git 背后的 概念 ,同时也要自己玩弄。

  • 这个是你可能会使用的 一些常见的 git 命令的参考列表 。
  • 这是一个为初学者准备的 冠以使用 Git 和 GitHub 的教程 。

8. 基本算法和数据结构

这个话题在开发者中有点两极化,因为有些开发者认为,在 web 开发中,不需要过分的注重计算机科学这个课题,比如树遍历,排序,算法分析,矩阵处理等。不过一些公司,比如 Google ,在面试中 提到这些问题是出了名的,也经常被一些面试者吐槽。有人谈及 Google 的前端工程师面试时说:

也就是说,正如 Ryan McGrath 所说,我们希望前端(FE)工程师像所有的工程师一样拥有扎实的 CS 背景。

虽然有些公司几乎都要求求职者拥有计算机科学学位或同等学历,然而也有很多公司会 雇用 那些没有这种技术资历的开发人员,如果这些开发人员可以证明他们知道如何开发应用程序,并展示出对整个领域了解。但是我认为,作为一个有实力的开发者,不写出低效的代码,或使用错误的工具,非常有必要了解一些基本的算法和数据结构,并能够分析权衡。所以这里有一些你应该学习的东西:

  • 深入学习研究 hash tables(哈希表) 。这种数据结构在 JavaScript 中使用对象表示( Python 中是字典,而在 Ruby 中是哈希 )。
  • 理解 树 和 图形 如何 更加有利的 作为数据结构。
  • 理解 Big-O 分析 的基础知识,所以你不要做 愚蠢的事情 ,比如创建一个嵌套3层的循环,如果你不需要!
  • 知道什么时候使用应该 对象或数组 ,并能作出很好的权衡。
  • 学习为什么使用大量数据时 缓存 非常重要。 还要了解内存存缓与磁盘存储的 优缺点 。
  • 学习队列和堆栈之间的 区别 。

总结

学习所有这一切将是非常艰苦,但最终是很有收获的,全栈开发非常有趣!欢迎你评论留言,说出你的观点和已经。同事推荐查看 Coderbyte 的一些算法练习。


原创粉丝点击