最近网上在热烈讨论一则传闻,说Facebook在招聘所谓的“全栈工程师”(Full Stack Engineer),要求应征者对开发堆栈的每个方面都有所掌握。那究竟何为 “全栈工程师”呢?从字面上来理解,全栈工程师必须熟悉开发堆栈的每一个层次,或者至少熟悉绝大多数并且对所有的软件技术有天生的热情和兴趣。
对于这样的开发者,他们非常擅长使用掌握的技术让自己的生活变得轻松,这也正是为什么Facebook会希望雇佣他们,他们用自己的脑子与热情编码, 好的产品也自然能在最短的时间呈现。那么,一个合格的“全栈工程师”要具备哪些素质呢?
开发堆栈剖析
1.服务器,网络以及宿主环境
需要理解哪些模块可能失效以及为什么,而不能理所当然地认为,只要不断增加资源就能解决所有问题。
知道如何运用操作系统、云存储、网络资源,并能理解数据冗余以及可用性是必需的。
了解应用的规模是如何对硬件造成限制的。
还有多线程和竞态条件,这些概念在开发机上往往不会遇到,但是他们在现实的部署环境中却无处不在。
全栈工程师还必须要能够与Devops很好地协作。他们所设计的系统应该提供有用的错误消息和日 志能力,这样DevOps就能够及时获得这些信息,并采取有价值的行动。
2.数据建模
如果数据模型存在缺陷,那么就常常需要在业务逻辑和更高的层面上使用丑陋的代码来弥补那些数据模型没办法覆盖的死角。
知道如何建立合理的范式关系模型,具备完善的外键、索引、视图、查询表等等。
还要熟悉非关系型数据的存储,知道非关系型数据库在哪些方面超越关系型数据库。
3.业务逻辑
这是系统应用价值的关键所在。
掌握SOLID设计能力(单一职责,开放且封闭,Liskov替代性,接口分离,依赖注入)。
熟悉一些常用的框架。
API/Action/MVC
这些关乎外部世界如何与业务逻辑及数据模型交互。
会使用到大量的框架。
有能力写出清晰、一致、使用简单的接口。
4.用户界面
全栈工程师需要:a)懂得如何构建易读的布局;b)能意识到艺术家和图形设计师的作用。总之,实现一套好的视觉设计方案尤为关键。
熟练掌握HTML5/CSS。
从目前的趋势来看,JavaScript将会是明日之星,最近这一领域硕果累累(NodeJs, backbone, knockout, Angular(自己的加的, 原文没有))。因此,掌握JavaScript必不可少。
5.用户体验
全栈工程师应该意识到:用户仅仅是希望一切运转良好。
一个好的系统是不会让用户得腕管综合征或产生眼疲劳的。全栈工程师能审视全局,可以将一个需要8次点击+3个步骤的过程,简化为仅需要一次点击。
知道如何向用户提示错误信息。如果出现故障,真诚道歉。有时一些无意的错误信息,会让用户感到莫名奇妙。
理解用户和市场需求
这层关系到系统架构,但也绝不是一个不能碰的角色(有可能翻译有误,原文:but that is too much of a hands off role)。
全栈工程师要领悟客户使用软件过程中会需要些什么以及整个市场需要些什么。
以上就是java全栈学什么的详细内容,更多请关注Work网其它相关文章!