一个能够将一个原型变成一个变成一个MVP(minimum viable product, 最小变量产品)的全栈工程师通常都被说成是门门精通,样样稀松, 当然其实这是褒义的说法。为了给全栈工程师一个最新鲜的定义,我们首先来关注一下全栈工程师以前是搞什么的。 以前的全栈工程师很久以前,大约在 2000 年(在互联网的次元里,17年可以说是一个非常长的时间了),一个全栈工程师必须掌握下面的本领:
_注意我们在这里讨论 PHP —— 一个全栈 Flash 或者 Coldfusion (一种 Web 服务器) 开发者可能有不同的工作方式(但是也仅仅是细微的差别) 在那个单纯的时代,生活是如此的美好。个人开发者一抓一大把,而且程序猿工作完还有大把的时间陪伴自己的家人。 那现在呢? 现在的全栈工程师需要自带什么技能呢这些年代,我们也有一些荣耀,比如这些正在发生的东东,这是怎么做到的呢? 为了在这个牛逼的市场里获得成功,我们这些开发者——通常都是完美主义者——应经常把“如果你想做正确的事”当做自己的座右铭,并经常质问自己。这会强迫我们自己集中精力在一处,而且必须学习所有东西,所以做一个全栈工程师往往要学会以下技能: 服务管理/运维一个开发者必须了解基础的服务器管理知识。包括当不限于以下知识:
via GIPHY 除了这些基础技能,开发者必须懂得怎样去创建一个好的、健康的、分离的开发环境,在 Docker 或者像 Vagrant 这样的虚拟机环境中。 如果上面所有的技术你都不熟悉,那我必须给你推荐一本超棒的书,点这里购买. 开发者必须对版本控制系统非常熟练,为了让开发有靠谱的生产备份和可分享、可协同的代码库,这些代码库能够根据时间来跟踪代码变化。现在已经没有开发者的工作流是完全离开版本控制的了。我们有一个非常棒的关于版本控制的视频教程,点这里购买. 云和实际管理或者虚拟服务器不同,一个开发者也许要知道云主机平台,比如Heroku, Google Cloud, Azure, AWS等等。 via GIPHY 有一点必须说明的是,平台和工具更多的是为了炒作而不是其实用性。但是熟悉每个人都在谈论的业务,长远来看会很有用,一个平台和工具的客户端应该可以随时更换服务提供商。幸运的是,我们有云主机部署权威指南 后端在后端,除了要懂选择什么语言以外,比如 PHP 和众多的框架 and CMSes,一个全栈开发者必须熟悉:
数据库数据库是一个单独的部分,因为除了很好地掌握我们基本上不会有结构变化的关系数据库(MySQL或者 PostgreSQL)的数据模式之外,一个全栈工程师应该对非关系型数据库有所了解,如MongoDB, Redis, 或 Cassandra ,更不用说像 Neo4j 这样的图形数据库了。 不幸的是,这些都是服务器上的东西,都在全栈工程师的控制下。也有几个类似 Mongo 的远程解决方案,像RestDB或者 Google-owned Firebase 等。 前端说到前端,真的很蛋疼。 via GIPHY 想知道一个正常的前端知识图谱是怎么样的,可以看 this excellent post 的JavaScript 版块。但是作为一个全栈工程师,你需要了解
Design设计在设计方面,全栈开发者需要了解怎样在一个产品变成真正可用的 HTML 、CSS 代码之前,画一个 原型图 。然后就可以去用 JS 写交际、后端也可以用假数据来模拟生产环境。只有这个关键的原型图完成,用户体验设计和接口设计就绪,真正的开发才能开始。这本身就是一项艰巨的任务,需要一套特殊的工具:
日志系统为了高效监控应用的健康度,全栈开发者必须能够追踪错误,找到错误日志然后从中提取出有用的信息。全栈开发者也需要从日志中预测一些趋势,比如 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)。 你呢,你是全栈还是也精于专呢?不管你是不是全栈,你觉得做的事情值吗? |
|
来自: 西北望msm66g9f > 《编程》