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: @赵望野

Made with Slides.com