如何成为一名全栈开发人员 已翻译 100%

oschina 投递于 2017/07/04 10:51 (共 13 段, 翻译完成于 07-07)
阅读 4323
收藏 69
1
加载中

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

旧时的全栈开发者

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

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

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

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

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

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

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

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

现在又如何?

    圣洁之子
    圣洁之子
    翻译于 2017/07/04 14:08
    1

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

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

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

    圣洁之子
    圣洁之子
    翻译于 2017/07/04 14:30
    0

    服务器管理员 / DevOps

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

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

    • 基本的 shell 脚本编程

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

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

    • 管理防火墙和权限

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

    图片来自 GIPHY

    圣洁之子
    圣洁之子
    翻译于 2017/07/04 14:45
    0

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

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

    圣洁之子
    圣洁之子
    翻译于 2017/07/04 14:59
    0


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

    来自 GIPHY

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

    边城
    边城
    翻译于 2017/07/06 21:34
    0

    后端

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

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

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

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

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

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

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

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

    圣洁之子
    圣洁之子
    翻译于 2017/07/04 16:26
    0

    数据库

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

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

    圣洁之子
    圣洁之子
    翻译于 2017/07/04 16:47
    0

    前端

    前端真的很混乱。

    图片来自 GIPHY

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

    • NodeJS 和 NPM

    • Yarn

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

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

    • 框架,比如 VueJS、React、Angular

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

    圣洁之子
    圣洁之子
    翻译于 2017/07/04 17:19
    0

    设计

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

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

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

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

    • CSS 的 grid systems

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

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

    圣洁之子
    圣洁之子
    翻译于 2017/07/05 10:22
    0

    日志

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

    通过 GIPHY

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

    溪边九节
    溪边九节
    翻译于 2017/07/04 17:50
    0
    本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
    我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
    加载中

    评论(8)

    好了_是我
    好了_是我
    php专家
    latyas
    latyas
    全干工程师:猪队友不给力只能自己干
    raos1105
    raos1105
    看完该文,感觉自己是一个称职的全栈,当然了,我目前在公司的岗位也是全栈工程师
    一只囧蟹
    一只囧蟹
    一个打几份工?能拿几份工钱!
    久永
    久永
    为什么需要全栈,那是为了降低管理水平要求而已。
    grath
    grath
    值得
    2
    2e12213
    收集薪水....
    2
    2e12213
    设计烟花网页😂😂 直接叫firework就好啊
    返回顶部
    顶部