前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >全栈工程师技能大全

全栈工程师技能大全

作者头像
疯狂的技术宅
发布2019-03-28 10:26:15
1.1K0
发布2019-03-28 10:26:15
举报
文章被收录于专栏:京程一灯京程一灯

一个能够将一个原型变成一个变成一个MVP(minimum viable product, 最小变量产品)的全栈工程师通常都被说成是门门精通,样样稀松, 当然其实这是褒义的说法。为了给全栈工程师一个最新鲜的定义,我们首先来关注一下全栈工程师以前是搞什么的。

以前的全栈工程师

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

  • 用 Adobe 公司的 Photoshop 或者 Fireworks 工具设计出一个网页
  • 将设计稿变成 HTML, CSS 还有热点图(额,还记得那些吗?)
  • 写一些基本的 PHP 4.0 脚本(非面向对象的 PHP 即将成为历史)来处理服务端逻辑
  • 保存所有的动态数据到 MySQL 中,也可能会做一些小优化
  • 用 FTP 上传所有代码、数据库什么的到一台服务器,然后就可以领取报酬啦

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

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

那现在呢?

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

这些年代,我们也有一些荣耀,比如这些正在发生的东东,这是怎么做到的呢?

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

服务管理/运维

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

  • 通过终端或其他没有用户界面的环境来远程连接服务器
  • 会写基本的 shell 脚本
  • 服务器上的用户和群组管理
  • 管理像 Apache 和 Nginx 这样的服务器程序来提供应用
  • 防火墙管理和权限管理
  • 安装和更新软件

via GIPHY

除了这些基础技能,开发者必须懂得怎样去创建一个好的、健康的、分离的开发环境,在 Docker 或者像 Vagrant 这样的虚拟机环境中。 如果上面所有的技术你都不熟悉,那我必须给你推荐一本超棒的书,点这里购买.

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

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

via GIPHY

有一点必须说明的是,平台和工具更多的是为了炒作而不是其实用性。但是熟悉每个人都在谈论的业务,长远来看会很有用,一个平台和工具的客户端应该可以随时更换服务提供商。幸运的是,我们有云主机部署权威指南

后端

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

  • Web 服务器,比如 Nginx 和 Apache ,和运维紧密相关
  • 不幸的是,NodeJS 已经可以将 JS、CSS 和其他资源文件编译成静态可以方便缓存的文件了。幸运的是,也有办法避免学习 NodeJS,用PHP也是可以的
  • 像Composer这样的 PHP 包管理工具在现代化的开发环境中已经离不开了。
  • 好的API 设计,自从大部分新型网页都基于 API 而且仅仅为前端服务(下面会详细描述)。
  • ElasticSearch (introduction here) 这样的搜索引擎对于网站性能的提高是非常重要的
  • cronjobs 和后端的工作,使用Gearman 或者 Crunz 这类的库
  • 了解缓存, Varnish, Redis 等牛B的工具可以分片存储数据,这样可以将一个项目部署的多个主机上

数据库

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

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

前端

说到前端,真的很蛋疼。

via GIPHY

想知道一个正常的前端知识图谱是怎么样的,可以看 this excellent post 的JavaScript 版块。但是作为一个全栈工程师,你需要了解

  • NodeJS and NPM
  • Yarn
  • 预处理器和编译器(如Babel),用来编译 Typescript, ES6, LESS, SCSS, SaSS
  • 构建工具,如 Grunt 和 Gulp
  • 框架,如 VueJS、React、Angular
  • 模块打包工具,如 Webpack、Browserify、Rollup

Design

设计

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

  • Photoshop 和 Illustrator 或者一些开源的工具比如 Gimp / Inkscape。访问 Design channel来了解更多这样的工具。
  • 一个牛B的、快速的编辑器,比如 Atom 或 Sublime Text (这儿有十种好用的 sublime插件 10 ST plugins for the full stack dev)
  • 像 Subtlepatterns 的背景选择器和颜色选择器能够搭配一些颜色
  • CSS 的栅格系统
  • 上面所说的前端所需要了解的所有知识和 JS 数据模拟
  • 将原型图发表到网上供大家浏览并给于反馈,Ngrok 就非常好用

日志系统

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

via GIPHY

推荐一篇非常棒的 ELK stack 的文章,这会帮助你了解做日志系统所需要的知识。里面包括了查找日志的 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)。

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 京程一灯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 以前的全栈工程师
  • 现在的全栈工程师需要自带什么技能呢
    • 服务管理/运维
        • 后端
          • 数据库
            • 前端
              • Design
                • 设计
                  • 日志系统
                    • 移动端
                    • 做一个全栈工程师值得吗?
                    相关产品与服务
                    云数据库 SQL Server
                    腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档