转自http://redis.iteye.com/blog/2006894
纯粹基于道德而掌握开发堆栈的每一方面的预期是合理的吗?可能不是,但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项涉及到编码。
相关推荐
Java柠檬班Java全栈自动化课程是一项针对Java编程和全栈开发领域的专业培训,它针对的是...课程的设计旨在培养学员具备全面的技术能力,以便他们能够灵活应对软件开发中的各种挑战,为未来的职业生涯奠定坚实的基础。
作为一名JAVA程序员,职业生涯规划至关重要,因为这决定了你在IT行业的长远发展和专业成长。在信息化日益发达的今天,JAVA因其跨平台、稳定性和丰富的库支持,成为众多开发者的首选语言。以下是一些关键的知识点和...
【JAVA软件工程师职业生涯规划】 在当今信息技术飞速发展的时代,JAVA软件工程师作为IT行业的核心角色,有着广阔的职业前景。此份职业生涯规划旨在为JAVA软件工程师提供一条清晰的发展路径,帮助他们在职业生涯中...
在规划职业生涯时,Java开发者可以设定成为技术专家的目标,比如专注于架构设计、高性能系统开发或云计算解决方案。同时,也可以考虑管理方向,如项目经理或技术领导,负责指导团队并优化开发流程。 ### 4. 对加班...
《基于SpringBoot+Vue开发IT职业生涯规划系统》的毕业设计是一项综合性的项目,它结合了后端开发技术SpringBoot和前端开发框架Vue.js,旨在构建一个实用的职业生涯规划平台。这个系统不仅为用户提供个性化的IT职业...
全栈开发,也被称为全端开发,是一种涵盖前端和后端技术的软件开发方式。在这个领域,开发者需要具备从设计用户界面到构建服务器端逻辑,...这样的比赛有助于提升开发者全面的技能,并且对个人职业生涯的提升大有裨益。
总的来说,【Java北大青鸟2年毕业项目】是一个全面的实践平台,它涵盖了从基础编程到高级应用的多个层面,旨在培养具备独立开发和团队协作能力的全栈Java开发者。通过参与这样的项目,学员不仅可以巩固理论知识,还...
【标题】"课工场Web全栈工程师7月份结业考试机试试卷.zip"揭示了这是一个针对Web全栈工程师的结业考核,时间点...通过这个考试,学员可以检验自己在Web全栈开发中的理论知识和实践能力,为未来的职业生涯打下坚实基础。
在合工大的《网站设计与开发》课程中,学生通常会接触到一系列关键技术,包括Java、HTML、CSS、...通过实际项目练习,学生不仅可以加深对理论知识的理解,还能提高实际编程能力,为未来的职业生涯打下坚实基础。
虽然JavaScript不是Java的一部分,但作为Web前端开发的主要语言,了解其基本语法和DOM操作,能够与Java后端进行有效交互,是全栈开发者的必备技能。 通过系统学习上述知识点,初级Java程序员不仅能构建坚实的编程...
通过跟随张孝祥老师的引导,你将能够快速成长为一名合格的Java程序员,开启在IT领域的职业生涯。教程不仅提供了丰富的理论知识,还附带了实用的源代码和项目案例,让你在学习过程中能够做到理论与实践并重,从而更加...
《张孝祥Java就业培训教程书》是一套全面而深入...总之,《张孝祥Java就业培训教程书》是一份覆盖Java全栈的详尽学习资料,无论是初学者还是有一定经验的开发者,都能从中受益匪浅,为自己的Java职业生涯打下坚实基础。
根据给定的信息,我们可以总结出以下15个关键知识点,这些知识点对于程序员在职业生涯中取得非凡成就至关重要: ### 1. 建立强大的个人品牌 建立强大的个人品牌非常重要,这意味着你需要通过各种方式(如社交媒体、...
本资源主要涵盖的是一个基于Java开发的社交项目,名为“java毕业设计&课设-最新java十次方社交项目”,并附带了详尽的...通过该项目的学习,学员可以系统地提升自己的Java开发能力,并为未来的职业生涯打下坚实的基础。
【Java毕业设计】JAVA个人...通过完成这个毕业设计,学生不仅可以巩固Java基础知识,还能掌握Web开发的全栈技能,包括数据库设计、前后端交互、测试策略以及项目管理等方面,为今后的软件开发职业生涯奠定坚实基础。
《深入解析thinkgem-jeesite4-master:Java企业级开发框架详解》 "thinkgem-jeesite4-master" 是一个基于JavaEE技术...通过深入研究和实践,开发者不仅能提高开发效率,还能提升自身的技术素养,为职业生涯添砖加瓦。
【微信小程序】 微信小程序是腾讯公司推出的一种轻量级应用开发平台,它允许开发者在微信内部构建无需下载安装即可...通过这样的实践,学生可以提升软件开发能力,理解全栈开发流程,并为未来职业生涯打下坚实基础。
【Java技术概述】 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems...在达内的课程中,学员可以系统地学习这两门语言,通过大量的编程练习和实战项目,快速提升技能,为未来的职业生涯打下坚实的基础。
综上所述,这篇狂神说Linux课堂笔记是对那些打算从事Java全栈开发者的Linux学习指南。它不仅提供了Linux的理论知识,还结合实际开发工作,指出了学习Linux的重要性及学习路径。通过这堂课的学习,开发者可以为在...
【Java毕设之远程家庭健康监测管理系统】是一个完整的Java毕业设计项目,主要涵盖了Java后端开发、前端界面设计以及...通过深入研究和理解这个项目,学生可以提升自己的全栈开发能力,为未来的职业生涯打下坚实的基础。