2017年如何成为全栈工程师,这些技能是你必须具备的!

2023-11-13

转载自:A Guide to Becoming a Full-Stack Developer in 2017 
作者:Daniel Borowski 
译者:夜风轻扬

【编者按】根据Stack Overflow 2016 Developer 调查,全栈(Full-Stack)Web开发是当前最受欢迎的开发职业。难怪有很多在线和现场培训项目帮助培训对象成为新的全栈开发人员,甚至协助这些新手获得高薪编程工作。以下为译文:

在这篇文章里,我不准备讨论哪一个网站或者代码训练营有最好的开发培训项目,但是我会提供明确的指南,说明哪些是我相信成为全栈web开发者所需要的最重要技能,并且帮助那些从来没做过编程工作的人找到工作。我会以下面这三件事 为依据。

1. 2017年培训学生最多的内容组合。 
2. 我个人的经验来自于过去在多家公司对开发者岗位求职者的面试,以及现在我公司全栈开发者岗位求职者的面试。 
3. 来自于那些在Coderbyte上接受编码训练营培训,并且找到编程工作的人的故事和反馈。

明确的指南

全栈web开发者是能够同时承担前端开发和后台开发工作的人。前端一般是指应用中用户可见或者是进行交互的部分,后台是指应用里处理逻辑,数据库交互,用户鉴别,服务器配置等等。做为一个全栈开发者并不意味着你已经掌握了从事前端开发和后台开发所需的所有技能,只是表明你能够在这两部分工作并且知道开发一个应用该做哪些事。

如果你在2017年成为一个全栈Web开发者并且谋求到你的第一份职业,下面列出的就是你应该学到的参考指南。

1. HTML/CSS

 

这里写图片描述

 

 

  • 语义HTML
  • 能够解释CSS盒模型
  • CSS预处理器的用处(你不必明白如何深度使用它,你只需要了解它们的用途以及如何帮助开发)
  • 面向不同装置的CSS媒体查询以及写响应CSS
  • Boot 
    trap(是一个框架,用于设计和页面上内容的布局,很多在线培训或者学校把重心放在教授Bootstrap上,实际上深入理解CSS的基础知识比特定的Bootstrap特征及方法更重要)

2.JavaScript

 

这里写图片描述


Stack Overflow 2016 Developer 调查

 

  • 理解如何使用DOM,了解JSON是什么以及如何使用它。

  • 重要的语言特点,例如功能组成,原型继承,闭包,事件委托,范围,高阶函数。

  • 异步控制流,承诺(promises),和回调。

  • 学习如何正确构造你的代码以及将其模块化,可以借助webpack,browseify,或者类似gulp的构造工具来理解。

  • 知道如何使用至少一种常用框架(很多培训重点培训一种库或者如React或者AngularJS这样的框架,但是在现实中,深刻理解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作为他们的后台语言,Java依然是非常受欢迎的语言(见上面的图)

  • PHP:虽然现在很少教授PHP 了,但是正如Javas ,PHP依然很受欢迎,并且PHP是web的基石。

4.数据库与数据存储

 

这里写图片描述

 

 

5.HTTP和REST

 

这里写图片描述

 

HTTP是一种无状态的互联网应用层协议-它允许客户端与不同的服务器进行通信(例如你的JavaScript代码能够通过HTTP协议,向运行在服务器上的后台代码提交AJAX请求)。

6.Web应用架构

 

这里写图片描述

 

当你觉得已经掌握了HTML/CSS,JavaScript后台开发,数据库和HTTP/REST,就到了这个稍难的部分。在这里如果你想创建稍微复杂的web应用,你需要知道如何组织你的代码,如何划分你的文件,哪里存放你的大媒体文件,如何组织数据库中的数据,哪里去执行确定的计算任务(客户端 对 服务器端),等等。

网上可以找到很多最佳实践,但是真正学习到应用架构的最好方法是你本人参与一个大型应用,这个应用包含多个有效的部分-甚至更好,在一个团队里工作并且一起开发过有一定规模和复杂度的应用。 
这就是为什么有些人有7年多的经验,对于CSS或者JavaScript的理解还不如那些只有两年经验的人,但是,在这些年里假定他们参与了所有类型不同应用和网站的开发,并且已经学习了如何架构和设计让应用最有效率(还学习了其他重要的事),在开发中也可以看到重点。下面你可以读到一些内容,有助于你学习如何有效率的架构你的web应用。

  • 学习普通的平台即服务,如Heroku和 AWS。Heroku能使你轻松上传你的代码,以非常少的配置或者服务器维护就可以让应用启动运行,AWS提供大量的产品和服务有助于存储、视频处理、负载均衡等等。
  • 为应用和现代浏览器进行性能优化。
  • 一些观点关于一个web应用架构应该包括哪些
  • 微软设计的web应用
  • MVC
  • 最为重要的是,你努力应该与他人在项目中分工协作,多学习GitHub上流行项目的代码库,并且尽可能多向高水平开发者请教。

7.Git

Git是一个版本控制系统,能够协助开发者团队合作,跟踪开发过程中的所有更改,并将这些更改记录在代码库中。了解与Git相关的重点很重要,这样有助于你如何获得丢失的最新代码,代码的更新部分,进行修改,修改别人的代码而不会破坏别人的工作。你确实应该学习Git背后的概念并且自己能玩转它。

8.基本算法和数据结构

 

这里写图片描述

 

这个主题在开发世界里有点极端,因为在web开发中,有些开发者认为不应该将注意力放在诸如树遍历、排序、算法分析、矩阵操作等计算机科学主题上。然而,很多如谷歌那样的公司,喜欢在面试中这些类型的问题。一些人谈论的的谷歌前台工程面试。

也就是说,如Ryan McGrath提到那样:我们的前端(FE)工程师,应该像我们所有工程师那样,具有坚实的计算机科学背景。

尽管有一些公司在现实中要求求职者具有计算机科学学位或者同等学力,如果求职者不具备这些技术资格,却能证明他们知道如何开发应用,并且展示其对于整个领域的理解,仍会大量的公司会雇用他们。但是,成为一个合格开发者的一部分,不写低效率的代码或者不使用错误的工具,都是对于基本算法和数据结构的理解,能够分析均衡。所以这有一些你应该学习的内容:

  • 学习各种哈希表并尝试深层次理解它们。这个数据结构构成JavaScript对象的基础(在Python中是字典,Ruby中是哈希数)
  • 理解树和图作为数据结构带来的益处。
  • 理解Big-O分析的基础,以便于你不会编写实际上并不需要的三层嵌套循环。
  • 知道何时使用对象还是数组,并且理解均衡。
  • 学习在处理大规模数据缓存的重要性。也要学习内存数据库与磁盘存储的各自优缺点。
  • 学习队列和堆栈之间的差异。

学习这些所有的内容是项辛苦的工作,但是最终会收获颇丰并且全栈开发本身也很有趣!请在下面留下你的评论,并且检出coderbyte,来进行算法练习。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2017年如何成为全栈工程师,这些技能是你必须具备的! 的相关文章

  • 转载:switch/case语句中,每个case都要加花括号

    前言 多写代码 才能发现问题 即使现成的代码 手打一遍也有收获 这不遇到一个很无语的问题 问题及原因 解决方法见以下转载内容 原创者 ChirlChen 博客地址 https blog csdn net qqmindyourwill art
  • 网络编程之网络丢包故障如何定位?如何解决?

    引言 本期分享一个比较常见的网络问题 丢包 例如我们去ping一个网站 如果能ping通 且网站返回信息全面 则说明与网站服务器的通信是畅通的 如果ping不通 或者网站返回的信息不全等 则很可能是数据被丢包了 类似情况想必大家都不陌生 针
  • 3分钟搞懂:JavaScript 和 ECMAScript

    JavaScript 和 ECMAScript ECMAScript 是 JavaScript 语言的国际标准 JavaScript 是 ECMAScript 的一种实现 Adobe ActionScript 和 JScript 同样实现了
  • 基于Bochs安装GeekOs

    开发环境介绍 1 Ubuntu 16 04 2 boch2 6 11 下载地址 http sourceforge net projects bochs files bochs 2 6 11 3 nasm 2 08 01 下载地址 http
  • CommonJS,ES6 Module以及webpack模块打包原理

    CommonJS ES6 Module以及webpack模块打包原理 模块化历程 CommonJS 模块 导出 导入 ES6 Module 模块 导出 命名导出 默认导出 导入 导入命名导出的模块 导入默认导出的模块 CommonJS 与
  • 夯实C++基础:1.C++生命周期和编程范式、预处理、编译相关

    一直告诉自己要保持学习 但真的工作之后 反而不知道从哪里开始学起 就这么拖着光有想法没有行动 除了加班没有那么晚刷刷题之外 就从看课有人带着学开始夯实基础吧 反正学啥都比不学好 之后可以看设计模式 网络编程 STL深入学一学 也可以看书ef
  • MySQL的安装教程

    MySQL的安装教程 今天来唠一唠MySQL的事 首先是mysql的一些知识点 接下来我们先说MySQL的安装教程 1 安装程序安装 首先 去数据库的官网http www mysql com下载MySQL 一般为 msi文件 下载好之后双击
  • Matlab:从csv文件中读取某一列的数据

    第一种 M CSVREAD FILENAME 直接读取csv文件的数据 并返回给M 第二种 M CSVREAD FILENAME R C 读取csv文件中从第R 1行 第C 1列的数据开始的数据 这对带有头文件说明的csv文件 如示波器等采
  • 华为OD面经(给了口头offer祈祷流程审批能过ε=(´ο`*)))唉)

    1 上来一到算法题相对简单 2 介绍一下自己的项目 问了java的jvm相关如jvm在遇到线程挂掉时的日志操作啥的有做过吗 spring的好处原理 springboot的好处原理 微服务的锁 日志相关 垃圾回收算法 redis的原理 has
  • c#+npgsql采坑记录

    c npgsql 数据库作业采坑记录 做数据库作业时踩了些坑 做个记录 1 pgsql的主键int的模糊查询 pgsql中以int作为主键 比如student以sid作为主键 当sid为int时 模糊查询会使索引失效 而mysql没有这个问
  • Vue的大坑 input手动赋值后无法修改问题

    当获取数据之后 手动赋值给input 会出现渲染成功 能读取数据 但是无法修改情况 代码如下 根据ID查询返回订单信息 async editOrdersAddress orderId const data res await this ht
  • 力学应用计算机实例,PART 5 相图计算机计算 相图计算与 及扩散动力学模拟及其应用实例.ppt...

    PART 5 相图计算机计算 相图计算与 及扩散动力学模拟及其应用实例 ppt 亚点阵模型假设 每一亚点阵内的原子只与其他亚点阵内的原子相邻 这一点可以通过亚点阵的选取来保证 最近邻相互作用是常数 各亚点阵之间的相互作用忽略不计 过剩自由能
  • 前端开发模式的迭代

    前端开发模式的迭代 前端开发给人的印象一直是变化太快 不断出现新的框架 库 开发模式 这些开发模式有什么不同 为什么要不断迭代 本文将分享几种常见的前端开发模式 讲解前端开发模式的演变过程 传统开发模式 前端是 Web 应用的组成部分 前端
  • OpenSSL RSA加密和解密

    rsa加密的密钥格式常见的有两种 一种是PKCS 1 密钥头为 BEGIN RSA PUBLIC KEY 一种是PKCS 8 密钥头为 BEGIN PUBLIC KEY 以字符串公钥为例 对PKCS 1格式的密钥加载使用的函数是PEM re
  • vue自定义指令给指定元素添加水印

    在utils创建一个waterMark js文件 import Vue from vue Vue directive watermark update el binding gt function addWaterMarker parent
  • 基于管道的popen和pclose函数

    标准I O函数库提供了popen函数 它启动另外一个进程去执行一个shell命令行 这里我们称调用popen的进程为父进程 由popen启动的进程称为子进程 popen函数还创建一个管道用于父子进程间通信 子进程要么从管道读信息 要么向管道
  • CSS弹性布局

    弹性布局 弹性布局 也称为flex box 常用于一些自适应网站 可以让网站随浏览器大小变化而变化的网站 从而给用户更好的使用体验 基本属性 1 声明弹性布局 通过display flex 可以让元素声明为flex容器 简称 容器 而它的所
  • android中完全退出当前应用程序的四种方法

    Android程序有很多Activity 比如说主窗口A 调用了子窗口B 如果在B中直接finish 接下里显示的是A 在B中如何关闭整个Android应用程序呢 本人总结了几种比较简单的实现方法 1 Dalvik VM的本地方法 andr
  • Flutter 获取验证码倒计时实现

    Timer countdownTimer String codeCountdownStr 获取验证码 int countdownNum 59 void reGetCountdown setState if countdownTimer nu
  • 机器学习随笔

    1 随机森林在大数据量和feature较多的时候效果比较好 反之的环境下还不如单独的决策树 森林中的每棵树都是独立的 99 9 不相关的树做出的预测结果涵盖所有的情况 这些预测结果将会彼此抵消 少数优秀的树的预测结果将会超脱于芸芸 噪音 做

随机推荐

  • 【Spring

    Resource Resource 接口 介绍 核心方法 常见接口 优缺点 内置 Resource 实现 UrlResource ClassPathResource FileSystemResource PathResource Servl
  • 多线程(C++)临界区Critical Sections问题

    多线程中用来确保同一时刻只有一个线程操作被保护的数据 InitializeCriticalSection cs 初始化临界区 EnterCriticalSection cs 进入临界区 操作数据 MyMoney 10 所有访问MyMoney
  • 重塑自监督学习: DINO 网络如何颠覆视觉特征表示的常规方法

    欢迎关注 CVHub 官方微信公众号 Title Emerging Properties in Self Supervised Vision Transformers Paper https openaccess thecvf com co
  • 解决idea中Cannot resolve method ‘setAttribute

    在学习jsp的时候 在idea上写代码遇上request setAttribute中setAttribute爆红错误 由于找到了解决方法 错误不想复现了 即下面的setAttribute爆红 但是可以正常运行 网上找了好多解决方法但是不适用
  • AD官方八月直播学习笔记-02

    文章目录 答疑 PCB导入logo 安装脚本 prjscr 在sripting syatem里的global projects里面点击安装 找到对应脚本文件 文件 运行脚本 弹出框里点load 位图文件 默认配置 界面里可以直接更改 框选
  • rpm包的rpmbuild spec文件详解

    http machael blog 51cto com 829462 213477 上一篇日志写到 为什么要制作rpm包 以及如何使用 src rpm文件生成rpm包 最后部分还看到 src rpm的内容 实际上 就是由 tar gz源码
  • JAVA单元测试框架-5-timeOut测试

    这篇先来介绍 Test注释下的一个属性 timeOut 主要用来超时判断 详细点说 如果哪个测试方法需要监听执行的时间 那么就可以考虑采用timeOut属性 例如 实际的接口测试中 加入登录接口时间不能超过3秒中 下面来看看如何监控这个方法
  • python为什么int()无法将float转化成int

    原因可能是你用了np zeros count 它的默认数据类型是float64类型的 而且不管你往这个np列表传入什么类型的值 或者后期怎么int 都没用 因为它会自动又改为float类型 并且这个float类型可不是原生的浮点类型 虽然
  • 【手势识别小车】---------(1)项目发起计划与准备

    嵌入式学习从大一到大二已经有两年了 学习了很多零零散散的东西 单片机 通信 视觉 ROS等等 但是没有进行系统的管子所以设计如下一个项目 作为自己阶段性的总结 功能设计 1 小车根据指令前进 后退 转向 停止 2 上位机摄像头进行人脸识别
  • GitHub 搜索技巧

    GitHub 作为目前广大程序猿最大的游乐场 在今年 6 月被 微软 以 75 亿美元价值的微软股票收购 GitHub 再次成为业界讨论的焦点 GitHub 以自由开放的定位吸引了相当多的个人开发者和企业 不断发布和更新相当好用的软件和工具
  • 毕业了

    自己的学生时代快告一段落 即将迎来的是工作时代 对未来充满了好奇 兴奋 希望我保有激情的去面对工作 在写论文的过程中 我也有对自己的论文感兴趣的 比如对Hadoop 但是对于另外一方面没了兴趣 也没有怎么深究 因此 这也是自己的论文的一个遗
  • Spock单元测试框架介绍及在美团优选的实践_第二章(static静态方法mock方式)

    Spock单元测试框架介绍 文章目录 Spock单元测试框架介绍 前言 一 什么是Spock单元测试框架 二 使用步骤 1 引入maven依赖 2 创建GoodsService订单业务类进行单测 3 创建Groovy class类 4 创建
  • pip安装yaml出错问题及解决方案

    pip安装yaml出错问题及解决方案 在使用Python开发过程中 可能会遇到需要安装第三方库的情况 而有时候我们在使用pip install安装某些库时 会遇到一些错误提示 其中就有可能会出现 ERROR Could not find a
  • python删除列数据,另存为xls格式带表头

    使用python删除列数据 import pandas as pd from pandas import DataFrame data pd read excel r 统计 xls sheet name Sheet1 del data 统计
  • LoadRunner 引入在eclipse中写的java项目,并介绍LR的使用(不是简单的打印语句项目)

    摸索了4天中终于在LoadRunner中把java脚本编译通过了 可以正常的运行Java脚本进行性能测试 一 介绍环境 eclipse JDK1 8 32位的 LR12 55 如果有需要LR12 55的小伙伴 在百度网盘直接下 链接 htt
  • 博客系统自动化测试项目实战(测试系列9)

    目录 前言 1 博客前端页面测试用例图 2 测试用例的代码实现 2 1登录页面的测试 2 2博客列表页面的测试 2 3写博客测试 2 4博客详情页面的测试 2 5已发布博客的标题和时间的测试 2 6注销用户的测试 结束语 前言 之前小编给大
  • Android Studio 插件开发8、替换文本

  • Qt6 第一天认识基本模块、附加模块、支持的平台、QML用户界面

    文章目录 Qt6 焦点 Qt6 核心 基本模块 Qt6 附加模块 Qt6 支持的平台 Qt6 简介 Qt6 消化用户界面 Qt6 焦点 Qt 5在很多年前发布 引入了一种新的声明方式来编写令人惊叹的用户界面 从那时起 我们周围的世界发生了很
  • windows10连接小米耳机Redmi AirDots 2

    1 控制面板 2 添加蓝牙设备 3 搜索 4 下一步 如果链接不上 请删除已有设备从第一步开始重新做
  • 2017年如何成为全栈工程师,这些技能是你必须具备的!

    转载自 A Guide to Becoming a Full Stack Developer in 2017 作者 Daniel Borowski 译者 夜风轻扬 编者按 根据Stack Overflow 2016 Developer 调查