纯粹基于道德而掌握开发堆栈的每一方面的预期是合理的吗?可能不是,但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,集文档、工具、教程、书籍、博客一体的综合导航网站。皆在打造一个高质量、高效率的在线导航网站,避免你在学习的路上走弯路。
适合人群:对Java感兴趣的初学者,有一定编程经验的开发者希望全面提高自身能力的人士。 使用场景及目标:无论是个人自学还是培训机构指导课程都可以采用本文档提供的系统规划来进行高效地学习。其最终目的是帮助...
随着信息技术的飞速发展,计算机科学已成为当今世界最前沿的学科之一,而全栈开发者的培养也成为业界关注的焦点。全栈开发者,顾名思义,指的是那些能够掌握前端、后端以及数据库等多方面技能的复合型人才。在全栈...
全栈开发者不仅仅是负责前端界面的构建,还需要处理服务器、数据库、系统架构以及客户端等工作。全栈开发者需要根据项目需求的不同,可能涉及到移动栈、Web栈或原生应用开发。实际上,一个全栈开发者的角色更类似于...
全栈开发者通常是指那些能够处理软件开发中从前端到后端,甚至包括数据库管理的多个层面的开发者。在AI的新纪元中,全栈开发不仅要求开发者具备传统的编程技能,还要求他们能够理解和应用机器学习、深度学习等AI技术...
通过这份全方位全栈开发学习经历的分享,我们可以看到,一个成功的全栈开发者需要具备全面的技术知识,良好的项目组织能力,以及不断学习和适应新技术的能力。随着未来技术的发展和市场的需求变化,全栈开发者的角色...
这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨...
3. **API设计**:全栈开发者需要理解RESTful API的设计原则,它定义了客户端和服务器之间的通信方式,确保数据交换的高效和标准化。 4. **版本控制**:Git是开发者必备的版本控制系统,它管理代码的历史版本,便于...
为了进一步提升开发效率和工作体验,本文将介绍10款必备的Sublime Text插件,这些插件对于全栈开发者来说至关重要。 1. **Package Control**:Package Control 是 Sublime Text 的一个核心插件,它提供了方便快捷的...
这样的技能集使得全栈开发者能够在项目的各个阶段中发挥关键作用,从设计用户界面到实现后端逻辑再到部署上线,他们都能参与其中。 本项目中的“基于Java核心技术的全栈开发教程设计源码”,提供了覆盖全栈开发各个...
本项目名为"Fullstack-boilerplate",是一个专为全栈开发者设计的样板项目,它结合了React(前端框架)和Express(后端框架),旨在简化全栈应用的开发流程。 **React:现代前端开发的利器** React是由Facebook...
全栈开发者需要具备前端和后端的开发能力,能够在项目中同时处理客户端和服务器端的开发工作。《Vue.js+SpringBoot全栈开发实战》作为一套课程的PPT资料,无疑为想要成为全栈开发者的学习者提供了一套系统的实战指南...
全栈开发者不仅需要前端技能,还应该对服务器端编程有所了解。因此,这部分的教程会包含Node.js的学习,Node.js是JavaScript的运行环境,它允许JavaScript代码在浏览器外运行,非常适合进行服务器端开发。 数据库是...
无论你是希望成为全栈开发者,还是希望在现有技术栈上增加新技能的开发者,都可以通过阅读本书获得巨大的帮助。此外,本书的内容也可以作为计算机专业学生的教学参考资料,帮助他们更好地理解全栈开发概念,并在实践...
近日,编码社区 HackerRank 调研了全球 162 个国家/地区的 116000 多名开发者,正式发布了《2020 HackerRank 开发者技能报告》,基于此,开发者可以了解最新的技术趋势与技能,希望能够给大家带来一定的参考。...
Python作为一种强大的、易读性强的编程语言,因其广泛的应用领域和丰富的生态系统,已经成为全栈开发者的首选工具之一。 这个压缩包中包含的"python全栈3期-课件与源码",意味着我们有机会接触到一个为期104天的...
全栈开发者需要具备硬件开发、传感器应用、云开发、Web开发、APP开发、通信技术、数据存取、大数据分析等多方面的技能。 4. 微软.NET技术在全栈开发中的应用:文档中提到,由于工控领域多为集成项目,所以以Windows...
适合人群:有兴趣深入了解或者转型成为全栈开发者的程序员。 使用场景及目标:为正在考虑向全能型人才发展的个人提供指导,解释为什么学习全栈开发是有益处的同时给出学习路线图和潜在风险提示。 其他说明:该资料...
Java全栈开发者通常会利用Java技术栈来实现这一目标。 Java全栈开发涉及的技术范围非常广泛,包括但不限于Java SE用于基础编程,Java EE/Spring框架进行企业级应用开发,前端技术如HTML/CSS/JavaScript用于用户界面...