全栈工程师权威指南

根据 Stack Overflow 2016年开发者调查显示,全栈工程师是最受欢迎的开发者职业。毫无疑问现在有许多在线或个人课程来帮助程序员成为全栈开发者,甚至帮助这些开发者找到高薪的开发工作。

一些流行的在线课程,例如:Lynda,Udacity,Coursera,Thinkful,General Assembly 。除了这些在线课程,还有好多个人的新手训练营来提供给web开发者必须的技能。

在这篇文章中我不会讨论哪个在线或个人课程好,相反我会提供一个我认为成为全栈web开发者所需技能的权威指南。我将以下面三条为基准开始这篇博文:

  1. 2017年教给学生最多的课程是什么
  2. 我为公司面试开发者和有潜力的全栈开发者的经验
  3. 在 Coderbyte 接受新手训练,然后找到开发工作的开发者们的故事和反馈

权威指南

全栈工程师指既能开发前端又能开发后端的开发者。前端一般指一个应用中用户能看到和交互的部分,后端一般指一个应用中处理逻辑、数据库、用户授权、服务端配置等的部分。全栈工程师并不意味着你有必要完全掌握前后端的开发技术,而是你可以在构建应用时明白前后端开发到底发生了什么。

如果你想成为一名全栈开发者同时想得到一份工作,下面就是你应该学习的参考指南。

1.HTML/CSS

许多在线和个人课程都以HTML/CSS作为成为一名 web 开发者的开端,因为它俩是web开发的基石。HTML是网站内容的骨架,CSS是为网站内容美化的。下面是一些真实工作中和面试时经常需要的HTML/CSS内容:

  1. 语义化HTML
  2. 解释 CSS Box Model
  3. CSS 预处理器的优点(你并不需要深入了解,但是你应该知道它解决了什么问题和如何帮助开发者的)
  4. CSS Media Queries 解决不同屏幕和书写响应式CSS代码
  5. Bootstrap(一个CSS框架,事实上相对于Bootstrap的特点和方法,更重要的是对CSS基础知识的掌握)

2.JavaScript

每年 JavaScript 都变得越来越流行同时新的库、框架和工具都在持续不断的涌现。依据 2016 Stack Overflow 的调查,JavaScript 成为全栈、前端、后端开发的最流行语言。它是唯一一个既可以在浏览器运行又可在后端运行的语言。下面是你成为一个全栈开发所需要了解的内容:

  1. 知道如何处理DOM,同时也知道JSON是什么以及如何维护它。
  2. functional composition、prototypal、inheritance、closures、event delegation、scope、higher-order functions的一些语言特点
  3. 异步流程控制、promises和callbacks
  4. 学习如何架构你的代码同时抽取模块,了解webpack、browserify或者类似的gulp等构建工具如何帮助开发
  5. 最少了解一个流行框架(许多课程关注在一些库、框架上例如React、AngularJS,但事实上深入了解JavaScript更重要,一旦你对JavaScript有个很好的理解,然后再挑选一个框架从全局来看,你就不会感觉到有什么困难)
  6. 即使有些人在争论jQuery现在使用的很少或者它在渐渐的消亡,可是现在依旧有许多使用它构建的应用,实实在在的掌握jQuery依旧是很有帮助的
  7. 了解一些测试框架同时也应意识到测试为何如此重要
  8. 学习一些ES6的新特性

3.Back-End Language

一旦你感觉对HTML/CSS和JavaScript掌握的很好,你将需要学习一些处理数据库操作、用户鉴权、应用逻辑的后端语言。一些课程和新手训练营通常会专注一门特定的语言,但是随着你对后端开发的套路越来越清晰的时候,其实选择哪门语言已经不重要。如果你问不同的人,哪个后端语言适合学习会得到不同的答案,所谓仁者见仁智者见智。无论你选择哪个都要坚持学下去,不要三天打鱼两天晒网。下面是不同语言工作的需求量:

. Nodejs:这是一个不错的选择因为它本来就是JavaScript,所以你不需要学习一个新的语言。这也是一些在线培训和新手训练营选择Nodejs的一些原因。Express是Nodejs中一个很重要的框架可以帮助你开发web应用。

. Ruby:一些流行的开发框架,例如:Rails和Sinatra。相当多的课程已将Ruby作为第一后端开发语言。

. Python:其中的流行开发框架,例如:Django和Flask。

. Java:当谈及全栈开发的时候,Java并不会被经常提到,但是一些公司依旧在使用Java作为他们的后端语言同时也是一个需求量很大的语言。

. PHP:现在很少有教PHP的,但是它和JAVA一样需求量依旧存在。

4.Databases & Web Storage

当你在构建一个web应用,需要存储一些将来要使用的数据时,你应当掌握下面有关databases和storage的一些知识:

. 掌握关系型数据库,例如:SQL.

. 学习非关系型数据库,例如:MongoDB.

. 明白不同场景应该使用哪种。

. 掌握后端语言如何和数据库连接(Nodejs+MongoDB)

. 掌握像Redis和memcached的缓存好处

. 掌握像session,cookies和cached data浏览器端的数据存储

. 扩展数据库:ACID和ORM

5.HTTP & REST

HTTP是一个允许客户端连接服务器的无状态协议(例如JavaScript可使用AJAX发起一个HTTP请求)。下面就是你需要掌握的清单:

. 什么是REST以及为何它对HTTP和web应用如此重要?

. 设计REST API的最佳实践

. 学习使用Chrome DevTools

. 什么是SSL Certificates

. HTTP/2 & SPDY

. WebSockets,Web Workers和 Service Worders

6.Web Application Architecture

一旦你既掌握了前端技术又掌握了后端语言,同时数据库玩的也很溜,接下来最困难的东西在等着你。这时你若创建一个有点复杂的应用,就需要知道如何架构你的代码,如何分隔你的文件,在哪存储大体量的音频文件,如何设计你的数据库,在哪端执行有点计算量的任务(客户端vs服务端),当然还有更多需要考虑的。

你可以在网上读到许多最佳实践,但是最好的方法是自己创建一个大点的应用,或更好一点的是参与到一个团队中开发一个大型的应用。

这就是为何,一名具有7+年开发经验的人并不一定比只有2年经验的人对CSS和JavaScript有更好的理解。但是这些年他们参与开发了许多不同种类的应用和网站,同时也学习了如何构建和设计应用,以便在需要开发的时候更有效率和掌控全局。下面就是一些架构应用需要用到的知识:

. 学习公共平台服务(Heroku,AWS)。Heroku使你发布代码和构建应用非常方便,AWS提供了许多产品和服务需要的存储、视频处理、负载等等

. 应用和现代浏览器的性能优化

. 一个web应用应该包括哪些部分的意见

. 微软的 设计web应用指南

. MVC

. 最重要的是要在项目中和其他开发人员一起工作,在GitHub上学习别人的代码,同时从高级开发者那里尽可能的多学习。

7.Git

Git是一个版本管理系统,允许开发者追踪代码的所有更改记录。为了能提交、拉取以及解决代码冲突等,你显然需要学习一些Git背后的概念同时也要自己把玩。

. 这里是一些git命令的参考指南

. 这有一个为初学者准备的Git和GitHub教程

8.Basic Algorithms & Data Structure

这个主题在开发者世界中有点存在两极化,因为有些开发者认为像计算机科学例如:tree traversal,sorting,algorithm analysis,matrix manipulation,在web开发中并不应该过分的关注。但是一些大公司例如Googley依旧会在他们的面试中提问算法相关的问题,就像一些人关于Google前端工程师的说法:

我们的前端工程师希望有一些扎实的CS背景,就像其他工程师一样。

同时一些公司需要候选人拥有计算机科学学位或同等学位,当然也有一些公司不需要候选人有相关证书,只要能证明可以开发应用和对相应领域有所了解就可以。但是为了成为一名有实力的开发者,为了不写出低效的代码,或为了避免只因了解一点基础的算法和数据结构而使用错误的工具,同时为了能视情况作出权衡,所以下面列出了一些你应该学习的东西:

. 学习并深入了解hash tables,这种数据结构在JavaScript中使用对象表示(Python中为字典,Ruby中是哈希)

. 明白树和图作为数据结构是如何提供好处的

. 知道何时使用对象或数组同时能作出很好的权衡

. 学习在有大量数据时缓存为何如此重要,同时学习内存缓存和硬盘存储的优劣

. 学习队列和栈的区别

学习这些当然是一件很难的历程,但是为了成为一名全栈开发者,这些付出都是值得的。

路漫漫其修远兮,吾将上下而求索!

原文:https://medium.com/coderbyte/a-guide-to-becoming-a-full-stack-developer-in-2017-5c3c08a1600c

有删改!

原文发布于微信公众号 - 前端黑板报(FeHeiBanBao)

原文发表时间:2017-06-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT派

想做web开发,就学JavaScript

有一天我被问到,为了快速地在web开发工作上增加优势,应该学习什么语言。我的思绪回到了大学,那时候我用Pascal、Fortran、C和汇编语言,不过那个时候有...

852
来自专栏SEO

「SEO技术」14种搜索引擎优化技术详细解说

正如没有静止不动的河水,我们生命中的每一个时刻,都联系着过去与未来。唯有心中时时有着想要抵达的地方,才能顺着时间之流的力量,在不确定性中有所把握、有所坚持,一点...

1530
来自专栏tkokof 的技术,小趣及杂念

HGE系列之二 更上层楼

上次颇为感性的描述了一番HGE的轮廓,并给出了一个世界上最简单的HGE示例程序,不知读过的人有了怎样的认识,如果你说一点感觉都没有的话——哦,好吧,在此我再重...

691
来自专栏java一日一条

2016年最好的15个Web设计和开发工具

网络无处不在。世界上几乎没有地方是没有被因特网所渗透的。无孔不入的网络为Web设计师和开发人员开辟了新的机遇渠道。每家企业都在争取在这个在线平台上展现头角,以便...

1812
来自专栏机器人网

Python程序员需要了解的10个资源

你是一名Python程序员。在知道其他语言后,通过Python入门,或通过阅读Python教程或类,直到您对基础知识足够自信为止,您已经获得了这一称号。那现在,...

1133
来自专栏全华班

一款免费、开源,使用PHP语言开发的项目管理系统

建立每年每月的工作项目,所有的工作最后都是对应到每位成员的个人项目,既可以是团队多人的项目形成的个人项目、也可以是完全纯属于自己的个人项目。

1K2
来自专栏SDNLAB

借助Intel最新芯片,FD.io数据包传输速度翻倍

暨本周Intel发布了可扩展Xeon芯片之后,开源快速数据项目(FD.io)宣布通过最新的Intel Xeon可扩展处理器实现双重性能的提升。 ? FD.io工...

3434
来自专栏贾鹏辉的技术专栏@CrazyCodeBoy

一个上架了的React Native项目实战总结

学习 : 视频开发教程 喜欢逛GitHub的小伙伴都知道,它有个查看最热项目的功能叫trending,但这个功能只能在网页上查看, 而且在手机上浏览显示效...

5218
来自专栏惶心 - 技术博客

Web Icon 123 - 网页内图标的调用

之前 保罗 在使用 php 写他的第一个个人主页的时候,在他的群里提到了 Font-Awesome 这个项目。当时还是纯小白一个,啥也听不懂。直到后来,看了几篇...

78913
来自专栏知晓程序

好久不见!小程序深夜连发 4 大新能力,竟把亲儿子的「特权」也开放了?

在一段时间的修养生息之后,小程序又在昨天深夜连发四大新能力。还是熟悉的配方,还是熟悉的味道。下面就跟知晓程序(微信号 zxcx0101)一起来看看,都有哪些新能...

1201

扫码关注云+社区

领取腾讯云代金券