博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
什么是全栈开发者
阅读量:6967 次
发布时间:2019-06-27

本文共 1522 字,大约阅读时间需要 5 分钟。

纯粹基于道德而掌握开发堆栈的每一方面的预期是合理的吗?可能不是,但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项涉及到编码。
http://www.oschina.net/translate/what-is-a-full-stack-developer

转载地址:http://mjisl.baihongyu.com/

你可能感兴趣的文章
Java集合框架源码解析之LinkedHashMap
查看>>
读《学习之道》— 放松点,有时候太勤奋也是一种病
查看>>
王者荣耀使用什么编程语言开发的?
查看>>
Kubernetes-离线部署Kubernetes 1.9.0
查看>>
实验吧---忘记密码了
查看>>
C/C++中int128的那点事
查看>>
JAVA中Sql时间格式与util时间格式转换
查看>>
前端概述及网页入门
查看>>
Java Servlet web.xml 配置详解
查看>>
javascript mvc 代码
查看>>
七牛镜像存储使用手册
查看>>
iOS学习笔记之 Objective-C (二)
查看>>
eclipse提交项目到github
查看>>
小米正式开源 Istio 管理面板 Naftis
查看>>
小白们不要慌,这里为你提供免费靠谱的python学习流程图
查看>>
利用种子文件对windows7的攻击-学习笔记
查看>>
微信小程序中异步处理终极方案async/await
查看>>
Java 面向对象 之 方法的覆盖
查看>>
开发者应该了解Kubernetes对于程序的影响点
查看>>
[Spark]Spark Streaming 指南三 DStreams
查看>>