写点什么

社区热议“全栈”开发者

  • 2014-01-24
  • 本文字数:2114 字

    阅读完需:约 7 分钟

最近一段时间,国内开发社区针对“什么是全栈 (Full Stack) 开发者”以及“为什么”、如何成为“全栈”开发者进行了热烈的讨论,各种观点百花齐放,本文精选了其中的精彩观点。

最初的讨论来源于国外的一篇文章“什么是全栈开发者”,其中指出 Facebook 招聘的员工都要求是“全栈”工程师,作者认为“全栈开发者是对每一层都熟悉的人,如果不真正对所有的软件技术感兴趣不会对它们精通。”这些层包括:

  • 服务器、网络和服务器环境,比如:恰当地使用文件系统、云存储、网络资源,必须具备数据冗余和可用性的概念;知道应用的伸缩性对硬件的需求;提供有价值的错误信息和日志。
  • 数据建模,比如:能够建立合理的、标准的关系模型,包括外键、索引、视图、查找表等;要熟悉非关系型数据存储,并且知道它们相对关系型存储优势所在。
  • 业务逻辑,比如:应用提供的核心价值;可靠的面向对象技能;可能会用到的框架。
  • API 层、Action 层、MVC,比如:理解外部对数据模型和业务逻辑的操作;编写清晰、一致和易用的接口。
  • UI,比如:知道如何创建可读性高的页面布局;掌握 HTML5 和 CSS。
  • 用户体验,比如:会发现和审视需要 8 次点击、3 步操作的流程,并最终把它一键搞定;提供有价值的错误信息。
  • ……

涂雅在博客中撰写了两篇文章讨论“全栈”开发者,他认为:“全端工程师不是什么高大上,它只是一种职业,和 DBA 运维产品工程师一样,只是职业的细分。全端工程师不是要吃掉前端更不是要吃掉后端,它是环境发生到一情况况所催生的一种新的职业,它恰恰是市场更细分的结果。”为什么需要“全栈”开发者,涂雅认为我们需要有全局视野的人:

老板们都说,开发人员要有产品意识,要有用户意识,如果你只做后端,恐怕你是不能理解前端对用户的重要性。其实说来惭愧,很多人误以为我是个臭前端,其实我从来没有专职做过前端,我很抱歉我站错了队。这么多年,我一直是在写点前端并厚着脸皮混在后端,作为一个低水平的臭后端,我只是更喜欢和用户接近一点而已。

IT 行业的鄙视链是很严重的,大家之间相互鄙视,或者,你换个岗去做对方的工作,我相信你就能了解到他们的工作价值了。前端说用户体验重要,后端说没有后端你前端屁都不是,彼此对调一下,你能感受更多。

一种技术不能解决所有问题,我们需要从多种技术中权衡,到底是用 Hybrid 还是用 Native,这是要根据你的业务场景和人员配置情况来判断的,不是说看别人写的几篇教程或者指南就能决定的。

在知乎社区上,很多人针对全栈开发者展开了精彩的讨论。其中 Cat Chen 现身说法,他认为任何一方面的具体经验都不重要,重要的是思维方式和学习能力。

Facebook 的众多海报当中,有一张写的是“任何一个 Facebook 的问题,都不是别人的问题”。有问题,你就需要去评估是否值得解决。如果值得解决,你就应该着手去解决,而不是假设公司内会有另外一个人比你更合适解决这个问题。这时候很可能你就需要去做你从来没有做过的事情,需要学习你原本可能完全不懂的技术。

如果你是个专门做数学模型的博士,加入 Facebook 原本是打算做搜索结果优化的,结果发现这不是最急需解决的问题,JavaScript 性能才是最需要解决的问题,你怎么办?如果你以为 Facebook 需要的是你做数学模型的经验,那你就错了。Facebook 需要的是你完成博士学位的学习能力。你从来没做过 JavaScript 并且觉得 JavaScript 很恶心?正确的做法是立即在网上买几本 JavaScript 入门的书连夜看完,然后着手分析性能瓶颈并且解决。在你完成手动优化后,你还可以思考一下能否把这做成自动化,例如说在代码提交时分析 JavaScript 语法树并且指出可能成为性能瓶颈的地方,又或者说从用户浏览器那里收集性能数据扔到 Hive 然后再从中分析产生瓶颈的特征。这些都可能涉及到一些你没有做过也没有学过的东西,但问题摆在那里你就需要去解决,而无论这要求你去钻研什么。这就是我所说的学习能力。

李楠则认为,相信全栈开发者的核心并非否定团队和协作,而是更多的体现在架构设计、快速原型和问题解决方面。

全栈开发者在快速原型上也很有优势,因为省去了大量的管理和沟通成本。而且,这并非就意味着一定在代码质量或者测试上有缩水。

服务器压力太大未必需要通过后端解决,优化 SQL 是选择,而拿一部分数据和运算到前端也许是更加合理和低成本的选择。一个系统运行多年,最后遗留的问题很可能需要对业务和技术都有深入理解的人才能解决。

技术人员的价值不是指派做了一半的问题给队友,而是更快更好的搞定事情。

尤雨溪认为,态度才是最重要的事情。

即使都是全栈开发者,每一个人各自的技能特点也肯定会不一样,有人在前端更擅长一些,有人在服务器层面更有经验… 但其实没有什么硬性的门槛,需要的是解决任何问题的能力和意愿。你要做到的就是不固步自封在一个领域。遇到问题,就去研究,不因为问题不在你的领域就放弃或者推给别人。即使一开始的解决方案很笨拙也无所谓,想办法把事情搞定。比如说我要做一个网站,我有一些东西没碰过,但我有足够的兴趣和动力去搞个八九不离十。当你经历过一次这个过程以后,你就会有信心去弄明白更复杂的东西,在之前的基础上进一步去消化、改进、学更多的东西。

有关全栈开发者的讨论还在继续,InfoQ 的读者对此有何看法,欢迎发表自己的意见。

2014-01-24 08:002661
用户头像

发布了 501 篇内容, 共 257.7 次阅读, 收获喜欢 61 次。

关注

评论

发布
暂无评论
发现更多内容

架构师训练营第二周作业

xs-geek

架构师训练营第 1 期 week2

张建亮

极客大学架构师训练营

设计模式第三周总结「架构师训练营第 1 期」

天天向善

Golang单例模式手写稿

Jacky.Chen

Springboot 邮件任务

hepingfly

springboot 发送邮件

JD-GUI反编译jar包为Java源代码

MySQL从删库到跑路

Java jar 程序员 Spring Boot jar包的小秘密

为什么Rust的println!不会发生所有权转移?

袁承兴

rust 元编程

第三周作业

极客大学架构师训练营

分布式系统的核心:共识问题

多颗糖

分布式计算 计算机基础 分布式系统 架构师

区块链3.0时代:大规模商业应用开发即将实现

CECBC

区块链 数字金融

架構師訓練營第 1 期 - 第 02 周作業

Panda

架構師訓練營第 1 期

第三周作业

icydolphin

极客大学架构师训练营

架构师训练营第二周总结

xs-geek

架构师训练营 Week3 代码重构 - 学习总结 设计模式

spring 设计模式 JUnit

第三周-代码重构-学习总结

刘希文

LeetCode题解:242. 有效的字母异位词,数组计数,JavaScript,详细注释

Lee Chen

大前端 LeetCode

Linux忘记root密码怎么办

MySQL从删库到跑路

Linux 服务器 root密码 root

[Python3]三子棋游戏!祝大家中国71周年国庆节快乐!

MengZian

Python

Mongodb异常关闭,再次启动报错

MySQL从删库到跑路

mongodb

区块链可以为物联网做些什么?

CECBC

区块链 物联网

设计模式第三周作业「架构师训练营第 1 期」

天天向善

单例模式 组合模式

week03

……

Week 3 Assignment

Yinan

vagrant 开发环境配置

孙志平

架构师训练营第三周学习总结

成长者

极客大学架构师训练营

spring-boot-route(二)读取配置文件的几种方式

Java旅途

Java Spring Boot

最完整的PyTorch数据科学家指南(2)

计算机与AI

学习 PyTorch

架构师训练营第三周命题作业

成长者

极客大学架构师训练营

架构师训练营第 1 期 week2 总结

张建亮

极客大学架构师训练营

集中日志系统ELK

Java个体户

ELK

当区块链遇见共享经济,会碰撞出怎样的火花?

CECBC

区块链

社区热议“全栈”开发者_Meta_崔康_InfoQ精选文章