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,245