只是一个网页?

本文是翻译,版权归原作者所有


或者,为什么在Medium做一名工程师

当人们想象在Medium的工作情景时,他们可能想到我们有才华的创始人或者亲切的办公室。他们或许读过我们的《不同的组织架构》或《mindful perks》。他们或许把伟大的设计和Medium联系起来,他们关心我们的愿景

做为一名工程师,这一切听起来很美,但更重要的是,他或她渴望解决困难的或有趣的技术问题。表面看,Medium好像不会有太多问题——“他只是一个内容网站”,对吗?但这不是全部。让我们看看目前我们面临的一些挑战。

推荐

我们急切想帮助Medium上的所有故事能够找到合适的观众。这意味要帮助好的内容排到前面,不管作者是谁、何时发布。我们降低了时效性,用质量取代,想让最好的、最相关的文章浮现给读者。但是你该怎样写出一个算法来决定质量呢?

目前我们采用各种因素来为读者鉴别最好的文章,通过阅读历史的组合,推荐,社会化关系和最近活动。

但是还有很多要做的工作。

我们是如何认定两年前的一篇文章与最近的事件是相关的呢?我们是如何在早上刚上班推送两分钟的阅读,在慵懒的周日却是30分钟的文章呢?我们是如何揭开背后的秘密呢?

写作工具

我们已经从在线编辑那里收到了很多表扬。我们致力于使其简单易用,同时让你讲美丽的故事。

在封面下面,你正在编辑一个抽象的数据模型,比HTML有更多的约束。编辑被作为与基本模型相对的deltas存储,允许简单的合并,较小的负荷与简单的版本控制。

如果你曾经用过,你就知道在网页上实现富文本编辑是多么地困难。我们想继续突破界限,你不用增加复杂度就能给用户带来什么。

我们想让编辑帮助作者做出更好的排版选择,不仅仅是我们当前做的:长破折号周围的微小空白,箭头 →, “只能引号”, ❤, and 省略号… 。我们是如何开发实际上在提高写作的软件呢?

协作

当Medium上线的时候,它还没有大多数站点都有的基于页面的评论;不过,我们允许基于段落的批注(notes)。我们相信这将鼓励人们做出更加相关的评论,并参与更好的在线讨论。

批注也是一个协作和文字加工工具。在你发布一篇文章之前,你能够发送给你的朋友和同事,他们能够标注错误、提供建议。

让协作变得更好 是一个非常有意思的用户体验问题,带来了很多工程学的挑战。多个作者写同一个故事意味着什么?我们该怎样开启专业的工作流?有帮你更好写作的自动化工具吗?该怎么在Medium写一本书?

移动

我们最近忙于iPhone app。我们希望它能提供一个舒心的阅读体验。Medium的很多地方和它都是隐藏的细节,这导致一个有趣的、充满挑战的工程学项目:通过复杂的过渡保持60fps,确保优雅的、无缝的离线行为,智能预加载让用户无需等待,等等……

未来,我们想建立最好的移动阅读和写作体验。我们也想将Medium带向Android。

web

Medium文章的截图看起来像一个简单的HTML网页。有一个头图,一些文字,或许是内嵌图片。但是有很多副标题,我们相信这是Medium区别于其他平台的的阅读体验。

当你滚动的时候,头部消失了。点击一个内嵌图片,它就占满屏幕;点击它就返回到刚才的地方。全尺寸图片随着文字滚动出现而变得模糊。当你到达文章底部,点击阅读列表里的下一篇文章,文章完美地滑入,没有明显的页面载入。

这些细节不应当妨碍阅读体验,我们一直在提高性能。支持它的代码是一个面向服务的简单的网页应用程序。简单,又不简单。

持续迭代

持续部署是最近的规范,我们没有例外。我们每天从头推进。用PhantomJS运行客户端测试,后端测试用nodeunit,HTTP级别的功能测试运行在一个密封环境里。

开发中的功能受variants保护,它能够在很多不同的条件下触发。

数据驱动

我们记录了关于人们如何使用产品的日志,以帮助我们做出合理的产品决定。我们的核心记录是花在阅读上的时间,它通过大量的探索,包括滚动和事件交互而计算出来的。

我们用A-B测试来理解产品变化的启示、实验新想法。同时,我们不害怕做出与数据显示冲突的选择,如果我们认为这对于产品和我们的用户是最好的话。

技术

我们大规模使用AWS。DynamoDB是我们主要的数据存储。SQS增强了线下处理和事件跟踪。线下数据分析用RedShift。web服务器用Node.js编写。用Go实现图片处理和一些其它的后端服务。我们引入了Neo4j作为图表数据库,用来管理用户、文章和集合的关系。web客户端使用Closure Tools。在iPhone我们面向iOS7构建。

交叉功能

我们渴望成为一个真正跨功能的团队。工程师应该有专长,但是如果他们想的话,他们应该能够从后端跨到web,到iOS和Android。

揭开或理解系统的不同部分有助于你做出更好的决定,并成为更好的工程师。比如,看到用Objective-C实现的架构好处和极限,让你保持在web上工作,而用Go实现的接口和结构会改变你如何考虑继承模式。

团队

每个公司都说他们拥有一个很棒的团队,多数情况下,他们是对的。挑战在于为你找到合适的、聪明团队。Medium的工程师是谦虚的、有礼貌的和支持的,还有好奇、聪明和有抱负。他们愿意教别人,也愿意被别人教。

最后,你想说什么?有意思吗

原文地址:https://medium.com/p/194f7a3d260a

译文:只是一个网页? 》| 腊八粥