什么是全栈开发者?

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

纯粹基于道德而掌握开发堆栈的每一方面的预期是合理的吗?可能不是,但Facebook这样要求。一个Facebook的员工在OSCON告诉我,Facebook只雇佣全栈开发者。那么全栈开发者是什么意思呢?


对我来说全栈开发者是对每一层都熟悉的人,如果不真正对所有的软件技术感兴趣不会对它们精通。


好的开发者熟悉整个堆栈,他们是知道如何使生活周边的事更容易的人。这就是为什么在办公室我如此反对偏执的原因,当然,政治及沟通挑战在大型组织中还是按固有的套路。我认为Facebook所持有的招聘政策是:如果聪明的人用脑用心,就能在更短的时间内构件更好的产品。


全栈的层:

1. 服务器、网络和服务器环境

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


2. 数据建模

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


3. 业务逻辑

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


4. API层、Action Layer、MVC

  1. 理解外部对数据模型和业务逻辑的操作。
  2. 处于该层的框架应该被大量应用。
  3. 全栈开发者要具备编写干净、一致和易用的接口。过高的复杂度让人厌恶。


5. UI

  1. 全栈coder:a)知道如何创建可读的页面布局;b)或者具备足以协助设计师的知识。A或B,关键是要能有好的视觉设计。
  2. 掌握HTML5和CSS。
  3. JS正在逐步成为语言新锐,Javascript的世界里已经完成了很多激动人心的工作(node, backbone, knockout...)。


6. 用户体验

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


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

  1. 至此我们模糊了开发与架构的界限,但是角色转换很重要。
  2. 全栈coder要明确知道用户使用软件时的场景,而且要领会业务。

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

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


最后:

应用严重依赖一个特定的第三方实现(lib、系统、硬件等)是非常糟糕的实践。全栈开发者要知道了解全面不代表就可以走捷径。当然在抛弃原型法中,他们可以这么干。

在技术起步时很需要全栈开发者的多面技能。然而,在团队定型后,会越来越需要专注技能。


我不觉得在具备了多语言、多平台甚至跨行业的职业生涯之前,你可以称自己为全栈开发者。全栈远超“高级工程师”,它更接近是多语言的开发者并且能在更高的角度看到之间的关联。注意在我的列表中只有3-5项涉及到编码。

相关文章
|
8月前
|
移动开发 前端开发 JavaScript
谈谈你对移动应用全栈开发的理解。
**全栈移动开发**涉及前端、后端、数据库及服务器技能,包括HTML、CSS、JavaScript、Java等语言。开发者需独立完成应用的开发与部署,具备团队协作和沟通能力,以保证应用质量、性能及用户需求。
105 3
|
3月前
|
测试技术 Android开发 开发者
移动应用开发之旅:从概念到上线的全栈探索
【9月更文挑战第36天】在这个数字时代,移动应用已经成为我们生活中不可或缺的一部分。本文将带领读者踏上一场精彩的旅程,从最初的构想到最终的应用上线,深入探讨移动应用开发的各个环节。我们将一起揭开移动操作系统的神秘面纱,了解它们如何支撑起整个移动生态系统。通过具体的代码示例和实操建议,本文旨在为初学者提供一份实用的指南,同时给予有经验的开发者一些新的启示。让我们一起构建更智能、更互联的世界吧!
|
6月前
|
前端开发 JavaScript 数据库
全栈开发者的成长之路:从基础到精通
【7月更文挑战第25天】全栈开发者的成长之路是一条既充满挑战又充满机遇的旅程。通过广泛积累基础知识、精进专业技能和积累实战经验,你可以逐步成长为一名优秀的全栈开发者。在这个过程中,保持对新技术的好奇心和学习热情是至关重要的。同时,也要注重团队合作和沟通能力的培养,因为在软件开发领域,一个人的力量是有限的,而团队的力量是无穷的。希望本文能为你的全栈开发之旅提供一些有益的启示和帮助。
|
6月前
|
前端开发
全栈技术实践问题之全栈开发带来的主要好处是什么
全栈技术实践问题之全栈开发带来的主要好处是什么
|
8月前
|
小程序 测试技术 持续交付
小程序全栈开发:如何提高开发效率
【4月更文挑战第12天】本文探讨了提高小程序全栈开发效率的策略:选择合适开发工具和框架,如微信开发者工具和Taro;实践模块化和组件化开发,增强代码复用性;采用前后端分离模式,提升灵活性;利用微信云开发平台简化工作流程;关注代码优化与性能调优;实施自动化测试和持续集成;强调团队协作与沟通;并强调持续学习与总结,以提升开发效率和构建高质量小程序。
82 2
|
8月前
|
小程序 前端开发 API
小程序全栈开发中的前后端分离实践
【4月更文挑战第12天】本文探讨了小程序全栈开发中的前后端分离实践,强调其能提升开发效率、代码可维护性和可扩展性。文中详细阐述了接口设计、数据交互、前端渲染、后端处理以及团队协作的重要性,并指出统一的API接口、使用前端框架和后端服务器是关键。通过这种模式,开发者能更高效地掌握小程序开发,打造高质量应用。
192 0
|
8月前
|
前端开发 JavaScript Java
全栈开发中的前后端分离技术探索
【2月更文挑战第1天】 本文将介绍全栈开发中的前后端分离技术,探索如何通过前后端分离的架构实现高效灵活的开发流程。我们将深入探讨前后端分离的概念、优势和常用工具,并提供一些实践经验和建议,帮助开发者在项目中更好地应用这种技术。
|
人工智能 前端开发 架构师
|
移动开发 运维 前端开发
【深入浅出全栈开发】全栈是什么?- 课前必读 #154
【深入浅出全栈开发】全栈是什么?- 课前必读 #154
642 0
|
8月前
|
Rust 前端开发 JavaScript
Rust在前端与全栈开发中的实践探索
随着Rust语言的日渐成熟,其应用场景已经从后端扩展到前端和全栈开发领域。本文将深入探讨Rust语言在前端与全栈开发中的实际应用案例,分析Rust语言在这些领域的优势和面临的挑战,并展望Rust未来的发展趋势。