全栈工程师是可以将最初的原型转换成为 MVP(最低可行产品),他们通常被称之为行业的万精油,无所不会的大师,而且有很好的声誉。为了定义现代的全栈工程师,我们首先需要关注的是完整的堆栈开发人员曾经是什么。

This entry was posted in 程序人生 and tagged 程序员 on 2017年7月24日 by 代码湾.

全栈工程师的以前

很久以前,大约在 2000年(在互联网时代,17 年是很久以前),一个完整的堆栈开发人员是这样的人可以做的:

  • 能利用 Adobe 工具像图象处理软件PS处理图片或者是设计烟花网页
  • 把这个设计变成 HTML、CSS 代码和站点上的图片(哦,还记得吗?)
  • 还有就是编写一些基本的 PHP 4 脚本(在那时没有面向对象的 PHP)来处理服务器端的业务逻辑。
  • 将所有动态数据存储到 MySQL 中,可能会做一些优化。
  • 把这些工作通过 FTP 上传到服务器,然后收集薪水。

请注意,我们在这里谈论的 PHP —— 全栈的 FLASH 或 ColdFusion 开发者的工作流程是不同的(但只是略有不同)。

那些日子很简单,生活很美好。一个人的代理机构到处都是,工作过后,人们仍然有时间和家人在一起。

现在的全战工程师是怎样的呢?

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

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

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

服务器管理员 / DevOps

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

  • 通过终端连接到非图形化界面环境的远程服务器
  • 基本的 shell 脚本编程
  • 管理服务器的用户和用户组
  • 管理服务器程序比如 Apache 和 Nginx,以便其服务于应用程序
  • 管理防火墙和权限
  • 安装新软件,更新软件版本

除了以上基础知识,一个开发者应该懂得如何通过 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
  • 了解缓存技术,使用 Varnish、Redis,以及类似的强大工具,以便把托管成本摊薄为个位数,这将决定一个项目的成败

数据库

数据库是一个独立的部分,因为除了掌握好管理数据的关系数据库,数据库的模式不会经常改变,(比如 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!) ,但薪水比现在低,项目比现在难获得。

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

本文地址:

原文:https://www.sitepoint.com/full-stack-developer/,翻译:oschina

如何成为一名全栈开发人员----转载相关推荐

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

    全栈工程师是可以将最初的原型转换成为 MVP(最低可行产品),他们通常被称之为行业的万精油,无所不会的大师,而且有很好的声誉.为了定义现代的全栈工程师,我们首先需要关注的是完整的堆栈开发人员曾经是什么 ...

  2. 如何在三个月内成为一名全栈开发

    我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买.点击进入详情 ​如果你想在3个月内成为一名全栈开发人员,那么你必须学习下面列出的语言/技能 ...

  3. lte协议栈开发基本内容_关于如何成为全栈开发人员的6个基本技巧

    lte协议栈开发基本内容 如何成为全栈开发人员? 作为开发人员最热门的主题之一,讨论从未停止. 在LinkedIn和Facebook上,许多人把他们的职位称为全职开发人员. 此外,"全栈&q ...

  4. 前端开发者正在被迫成为全栈开发人员

    当我在 WordPress 主题中发现 style.css 文件时,我就对前端开发一见钟情了.对我来说那就是(现在依然是)所有奇迹的源泉.我可以(并且能做到!)更改其中的几行内容,就完全改变网站的外观 ...

  5. 全栈开发和web开发_全栈开发人员:这是什么,以及如何成为一个完整的开发人员...

    全栈开发和web开发 一个全职的开发人员是各行各业的杰作,也是一个备受追捧的求职者. 标题暗示着知识的广度,这对于人手不足的初创公司和管理复杂应用程序的大公司而言都是无价的. 但是, 术语" ...

  6. 全栈开发和web开发_成为全栈开发人员

    全栈开发和web开发 This popular article has been updated in June 2017 to include modern technologies. 该热门文章已 ...

  7. Web前端:全栈开发人员——专业知识和技能

    一个全栈开发人员知道开发的前端和后端.开发人员需要编写代码,遵循敏捷方法,编写应用程序并执行它. 另一方面,他们还需要熟练地开发web应用程序的UI和UX.完整的堆栈开发人员技能包括设计应用程序,使其 ...

  8. 传智播客全栈_播客:从家庭学生到自学成才的全栈开发人员

    传智播客全栈 In this week's episode of the freeCodeCamp podcast, Abbey chats with Madison Kanna, a full-st ...

  9. 你离真正的全栈开发人员只差学会 Electron

    为什么用 JavaScript 来开发桌面应用 曾经的 JavaScript 脆弱.简陋.甚至有被边缘化的危险,不过 JavaScript 在经过了两次飞跃后(以 V8 为首的 JavaScript ...

最新文章

  1. 小猿圈linux之使用VMware workstation安装Linux虚拟机
  2. 基于Delphi的Socket I/O模型全接触
  3. Opengl-光照-基本光照-材质(有了材质一个物体才算是完整了)
  4. mysql手动写的时间_Mysql日期和时间函数
  5. 文献记录(part18)--3D neuron tip detection in volumetric microscopy images using an adaptive ...
  6. c语言开发工具程序代码是什么文件,【C语言】开发工具--GCC使用入门
  7. aws rds监控慢sql_在AWS RDS SQL Server上的SSAS中部署表格数据库
  8. 如何将Mac外部驱动器映射到CrossOver容器
  9. 源码编译安装screen
  10. FISCO BCOS 控制台 部署合约 调用 查看已部署合约的地址
  11. 通俗理解博弈论相关术语
  12. CRC校验和CRC各种算法
  13. 用Axure做页面原型设计
  14. Python:运行时隐藏窗口
  15. BZOJ 3505: [Cqoi2014]数三角形|组合数学
  16. 案例分析:互联网营销和传统营销的区别
  17. scrapy框架中Spider源码解析
  18. win 7硬盘安装centos7 亲测可行
  19. 构建docker镜像时ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: network error
  20. 2020年全球数据中心十大发展趋势

热门文章

  1. 机器视觉 | FPGA | 基于Camera Link的帧抓取和图像处理功能板卡——HawkEye-CL
  2. Veristand制作Custom Device全网最详细教程
  3. linux 创建分区 4t,CentOS6.6添加两块4T硬盘过程记录
  4. 通讯录联系人姓名排序
  5. 实现图书增删改查和分页显示图书信息
  6. 使用sass预处理器的优劣
  7. 美鸽队长:会飞的移动空气质量监测站
  8. indesign怎么查找拼音_用Indesign CS 巧排拼音的方法
  9. C语言学生信息管理系统
  10. Vue.js 3.0 学习笔记(七)class与style绑定