Is full-stack the answer?

About me: 赵望野

2011 年加入豌豆实验室

 

豌豆荚 Windows 版 v1.0

豌豆荚 Windows 版 v2.0

豌豆荚应用搜索 v1.0

...

 

Web Front-end Infrastructure

1. Full-stack Developer 是谁?

2. Full-stack Developer 能干什么?

3. 你的团队需要 Full-stack Developer 吗?

缘起:「The Full Stack」 post from Facebook's Carlos Bueno

「A full-stack web developer is someone who has honed skills in both front-end web design/development and back-end/server coding. You can count on a full-stack web developer to design, code, implement and maintain a fully functional modern interactive website on his/her own (not just a static website with a few pages). 」

一个人?十年前就有了好吗!

区别:思考问题的角度不同,解决问题能力的广度和深度不同

LAMP —— Linux + Apache + MySQL + PHP

MEAN —— MongoDB + Express + AngularJS + Node.js

最流行的两个技术栈

Full-stack Developer 绝不仅仅是能使用 LAMP 或 MEAN 这样的技术栈

把大象装进冰箱分几步?

分解复杂问题

运行环境

生产环境

开发环境

分解的好处是业务边界划分清晰,容易分层开发、维护

但某些特定问题可能贯穿整个技术栈

Full-stack Developer 是具备在整个技术栈中追踪、解决特定问题(甚至是非技术问题)能力的人

PM 大大:某个按钮的 CTR 过低,给我提高他!

Designer: 一定是页面渲染速度过慢导致的

FE: 服务端业务不合理,请求响应时间过长

Server Engineer: 破服务器响应时间太长了

Ops:管我鸟事,明明是页面设计的不合理

Full-stack Developer

来,我们分析一下问题出在技术栈的哪个环节中,然后修复它

「战术大师」

「大局观」

「洞察力」

Full-stack Developer 魔兽世界中的德鲁伊

「来个 T,最好是战士」

「没有」

「那小德也凑合」

「来个奶,最好是牧师」

「没有」

「那小德也凑合」

「来个 DPS,最好是盗贼」

「没有」

「那小德也凑合」

全面发展就等于全面平庸。

——韩寒

误区:Full-stack Developer 要会各种技术

Visual Design

Web Design

UI Design

UX Design

Interaction Designer

Front-end Development

Back-end Development

Mobile Development

Database Development

Database Administration

Web Server Administration

SEO 

Web Analytic

Web Security

…

回到刚才提高按钮 CTR 的问题

按钮的颜色?响应区域?位置?文案?都合理吗?

页面渲染为什么触发多次 reflow ?加载被什么 block 住了?

为什么这个数据库 query 花了这么久?这个调用是不是多余的?

负载均衡的设置合理吗?为什么某个 server 的负载总是比其它的高?

Full-stack Developer 对技术栈内的各中技术都有所了解,可以熟练使用。对原理性能容有深入认识,学习能力强,适应能力强。

中小团队,Full-stack Developer 你值得拥有

早期的豌豆荚基本上人人都是 Full-stack 的

把一件事情从头到尾做完,了解每一个细节

一块独立的业务要快速迭代,快速完善

大型团队,Full-stack Developer 更如鱼得水

把复杂系统分解成不同的问题

针对特定问题在整个系统内进行长期的分析、跟踪、优化

节省大量的沟通成本

从更宏观的角度分析和解决问题

某种程度上讲,豌豆荚的 Growth Hacker (Facebook 也有)的工作非常需要 Full-stack Developer

豌豆荚的前端团队在 Full-stack Develop 上的探索

问题:提高 Web 产品的质量

Pre-process

Build

Test

Deploy

Load Balance

Service Monitoring

RUM

Online Exception Catch

User Analytic

...

 

 

从开发环境的部署,到服务器端的优化,再到用户数据的收集分析然后反馈给下个迭代

 

任何会影响到同一个产品的技术点都会介入,寻找瓶颈,进行优化

Domino

New Relic

Pingdom

BugSnag

Google Analytics

总结

Full-stack Developer 是一群具有超强学习能力和适应能力的工程师,对技术栈内的原理性内容有深入理解。无论团队规模如何,Full-stack Developer 不仅能在中小项目中提供从前到后的一条龙服务,更能在复杂系统的技术栈内针对特定问题进行持续的跟踪和优化,分析瓶颈,解决问题。

Thanks ^_^

 

Q&A

E-mail: wangye.zhao@wandoujia.com

Weibo: @赵望野

Is full-stack the answer?

By Wangye Zhao

Is full-stack the answer?

  • 3,600