我很高兴采访Makinde Adeagbo,Primer的创造者之一。这是Facebook在2000年代使用的超媒体导向JavaScript库。
感谢您接受采访!
问:首先请向读者介绍您的专业和技术背景?
我始终热爱科技。高中时为朋友家人组装电脑,修完校内计算机课程后大学攻读计算机科学。我惊叹于仅凭电脑和网络就能创造游戏/工具等酷炫事物。
我有幸参与微软探索计划(为弱势群体大一学生提供微软实习机会)。那次经历让我决心投身软件业。后又在苹果和微软实习。大学期间在Facebook约150人规模时实习。工程师近乎完全自由地构建和推动公司成长,这是职业初期所需的非凡体验,我如鱼得水。之后任职于Dropbox和Pinterest,并联合创立非营利组织/dev/color。
问:能否谈谈Primer的诞生历程?
2010年Facebook网站极慢。这不是某个人的错——每位工程师添加功能时都引入少量JavaScript。但当时没有共享库或跟踪页面加载JS量的系统。随时间推移,第90百分位页面加载时间膨胀至约10秒!年中,将加载时间减半成为公司三大目标之一。我所在的小团队负责实现此目标。
调查大部分JavaScript来源时,我们发现多数执行简单任务:从服务器获取额外数据/标记,或提交表单后接收标记更新页面。时间有限下,我们决定构建小方案抽象这些模式,减少页面所需代码量。
Tom Occhino和我构建Primer初版,亲自改造几个用例确保其有效性。信心充足后,让更多工程师参与以扩展到整个代码库。
问:Primer和React均诞生于Facebook。团队间是否存在竞争或讨论?具体情况如何?
两者源于不同时代、需求及代码库部分。据我所知从未存在竞争。
Primer完美适配2010年建设的网站类型。成功关键在于理解它非万能方案,而是80/20法则的产物——未用于复杂交互(如创建新帖子界面)。
React源于完全不同的挑战:广告工具。管理/组合/跟踪数百广告需高度复杂的界面。不确定他们是否尝试过Primer,但体验必然痛苦。当时无术语,但这是典型单页应用(SPA)需专用工具的案例。该网站用户也与浏览主页或点击照片的用户截然不同。
问:您认为Primer最终在Facebook失败的原因?
我认为没有技术方案能在Facebook平台跨越15年。网站需求演变、技术更迭、互联网格局随时间变迁。Primer在特定时期和约束下表现卓越,但最终产品需求更丰富交互性——这非Primer设计目标。
还需权衡其他因素:开发者便捷性/速度、安全、可扩展性。公司规模增长10倍时,这些优先级和权衡会变化。
更广泛看,行业存在循环:精简快速方案让位于丰富厚重工具,最终又回归精简快速。未来某天类似Primer的事物可能卷土重来。
问:Primer有多少"理论"基础?构建时是否深入思考超媒体、REST等?
不多。坦白说当时我年轻,对互联网历史或过往研究知之甚少。我被Web底层构建模块的简洁吸引,觉得按设计使用这些工具很有趣。但Web始终是层层堆叠的变通方案,必须保持灵活。
问:从Primer中汲取的最重要技术经验?
说实话,最大经验关于人。构建Primer是一回事,但要成功需培训数百工程师使用它。需教会他们以不同方式思考构建、适时提问、避免误入歧途。最终即使系统完美,若工程师厌恶使用,它仍会失败。