如果一个全栈工程师能够根据原型实现一个完整的MVP(minimum viable product,至少可行的产品),我们通常会认为他十八般武艺样样精通,而且有足够的理由来证明这一点。为了给全栈工程师一个最新鲜的定义,我们首先来关注一下全栈工程师以前是搞什么的。

以前的全栈工程师

很久以前,大约在 2000 年(在互联网的次元里,17年可以说是一个非常长的时间了),一个全栈工程师必须掌握下面的本领:

  • 用 Adobe 公司的 Photoshop 或者 Fireworks 工具设计出一个网页

  • 将设计稿变成 HTML, CSS 还有热点图(额,还记得那些吗?)

  • 写一些基本的 PHP 4.0 脚本(非面向对象的 PHP 即将成为历史)来处理服务端逻辑

  • 保存所有的动态数据到 MySQL 中,也可能会做一些小优化

  • 用 FTP 上传所有代码、数据库什么的到一台服务器,然后就可以领取报酬啦

注意我们在这里只讨论 PHP —— 一个全栈 Flash 或者 Coldfusion (一种 Web 服务器) 开发者可能有不同的工作方式(但是也仅仅是细微的差别)。

在那个单纯的时代,生活是如此的美好。个人开发者一抓一大把,而且程序猿工作完还有大把的时间陪伴自己的家人。

那现在呢?

现在的全债工程师需要自带什么技能呢?

为了在这个牛逼的市场里获得成功,我们这些开发者——通常都是完美主义者——应经常把“如果你想做正确的事”当做自己的座右铭,并经常质问自己。这会强迫我们自己集中精力在一处,而且必须学习所有东西。

所以做一个全栈工程师往往要学会以下技能:

服务管理/运维

一个开发者必须了解基础的服务器管理知识。包括但不限于以下知识:

  • 通过终端或其他没有用户界面的环境来远程连接服务器

  • 会写基本的 shell 脚本

  • 服务器上的用户和群组管理

  • 管理像 Apache 和 Nginx 这样的服务器程序来提供应用

  • 防火墙管理和权限管理

  • 安装和更新软件

图片来自GIPHY


除了这些基础技能,开发者必须懂得怎样去创建一个好的、健康的、分离的开发环境,在 Docker 或者像Vagrant 这样的虚拟机环境中。

开发者必须对版本控制系统非常熟练,为了让开发有靠谱的生产备份和可分享、可协同的代码库,这些代码库能够根据时间来跟踪代码变化。现在已经没有开发者的工作流是完全离开版本控制的了。

和实际管理或者虚拟服务器不同,一个开发者也许要知道云主机平台,比如Heroku, Google Cloud, Azure, AWS等等。

图片来自GIPHY


有一点必须说明的是,平台和工具更多的是为了炒作而不是其实用性。尽管有很多平台和工具的实用性并不如宣传的那么好,但是了解这些大家都在谈论的服务,从长远来看会很有用——客户可能会随时要求更换服务提供商。


后端

在后端,除了要懂选择什么语言以外,比如 PHP 和众多的框架 and CMSes,一个全栈开发者必须熟悉:

  • Web 服务器,比如 Nginx 和 Apache ,和运维紧密相关

  • 不幸的是,NodeJS 已经可以将 JS、CSS 和其他资源文件编译成静态可以方便缓存的文件了。幸运的是,也有办法避免学习 NodeJS,用PHP也是可以的

  • 像 Composer 这样的 PHP 包管理工具在现代化的开发环境中已经离不开了

  • 好的API 设计,自从大部分新型网页都基于 API 而且仅仅为前端服务(下面会详细描述)

  • ElasticSearch 这样的搜索引擎对于网站性能的提高是非常重要的

  • cronjobs 和后端的工作,使用Gearman 或者 Crunz 这类的库

  • 了解缓存, Varnish, Redis 等牛B的工具可以分片存储数据,这样可以将一个项目部署的多个主机上


数据库

数据库是一个单独的部分,因为除了很好地掌握我们基本上不会有结构变化的关系数据库(MySQL 或者 PostgreSQL)的数据模式之外,一个全栈工程师应该对非关系型数据库有所了解,如MongoDB, Redis, 或 Cassandra ,更不用说像 Neo4j 这样的图形数据库了。

不幸的是,这些都是服务器上的东西,都在全栈工程师的控制下。也有几个类似 Mongo 的远程解决方案,像 RestDB 或者 Google-owned Firebase 等。


前端

说到前端,真的很蛋疼。

作为一个全栈工程师,你需要了解:

  • NodeJS and NPM

  • Yarn

  • 预处理器和编译器(如Babel),用来编译 Typescript, ES6, LESS, SCSS, SaSS

  • 构建工具,如 Grunt 和 Gulp

  • 框架,如 VueJS、React、Angular

  • 模块打包工具,如 Webpack、Browserify、Rollup


设计

在设计方面,全栈开发者需要了解怎样在一个产品变成真正可用的 HTML 、CSS 代码之前,画一个 原型图 。然后就可以去用 JS 写交互、后端也可以用假数据来模拟生产环境。只有这个关键的原型图完成,用户体验设计和接口设计就绪,真正的开发才能开始。这本身就是一项艰巨的任务,需要一套特殊的工具:

  • Photoshop 和 Illustrator 或者一些开源的工具比如 Gimp / Inkscape。

  • 一个牛B的、快速的编辑器,比如 Atom 或 Sublime Text

  • 像 Subtlepatterns 的背景选择器和颜色选择器能够搭配一些颜色

  • CSS 的栅格系统

  • 上面所说的前端所需要了解的所有知识和 JS 数据模拟

  • 将原型图发表到网上供大家浏览并给于反馈,Ngrok 就非常好用


日志系统

为了高效监控应用的健康度,全栈开发者必须能够追踪错误,找到错误日志然后从中提取出有用的信息。全栈开发者也需要从日志中预测一些趋势,比如 CPU 或者 I/O 占用率的上涨,以防应用不知道什么时候就挂了。这部分和运维也有一些关系,但是需要一些特别的技能:

图片来自GIPHY


推荐一篇非常棒的 ELK stack 的文章(https://www.sitepoint.com/how-can-the-elk-stack-be-used-to-monitor-php-apps/),这会帮助你了解做日志系统所需要的知识。里面包括了查找日志的 ElasticSearch ,收集日志的 Logstash,把日志用非常棒的图表展现出来的的 Kibana,甚至还有提供解决方案的 Logz.io。

移动端

最后,我们该说说移动端了。随着 iOS 和安卓上的的 webview 变得越来越高效,还有 PWA(渐进式web应用)的到来,native 应用正在变得黯淡,因为他们开发起来实在是太复杂了。所以一个全栈工程师必须了解 PWA 或者 React Native ,或者像NativeScript, Tabris, Cordova, Phonegap或者其他 webview 来让客户端应用调用 API 跑起来(如上一章最后说的那样)。

做一个全栈工程师值得吗?

所以最后只有一个问题,值不值?

首先,应该注意到很少的全栈工程师称得上真正的全栈,大部分全栈工程师关注了上面技术的某些方面,而不是所有的,仅仅因为不可能有那么多精力放在上面所有方面。

其次,对所有方面都了解一点也许不会让你在具体方面成为大师,但是说实在的,这会让你在更好地理解项目的流程,和项目确实都需要用到的技术。当作为乙方、开一个外包公司或者给一个迷茫的团队指一条明路方面是无价的技术。

我可能不是一个“JavaScript 巨星”,“Elasticsearch 忍者”,“MySQL 大师”,“运维狂人”,或者“移动端老司机”,我不想被奉承,但是我觉得,做一个全栈工程师让我张开了翅膀,测试不同的技术,作为自由职业者给我的客户提供与众不同的解决方案。我可以有各种各样的赚钱方式,也能拿到从服务端工作到 WordPress 插件开发等不同的订单,因为我对所有的这些都有很多了解(迟早的事)。对于我来说,做一个全栈工程师是非常值得的,对比我以前只做 Flash 的日子,我现在更喜欢我的工作,当时工作多而且工资低(没有 JavaScript)。

你呢,你是全栈还是也精于专呢?不管你是不是全栈,你觉得做的事情值吗?

本文转载自:众成翻译

原文地址:https://www.sitepoint.com/full-stack-developer/

PS:记得查收小编送你的免费大礼包呦~

福利 | 一万多套PPT模板等你免费来拿!无条件领取!

免费送 | 1000多套简历模板免费拿,附赠简历制作教程!

免费领 | 《Shell脚本 100例》电子书免费拿,运维必备干货~

▼▼点击【阅读原文】,22大互联网热门课程任选免费学!

什么是全栈工程师?需要掌握哪些技能?成为云计算全栈工程师好吗?相关推荐

  1. 高薪Java开发工程师需要掌握哪些技能?

    一般来说想要成为Java开发工程师,那么必然需要做好Java开发技术的掌握,不同级别的工程师,需要掌握的技能程度以及情况是不同的.那么高薪Java开发工程师需要掌握哪些技能? 高薪Java开发工程师需 ...

  2. 嵌入式软件开发工程师需要掌握的技能

    嵌入式软件开发要掌握什么技能呢? 1.嵌入式软件工程师需要具备简单的硬件电路设计能力,包括数字电路和模拟电路;做嵌入式软件对硬件一样要有一定的基础. 2.嵌入式软件工程师需要懂得C语言和一些简单的汇编 ...

  3. 网络安全工程师必备的七大技能

    网络安全有多重要 网络安全非常重要,因为在现代社会中,人们日常生活中的很多方面都与网络有关.随着互联网和数字技术的不断发展,人们已经变得越来越依赖网络,网络已经成为了商业.金融.通信.交通.能源.医疗 ...

  4. 开课吧:全栈工程师的关键开发技能(硬实力)

    一般来说想要成为一名全栈工程师,熟练了解和掌握开发技能是必然的事情,那么全栈工程师的关键开发技能(硬实力)有哪些? Git/GitHub 把Git作为关键技能的第一条,是因为它不仅仅是一个代码管理工具 ...

  5. 网易云瀚海一体机,云计算“全栈”航母带来了什么?

    近日,<计算机世界>专访了网易云基础设施技术总监.网易专业技术委员会委员张晓龙博士,解读当先热门的全栈云计算.据了解,在今年7月的云创大会上,网易云发布了单集群可支持5000物理节点的&q ...

  6. 大数据开发工程师基本功修炼之史上最全Linux学习笔记(建议)

    我正在参加年度博客之星评选,请大家帮我投票打分,您的每一分都是对我的支持与鼓励. 2021年「博客之星」参赛博主:Maynor大数据 (感谢礼品.红包免费送!) https://bbs.csdn.ne ...

  7. 【全栈之巅】Node.js + Vue.js 全栈开发王者荣耀手机端官网和管理后台学习笔记(4.1-4.10)

    [全栈之巅]Node.js + Vue.js 全栈开发王者荣耀手机端官网和管理后台学习笔记(4.1-4.10) 本项目是 学习Bilibili 全栈之巅 视频教程相关源码和体会 https://git ...

  8. 【全栈之巅】Node.js + Vue.js 全栈开发王者荣耀手机端官网和管理后台学习笔记(3.11-3.12)

    [全栈之巅]Node.js + Vue.js 全栈开发王者荣耀手机端官网和管理后台学习笔记(3.11-3.12) 本项目是 学习Bilibili 全栈之巅 视频教程相关源码和体会 https://gi ...

  9. 学习【全栈之巅】Node.js + Vue.js 全栈开发王者荣耀手机端官网和管理后台笔记(2.10-2.12)

    [全栈之巅]Node.js + Vue.js 全栈开发王者荣耀手机端官网和管理后台 本项目是 学习Bilibili 全栈之巅 视频教程相关源码和体会 https://gitee.com/blaunic ...

  10. 学习【全栈之巅】Node.js + Vue.js 全栈开发王者荣耀手机端官网和管理后台笔记(2.8-2.9)

    [全栈之巅]Node.js + Vue.js 全栈开发王者荣耀手机端官网和管理后台 本项目是 学习Bilibili 全栈之巅 视频教程相关源码和体会 https://gitee.com/blaunic ...

最新文章

  1. python开发需要掌握哪些知识-Python后端开发如何入门,要学习那些系统性的知识?...
  2. 各纬度气候分布图_读中国年平均气温分布图,寻找中国全年平均气温最高和最低的地方...
  3. 多面体 (Multipatch)
  4. 针对“云计算”服务安全思路的改进-花瓶模型V4.0
  5. 手把手玩转win8开发系列课程(9)
  6. “工作5年,存款为0”:那些拼命的人是怎么被拖垮的?
  7. 重磅直播|结构光3D相机光机核心技术及3D成像性能分析
  8. 批量导出数据和全部导出到Excel(详细)和mybatis 中 Foreach的用法
  9. sina微博登录框和twitter的比较
  10. MSSQL的表备份成INSERT脚本的存储过程
  11. Linux 文件umask默认权限_012
  12. 事务、事务的隔离级别、一致性
  13. carmaker/matlab联合仿真(三) 生成车道线点,拟合多项式方程
  14. ASDM的网管的环境搭建
  15. 联想电脑linux显卡驱动,哪里下载独立显卡驱动 急急急!!联想y470如何在linux下安装显卡驱动啊?你好...
  16. git查看历史记录及修改内容
  17. 涉密计算机信息系统的安全审计,涉密计算机信息系统安全审计.doc
  18. 虚幻引擎图文笔记:使用布料模拟(Cloth Simulation)系统制作一面可以随风飘动的旗帜(更新)
  19. Word怎么删除空白页?这3种方法:适用于所有版本Word!
  20. jQuery实现一个学生成绩单录入系统

热门文章

  1. vue-pdf插件实现pdf文档预览(自动分页预览)——基础积累
  2. axWindowsMediaPlayer简单介绍
  3. 源代码防泄密解决方案
  4. 如何用java创建一个文件
  5. eclipse中设置字体大小
  6. 企业申请3C认证,需要提交哪些资料?
  7. 用web连接数据库完成登录
  8. nginx使用以及配置
  9. 元宇宙岗位薪资排行榜,出炉!
  10. 练习题:让用户提供半径,然后计算出对应圆的周长和面积