纯粹基于道德而掌握开发堆栈的每一方面的预期是合理的吗?可能不是,但Facebook这样要求。一个Facebook的员工在OSCON告诉我,Facebook只雇佣全栈开发者。那么全栈开发者是什么意思呢?
对我来说全栈开发者是对每一层都熟悉的人,如果不真正对所有的软件技术感兴趣不会对它们精通。
好的开发者熟悉整个堆栈,他们是知道如何使生活周边的事更容易的人。这就是为什么在办公室我如此反对偏执的原因,当然,政治及沟通挑战在大型组织中还是按固有的套路。我认为Facebook所持有的招聘政策是:如果聪明的人用脑用心,就能在更短的时间内构件更好的产品。
全栈的层:
1.服务器、网络和服务器环境
-
知道哪里可能崩了和为什么会崩,没有什么是理所当然的。
-
适当的使用文件系统,云存储、网络资源,必须具备数据冗余和可用性的概念。
-
知道应用的伸缩性对硬件的需求。
-
什么是多线程和竞争条件?想想看,在开发机上你可能看不到这些,但是现实环境中它们就是会发生。
-
全栈coder还要能与运维并肩作战。提供有价值的错误信息和日志。确保它们是可靠的,因为运维会在你之前看到这些东西。(原文为DevOps)
2.数据建模
-
如果数据模型有缺陷,业务逻辑和上层逻辑就要用奇怪的代码(很丑)来弥补数据模型的缺陷。
-
全栈开发者要能够建立合理的、标准的关系模型,包括外键、索引、视图、查找表等。
-
全栈开发者要熟悉非关系型数据存储(应该指的不止是NoSQL),并且知道它们相对关系型存储优势所在。
3,业务逻辑
-
应用提供的核心价值。
-
可靠的面向对象技能。
-
可能会用到的框架。
4,API层、Action 层、MVC
-
理解外部对数据模型和业务逻辑的操作。
-
该层会有很多框架应用。
-
全栈开发者要具备编写清晰、一致和易用的接口。过高的复杂度让人厌恶。
5,UI
-
全栈coder:a)知道如何创建可读的页面布局;b)或者明白自己需要帮助设计师。A或B,关键是要能有好的视觉设计。
-
掌握HTML5和CSS。
-
JS正在逐步成为语言新锐,Javascript的世界里已经完成了很多激动人心的工作(node, backbone, knockout...)。
6.用户体验
-
全栈coder要知道用户需要的就是It works!
-
一个好的系统不会废了用户的手腕和眼睛。一个全栈coder会发现和审视需要8次点击、3步操作的流程,并最终把它一键搞定。
-
提供有价值的错误信息。如果崩溃了,就要向用户致歉。有时候程序员会写出让用户自我感觉很二的错误信息。
7.知道用户和业务到底要什么
-
现在我们模糊了架构的界限,但却可能远离了实际需求。
-
全栈coder要明确知道用户使用软件时的场景,而且要领会业务。
关于这个问题的其它方面:
-
编写高质量的单元测试能力。顺便说一下现如今连JS也可以做单元测试了。
-
持续集成。发掘程序构建中重复、可自动化的流程,在一定程度上自动完成测试、文档和部署。
-
对安全性的敏感,不同的层都可能有自己的脆弱点。
最后:
应用严重依赖一个特定的第三方实现(lib、系统、硬件等)是非常糟糕的实践。全栈开发者要知道了解全面不代表就可以走捷径。当然在抛弃原型法中,他们可以这么干。
在技术起步时很需要全栈开发者的多面技能。然而,在团队定型后,会越来越需要专注技能。
我不觉得在具备了多语言、多平台甚至跨行业的职业生涯之前,你可以称自己为全栈开发者。全栈远超“高级工程师”,它更接近是多语言的开发者并且能在更高的角度看到之间的关联。注意在我的列表中只有3-5项涉及到编码。
相关推荐
全栈工程师是指掌握多种技能,胜任前端与后端,能利用多种技能独立完成产品的人。 技术有两个发展方向,一种是纵向一种是横向的,横向的是瑞士军刀,纵向的是削铁如泥的干将...可以说全栈什么都会,但又什么都不会。
本项目是一个适合前端全栈开发者的编程导航,包括前端、平面设计、服务器、后端、Blog,集文档、工具、教程、书籍、博客一体的综合导航网站。皆在打造一个高质量、高效率的在线导航网站,避免你在学习的路上走弯路。
全栈开发者不仅仅是负责前端界面的构建,还需要处理服务器、数据库、系统架构以及客户端等工作。全栈开发者需要根据项目需求的不同,可能涉及到移动栈、Web栈或原生应用开发。实际上,一个全栈开发者的角色更类似于...
3. **API设计**:全栈开发者需要理解RESTful API的设计原则,它定义了客户端和服务器之间的通信方式,确保数据交换的高效和标准化。 4. **版本控制**:Git是开发者必备的版本控制系统,它管理代码的历史版本,便于...
为了进一步提升开发效率和工作体验,本文将介绍10款必备的Sublime Text插件,这些插件对于全栈开发者来说至关重要。 1. **Package Control**:Package Control 是 Sublime Text 的一个核心插件,它提供了方便快捷的...
本项目名为"Fullstack-boilerplate",是一个专为全栈开发者设计的样板项目,它结合了React(前端框架)和Express(后端框架),旨在简化全栈应用的开发流程。 **React:现代前端开发的利器** React是由Facebook...
近日,编码社区 HackerRank 调研了全球 162 个国家/地区的 116000 多名开发者,正式发布了《2020 HackerRank 开发者技能报告》,基于此,开发者可以了解最新的技术趋势与技能,希望能够给大家带来一定的参考。...
本项目是一套由HTML和CSS编写的120天全栈工程师养成路径设计源码,共包含60个文件,其中HTML文件45个,Markdown文件4个,图像文件(JPG和PNG)...该路径旨在帮助初学者从零开始,经过120天的系统学习,成为全栈开发者。
Python作为一种强大的、易读性强的编程语言,因其广泛的应用领域和丰富的生态系统,已经成为全栈开发者的首选工具之一。 这个压缩包中包含的"python全栈3期-课件与源码",意味着我们有机会接触到一个为期104天的...
全栈开发者需要具备硬件开发、传感器应用、云开发、Web开发、APP开发、通信技术、数据存取、大数据分析等多方面的技能。 4. 微软.NET技术在全栈开发中的应用:文档中提到,由于工控领域多为集成项目,所以以Windows...
全栈开发者还需要了解如何将不同的技术组合在一起,以实现一个功能完整的网站。 在本资源中,涉及到了以下知识点: 1. 技术栈的理解:技术栈是构建网站所需的一系列技术的集合。对于Web全栈开发来说,前端技术栈...
本项目为基于Spring Boot的Java全栈开发...案例库内容丰富,涉及Spring Boot入门配置、持久化技术、NoSQL应用、安全管理、企业级开发实践、系统监控、部署运维等多个方面,旨在为全栈开发者提供全面的学习和实践资源。
标题中的“全栈开发插件备份 + 搜索工具”揭示了这个压缩包包含的资源是针对全栈开发者使用的,特别是那些在IDEA环境下工作,并且需要进行Vue.js开发和高效文件搜索的用户。这里我们将详细探讨其中涉及的两个主要...
这种全面的技能集使得全栈开发者能够在项目的各个环节中发挥关键作用,提高开发效率,增强团队协作,同时也有助于更好地理解和满足客户需求。 Python全栈开发实践的重要性体现在多个方面。首先,全栈开发人员可以...
全栈开发者熟悉多种编程语言和技术,使得他们能够在项目的各个层面进行工作,提高开发效率,减少团队协作中的沟通成本。 在Web开发领域,HTML(HyperText Markup Language)是构建网页内容的基础语言,它是全栈...
《React全栈电子书》是针对想要深入学习React及其生态系统,包括React本身、Redux、React Router等技术的开发者准备...通过深入阅读并实践书中的内容,你将能够熟练掌握React及其相关生态,成为一名出色的全栈开发者。
适用人群:该指南适用于已经完成初阶段全栈开发者培训的学生,尤其是那些参加Ulster University提供的全栈软件工程硕士课程的学员。 使用场景及目标:目的是使学生们能够在实践中深入理解全栈开发的工作流程和技术...
为了成为一名成功的全栈开发者,需要掌握一系列的技术和实践,以下将详细探讨这一过程。 首先,HTML(HyperText Markup Language)是全栈开发的基础,它是构建网页内容的主要标记语言。了解并熟练运用HTML,包括...
在物联网时代,传统的全栈开发者需要扩展其技能集,成为全能的全栈开发者。这意味着他们不仅要熟悉后端和前端开发,还要掌握硬件、嵌入式系统、电气工程和机械工程等领域的知识。全栈开发者在物联网项目中扮演重要...
全栈开发者(Full-Stack Developer)是IT行业中一个重要的角色,他们具备开发应用程序所需的各种技能,从前端用户界面到后端服务器、数据库以及中间的API交互。全栈开发者不仅要理解各种编程语言和技术,还需要掌握...