全栈开发者

纯粹基于道德而掌握开发堆栈的每一方面的预期是合理的吗?可能不是,但Facebook这样要求。一个Facebook的员工在OSCON告诉我,Facebook只雇佣全栈开发者。那么全栈开发者是什么意思呢? 对我来讲全栈开发者是对每一层都熟悉的人,若是不真正对全部的软件技术感兴趣不会对它们精通。 好的开发者熟悉整个堆栈,他们是知道如何使生活周边的事更容易的人。这就是为何在办公室我如此反对偏执的缘由,固然,政治及沟通挑战在大型组织中仍是按固有的套路。我认为Facebook所持有的招聘政策是:若是聪明的人用脑用心,就能在更短的时间内构件更好的产品。node


全栈的层:

一、服务器、网络和服务器环境程序员

  1. 知道哪里可能崩了和为何会崩,没有什么是理所固然的。
  2. 适当的使用文件系统,云存储、网络资源,必须具有数据冗余和可用性的概念。
  3. 知道应用的伸缩性对硬件的需求。
  4. 什么是多线程和竞争条件?想一想看,在开发机上你可能看不到这些,可是现实环境中它们就是会发生。
  5. 全栈coder还要能与运维并肩做战。提供有价值的错误信息和日志。确保它们是可靠的,由于运维会在你以前看到这些东西。(原文为DevOps

二、数据建模安全

  1. 若是数据模型有缺陷,业务逻辑和上层逻辑就要用奇怪的代码(很丑)来弥补数据模型的缺陷。
  2. 全栈开发者要可以创建合理的、标准的关系模型,包括外键、索引、视图、查找表等。
  3. 全栈开发者要熟悉非关系型数据存储(应该指的不止是NoSQL),而且知道它们相对关系型存储优点所在。

三、业务逻辑服务器

  1. 应用提供的核心价值。
  2. 可靠的面向对象技能。
  3. 可能会用到的框架。

四、API层、Action 层、MVC网络

  1. 理解外部对数据模型和业务逻辑的操做。
  2. 该层会有不少框架应用。
  3. 全栈开发者要具有编写清晰、一致和易用的接口。太高的复杂度让人厌恶。

五、UI多线程

  1. 全栈coder:a)知道如何建立可读的页面布局;b)或者明白本身须要帮助设计师。A或B,关键是要能有好的视觉设计。
  2. 掌握HTML5和CSS。
  3. JS正在逐步成为语言新锐,Javascript的世界里已经完成了不少激动人心的工做(node, backbone, knockout...)。

六、用户体验架构

  1. 全栈coder要知道用户须要的就是It works!
  2. 一个好的系统不会废了用户的手腕和眼睛。一个全栈coder会发现和审视须要8次点击、3步操做的流程,并最终把它一键搞定。
  3. 提供有价值的错误信息。若是崩溃了,就要向用户致歉。有时候程序员会写出让用户自我感受很二的错误信息。

7.知道用户和业务到底要什么框架

  1. 如今咱们模糊了架构的界限,但却可能远离了实际需求。
  2. 全栈coder要明确知道用户使用软件时的场景,并且要领会业务。

关于这个问题的其它方面:运维

  1. 编写高质量的单元测试能力。顺便说一下现现在连JS也能够作单元测试了。
  2. 持续集成。发掘程序构建中重复、可自动化的流程,在必定程度上自动完成测试、文档和部署。
  3. 对安全性的敏感,不一样的层均可能有本身的脆弱点。

最后: 应用严重依赖一个特定的第三方实现(lib、系统、硬件等)是很是糟糕的实践。全栈开发者要知道了解全面不表明就能够走捷径。固然在抛弃原型法中,他们能够这么干。 在技术起步时很须要全栈开发者的多面技能。然而,在团队定型后,会愈来愈须要专一技能。 我不以为在具有了多语言、多平台甚至跨行业的职业生涯以前,你能够称本身为全栈开发者。全栈远超“高级工程师”,它更接近是多语言的开发者而且能在更高的角度看到之间的关联。注意在个人列表中只有3-5项涉及到编码。布局


翻译原文:什么是全栈开发者 英文原文:What is a Full Stack developer?
相关文章
相关标签/搜索