如何成为一名全栈开发人员

能够把原型变为完整的MVP(最小可行产品)的一个全栈开发者往往被认为是万金油,却周身刀无把利,而且还理由凿凿。为了给现代的全栈开发者下个定义,我们首先需要弄清全栈开发者在过去意味着什么。

旧时的全栈开发者

很久以前, 大约 2000 年 (在互联网时代, 17 年前就是久以前)全站工程师是这样的 :

匆匆完成一个网页,利用一些 Adobe 的工具比如 Photoshop 或 Fireworks 处理 Web 页面

然后把此设计变成 HTML、CSS 和站内热图(还记得吗?)

编写一些基本的 PHP 4 脚本(在那时没有面向对象的 PHP)来处理服务器端的逻辑

将所有动态数据存储到 MySQ L中,可能做一些优化

通过 FTP 将其上传到服务器,然后领取薪水

请注意,这里我们谈论的PHP —— 一个全栈 Flash 或一个 Coldfusion 开发者的工作流是有所不同的(但只是略有不同)。

那些日子很轻松,生活很美好。一人的开发工作室司空见惯,下班后人们仍然有时间和家人在一起。

现在又如何?

现在一个全栈开发者需要懂得什么?

这些日子,我们担心如下正在发生的事情。 何以发展至这个地步?(图片文字意思是:我几乎见不到我的孩子。那也是你不得不承担的风险)

为了在如今饱和的市场上取得成功,我们开发者,常常也是完美主义者,在是否需要外包上犹豫不定,常常奉行“如果你要做对某事,就要怎样怎样”的信条。这把我们逼到了墙角,我们不得不学习每件事情,如此一来,成为一个全栈开发者常常以围绕如下事情而告终。

服务器管理员 / DevOps

一个开发者必须懂得如何进行基本的服务器管理。这包括但不限于以下几点:

通过终端连接到非图形化界面环境的远程服务器

基本的 shell 脚本编程

管理服务器的用户和用户组

管理服务器程序比如 Apache 和 Nginx,以便其服务于应用程序

管理防火墙和权限

安装新软件,更新软件版本

图片来自GIPHY

除了以上基础知识,一个开发者应该懂得如何通过 Docker 或虚拟机比如Vagrant来创建良好、健康、隔离的开发环境。如果以上所有方面你都不熟悉,我们有一本关于这个主题的在售优秀图书.

一个开发者还应该熟谙版本控制系统,才能够可靠地生成可共享的、协作的代码库及其备份, 并且随时间流逝跟踪其变化。这些日子以来没有一个现代开发者的流程能够少得了版本控制系统。我们这里有一个精彩的付费视频教程。


除了实际管理的或虚拟化的服务器,开发者可能还需要知道- 托管平台,像Heroku、Google Clould、Azure、AWS 等。

来自 GIPHY

对于平台和工具来说,有一点值得一提,那就是宣传比即时可用有效果。但是长远来看,熟悉大家都在谈论的服务终究会派上用场 — 现在客户端可以随时更换供应商,所以需要时刻准备着。幸好我们有部署到这些云主机的终极指南

后端

在后端, 除了懂得所选择的语言(我们选择 PHP)的多种框架CMS(内容管理系统),一个开发者需要熟悉:

Web 服务器比如Nginx和 Apache, 这关系到以上 DevOps(开发+运维)

不幸的是, NodeJS 用于把 JS、CSS 和其他资产编译为静态可驻留的文件。 幸运的是,我们可以通过使用PHP来避免使用 NodeJS。

工具比如Composer,以便在 PHP 中进行打包和依赖管理。没有一个现代开发者的环境离得开此类工具

良好的API 设计,因为今天大多数的新网站都是基于 API 的,几乎不谈及独立的前端交互(下文详述).

搜索引擎比如 ElasticSearch (入门在这里)对性能十分重要

cronjobs和后台作业,借助于工具比如Gearman或库比如Crunz

了解缓存技术,使用VarnishRedis,以及类似的强大工具,以便把托管成本摊薄为个位数,这将决定一个项目的成败

数据库

数据库是一个独立的部分,因为除了掌握好管理数据的关系数据库,数据库的模式不会经常改变,(比如MySQL或 PostgreSQL),一个开发者需要弄懂 NoSQL 数据库比如MongoDB、Redis,或者Cassandra– 更不用说图数据库比如Neo4j

更糟糕的是,这些都在服务器上,在开发者的控制下。 也有几个远程方案比如类似 Mongo 的RestDB或 Google 拥有的Firebase等等。

前端

前端真的很混乱。

图片来自GIPHY

要全面了解当前健康的前端工作流需要什么,请参阅 JavaScript 频道上的这篇优秀文章。但作为一篇“太长,别看”的文章,它概括起来包括以下要点:

NodeJS 和 NPM

Yarn

预处理器和诸如 Typescript、ES6、LESS、SCSS、SaSS 的跨(语言)编译器

构建器和任务执行器,比如 Grunt 和 Gulp

框架,比如 VueJS、React、Angular

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

设计

在设计中,开发者需要知道如何将应用程序的原型转换成可用的格式,如 HTML 和 CSS。 然后可以使其与一些 JS 交互,后端可以用伪 JS 端点模拟,只有当这个“壳”应用程序完成,用户体验设计和接口设计就绪,才能真正开始开发。 这本身就是一项艰巨的任务,需要一套特殊的工具,如:

Photoshop 和/或 Illustrator 或开源的替代品如 Gimp / Inkscape – 在Design channel上找到所有关于这个的信息

一个良好、快速的编辑器如Atom或 Sublime Text (全栈开发的10个 ST 插件在这里)

模式采摘器如 Subtlepatterns 和色彩采摘器以便配色

CSS 的grid systems

以上所有前端部分用于 JavaScript 模拟

在网上部署原型的方法,让顾客看到并给你反馈 –Ngrok对此非常有用

日志

开发者需要对 App 的健康状况进行有效的关注,需要追踪错误,访问日志并从中提取有价值的信息。开发者们还需要尽可能识别标志性的趋势,像 CPU 或者 I/O 使用量的提升都是故障停机的重要标志,这跟 Devops 有一些联系,但这需要拥有特别的技能集。

通过 GIPHY

我们有一篇很好的关于 ELK 栈的文章,它把你对日志的需求都准备好了——它结合了 ElasticSearch 来搜索日志,Logstash 用来收集他们,并且它的可视化面板 Kibana 可以叠加地把它们显示在用户友好的监视器上。甚至还有托管的解决方案来帮助你解决这个问题,例如Logz.io

移动端

最后还要考虑移动端。随着 iOS 和 Android 上的 Webview 性能变得越来越好,而且由于 PWA(增量式 web 应用)的出现,本地应用程序由于其复杂的开发过程正在逐渐失去其魅力。因此,全栈开发人员必须熟悉 PWA,像React Native,或者 NativeScript、Tabris、Cordova、Phonegap 等完全用于webview的知识,或其他的类似实现,以获得一个基于其 API 的优异“客户端应用程序”( 参考上一节的结尾)。

值得成为一个全栈开发者吗?

那么,这一切都值得吗?

首先,应该注意的是,很少有全栈开发者达到那样的全栈。很多人只关注全栈的大部分技术和大多数方面,而不是全部,因为没法做到全部关注。

其次,每一件事知道一点皮毛不会让你成为某个特定技艺的大师,这是真的,但它能让你理解项目中的内容,以及这些技术中哪些是一个项目中实际需要的。这是一个无价的技能,当外包,开办工作室,或只是指导现有的团队从迷路中走上正道都能用上。

我可能不是你会巴结的 “JavaScript 摇滚明星”、 “Elasticsearch 忍者”、 “MySQL 大师”, “Devops 狂人”, 或 “Mobile 争论者” ,但是以我为例,作为全栈开发人员当我从事自由职业时,我得以展开我的翅膀,试验不同的技术,并提供可选择的、不寻常的解决方案给我的客户。 钱可以来自各个方面,我的合同范围可以从服务器工作到 WP 插件开发,以及介于两者之间的所有方面,因为我对所有这些东西都很熟悉(当然,前者比后者更重要)。对我来说,成为一名全栈开发人员是绝对值得的。如果我把它与我之前的只会 Flash 的日子相比,那时我确实更享受工作(没有 JavaScript!) ,但薪水比现在低,项目比现在难获得。

那么你呢,是全栈还是专攻一技?不管是哪一种,你认为这么做值得吗?

(原创作品,转载请注明出处)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,431评论 25 707
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,894评论 2 89
  • 这本书算是太宰治一生的写照,他把自己融入到小说中去,以半自传体的形式完成创作。这亦是他自杀前的绝笔性文字,很难想象...
    心叙杨麟阅读 882评论 2 5
  • 2018年的春节已经过去了,这一年春节过了,我40虚岁了。仿佛四十不惑的日子真的会在一刹那间到来。 去深圳去广州过...
    苏州日日新阅读 1,191评论 0 0
  • 北国的诗 那片红叶是北国的诗, 没有捣衣砧,没有浣花笺, 没有扬州的灯火辉煌, 也没有江南的绵绵细丝。 但当那片凉...
    燚阳阅读 472评论 2 2