当人们想到Wayfair的,他们往往认为华而不实的网站,琅琅上口的电视广告,以及风度翩翩的客户服务。他们也显然认为家具。他们没有想到,但是,是家具如何获取客户。许多人没有意识到,UPS和联邦快递不会带来梳妆台或餐桌他们的房子。他们还没有意识到,实际上Wayfair维护和运行是必须同步,以便在周五获得你的沙发给你完美的工作载体,仓库和投递代理的庞大供应链网络。高级交货速度,可靠性和低成本是最重要的,以Wayfair的成功作为一个企业,而这些地区是我的球队,交通工程(TRNS)的主要关注点。

在TRNS团队中,我们热衷于移动设备,并不断致力于提高网络的容量和吞吐量,以提供更好的客户体验。正是这种激情促使我和我的四名队友为今年夏天的黑客马拉松——WayfairHacks——设计并实施了一个以交通为重点的项目。

运输规模在Wayfair

我们对规模的看法与许多其他公司非常不同,甚至与Wayfair的其他团队也非常不同。虽然纯技术上的扩展对于我们的功能来说确实很重要,但我们更关心我们的业务规模。Wayfair是一个快速增长的业务,我们需要能够处理我们网络中快速增长的订单量。这需要不断的思考和奉献,以适当地扩大我们的供应链及其相关的流程、工具和工作流。如果我们做得不好,客户体验就会受到影响。一个良好规模的供应链将为我们的客户带来更低的成本、更短的交货时间和更好的可靠性(听起来很熟悉吗?)

第一英里皮卡

需要网络缩放是无处超过我们的供应商皮卡空间挤压;我们称之为“第一英里”运输,因为这是第一步,获得一些到网络中。关于我们的“大包裹”(即大又重的物品)的90%的体积会进入称为“池”的过程,其中项目是从他们的供应商的设施拾起,并提请最近Wayfair设施。它看起来是这样的:

这个过程在几个“池子点”设施在我们的网络由卡车司机,谁拿起从大量的供应商项目的专用运输车队完成。这些驱动程序由谁花了一整天电话传递信息来回调度管理。这些驱动器需要被告知去哪里,什么回暖,以及调度员需要知道什么是真正拿起对什么不是。这实际上是在货运业很常见的,但是当你通过经营规模的背景下看它的问题变得很明显。

在评估我们预计的明年订单量增长时,结合每天都有新供应商加入的事实,我们估计我们会有一个增长100%以上到2019年夏天,司机的数量将会增加。对于我们现有的调度员来说,这样的司机实在太多了,无法管理频繁的电话呼叫。它还加剧了我们目前遇到的可见度问题。虽然我们经常有意地(而且有价值地)基于电话、电子邮件和谷歌表格开始运营,以便我们能够快速学习并在需要时转向,但这个系统在我们的规模上变得不可持续,需要一个创造性的、技术上的解决方案:错过和未优先排序的包裹将对我们的整个网络造成严重破坏。我们知道问题来了,我们想在为时已晚之前解决它。

想出一个解决办法

我的团队决定什么,我们认为是一个明显的解决这个问题进入夏季每年黑客马拉松:移动应用在我们的车队驾驶员。我们可以使用这个程序来推动路线和停止给司机,让他们记录他们的成功和失败的皮卡。我们的近期目标是为这个应用程序削减了相关标准的驱动器工作流程的所有电话。此外,我们希望我们的调度员管理这一过程的方法。我们花了一些时间集体讨论两个用例都与那些需要对每个可能的操作列表想出了:

  • 司机需要能够查看当天的路线
  • 驱动程序需要能够查看每个站的信息,究竟包括哪些订单需要被拾起
  • 驱动程序需要能够标记的顺序已被采摘或不挑
  • 驱动程序需要能够标记挑选任何额外订单
  • 调度员需要能够查看他们关心的任何司机、卡车、停车或命令的信息

我们想出了两个解决方案:一个是我们称为车道的移动应用程序,另一个是内部管理工具。该应用程序将处理驱动程序需要做的所有事情,而内部工具将处理dispatcher需要做的任何事情。它们都将以相同的数据为基础,以易于理解的方式向两个不同的用户组显示相同的信息。

在早期阶段,我们决定对真正的移动应用程序,而是旋转到我们现有的外网平台上的移动网站所使用的各种第三方。这使我们能够更迅速,因为我们正在建立我们现有Wayfair技术堆栈开始工作:一MSSQL数据库,PHP后台和反应,和/终极版前端。调度员管理工具建以同样的方式。

宗旨1:用户来到第一

一个伟大的用户体验是Wayfair极为重要,我们要设置这个基准,我们的司机也是如此。当白板我们的设计思想,我们花了大约可用性和直观时间去思考了很多。

对于车道,使用速度是我们最优先考虑的。司机们不能花大量的时间来记录他们的数据;这必须是他们能够在再次上路之前迅速完成的事情。因此,我们设计的工作流将最小化执行最常见操作所需的时间。像批量操作和平面页面结构这样的简单特性是我们在早期就决定实现的。

对于调度工具,信息最大化是最大的设计决策。调度员需要看到尽可能多的信息可以在一个视图中,而不是被强迫点击进入东西可看细节。我们称这是“一目了然”的格局,这意味着调度员可以了解发生了什么广泛的跨所有驱动程序一目了然发生。哪些数据最重要的这需要很多的讨论,以及最直观的方式显示出来。

当创建一个产品或服务从无到有地址有一定的问题,我会强烈建议使用类似白板系统;它拥有一切我们正在建立一个参考点非常有价值的。它使我们在同一页上,使我们对事物的工作,而不必担心重复工作或破坏别人的代码同时进行。这也给了我们一个有凝聚力的方向和计划,对待工作,这意味着我们没有停下来重新考虑的事情在整个周末。

宗旨2:数据驱动器的一切

TRNS烦恼很多关于数据完整性和可见性,我们的网络运行状况团队需要对网络中每个卡车的状态具有详细的可见性。正因为如此,我们有一个围绕“里程碑”概念的完整架构。里程碑就像它听起来的那样:一个带有时间戳的与特定卡车或停车相关的事件。我们在TRNS中有大约70个现有的里程碑,但其中很少是专门针对第一英里空间的。

数据可见性对这个项目至关重要,因此我们知道我们需要添加更多的里程碑,并围绕里程碑处理构建大量逻辑。例如,我们为一辆驶离站点的卡车设置一个里程碑。这本身就很容易,但是如果事情不按计划进行会发生什么呢?当一个停止被跳过或取消时会发生什么?在这些情况下,我们需要能够更新邻近和相关的里程碑。我们构建了很多逻辑,以便能够通过给定的路线将里程碑级联。所有这些都能让调度员在任何给定的时间查看关于他们的卡车的最准确的信息,并为他们提供做出决策和更好地解决问题场景所需的数据。

构建在里程碑处理之上的是当前事件影响未来事件的概念。当司机标记未取订单时,他们还必须记录原因,其中一个可能的原因是“卡车满了”。直观地说,这意味着没有更多的订单可以被上述卡车。为了实现自动化,我们构建了一种逻辑,可以在这种情况下自动取消卡车未来的停站。这将触发取消站点的订单从司机负责的负载中移除,允许调度员主动重新安排另一辆卡车前往错过的地点,或者重新优先安排第二天的皮卡以首先获得错过的订单。

宗旨3:数据应该很容易

数据是冷静和所有,但它是毫无价值的,除非它的消化。记住:随着我们预计的规模,这个系统将个月内达到超过200级的驱动程序,并会继续与我们的成交量迅速形成规模。调度员不必数据进行筛选,对许多卡车和50倍,很多订单的时间。该项目设定给调度员有更多的数据比他们目前已经获得,所以我们需要给他们一种能够方便地从决策角度来看待它。为此,我们想出了一个自定义的进度作出反应跟踪组件为我们的调度管理页面:

该组件允许调度员看到的信息,一目了然,并迅速查明他们对任何卡车的状态。每个图标代表一个卡车的路线上一个站。该图标的颜色和连接图标的线路都受我前面提到的里程碑驱动。更重要的是,我们可以适用于任何车辆在我们的网络,不只是皮卡一个通用的方法建立了这个。我们的国际供应链团队目前正在对利用海洋船舶此组件的项目。

弗莱尔:谷歌地图

我们的一个为这个项目的早期思想是与谷歌地图整合转由转动方向,给我们的司机供应商的位置。目前,我们只给他们的地址(许多司机都熟悉的领域,并多次每天访问相同的供应商;纸质系统也都在业内很常见的),所以我们认为这是一个简单的方法来提高他们的工作流程而他们已经在移动应用中。我们想直接将其纳入应用程序的工作流程,所以我们把它显示一个简单的“路线我在这里”按钮,这开辟了方向停止的信息在屏幕上。我们可以调用谷歌API在一个相当抽象的方式,让我们能够在目前正在做基于地图的工作的各种其他项目中重用这个组件。

弗莱尔:机器学188金宝慱亚洲体育是赌博的嘛习

在一个按比例增大的供应链,的ETA可以是非常强大。目前,我们利用我们在网络运营商发送到我们的ETA,但我们实际上并没有得到这些用于皮卡由于他们是多么的动态。这是有点在仓库工作人员的负担 - 他们没有收到任何警告,一辆卡车在未来,准备卸货。我们知道我们想要合并的ETA到这个项目中莫名其妙想通我们可以利用机器学习准确地预测它们。188金宝慱亚洲体育是赌博的嘛

我们将数据分成三个主要的时间筒仓:在各个站点之间行驶的时间,在站点(但没有加载)花费的时间,以及为每个订单加载花费的时间。我们查看了网络上的所有集合点,并计算了每个集合点的数字,然后提出了一个通用系统,用于查看一辆卡车,并预测两站之间的ETA时间(有趣的事实是:将一件物品装上卡车大约需要27秒)。

从技术上讲,这涉及到线性森林回归和随机森林回归的简单组合。考虑到时间的限制,这是一个相当简单的框架,但它确实给我们的项目带来了额外的活力,同时也提供了巨大的商业价值。它还可以很容易地抽象为自己的服务,这意味着我们代码基的其他领域也可以利用同样的预测。

我们利用在几个不同的地方这些信息。首先,我们更新与ETA在下一站,以及估计完成他们的路线的时候司机网站。其次,我们显示信号调度管理页面上的“在游泳池点ETA”。这让他们有机会更好地警示仓库工作人员输入的音量那一天,做出相应的反应。它还允许意外延迟的缓解。如果调度员会看到司机的ETA已经跳起来用了几个小时,他们有可能重新组织未来停下来另一辆卡车可能早于预期恢复。

全部放在一起

到了周末结束,我们已经建立了两个工具,我们是非常自豪的。首先,车道:一个功能齐全的移动网站时,司机可以用它来记录自己的操作。它完美地集成到我们现有的生态系统,是直观的使用。其次,为调度员门户来管理他们的司机,这是在生产中被用于整个网络当前的卡车通用的,完全足够。我们知道我们有一个强大的商业案例为建设这些事情,我们知道我们必须与我们的最终产品钉它。法官认为意有所指以同样的方式;一个星期后,我们被评为WayfairHacks夏天黑客马拉松的最佳总冠军!

得到教训

前期规划可以走很长的路要走。我们做了一吨的设计工作,为这个项目,我真的相信这是我们成功的关键。写一行代码之前拍摄了几个小时的谈话通过一切是巨大的用于获取同一页上的团队,使我们能够快速构建和迭代。知道你的建筑,知道它应该是什么样子,并了解它应该做的。它确实能帮助你化解任何问题早期并导致快速发展,清洁发展。你写任何代码之前,始终有一个计划。

持续的沟通是关键。在时间紧张的情况下,六个人一起工作在一个应用程序上可能是一个压力很大的练习。编写重复的代码、使其他人的代码无效或做错误的事情可能会给团队带来很大的代价。我们能够通过不断的对话来缓解这些问题。如果我们在前端和后端之间进行分割,负责这些任务的两个人一定要事先进行沟通,并就数据的形状以及他们对彼此的期望达成一致。我们用“要做”、“正在做”和“完成”栏在白板上记录我们正在做的每件事,让每个人都能在任何给定的时间看到项目的状态。我们还每隔几个小时举行一次站立会议,以更直接的方式了解彼此的最新进展。

下一步是什么?

获奖令人兴奋,但更让我们兴奋的是这个项目投入生产。我们正在积极开展这项工作,并计划于2019年初在我们伊利诺斯州卡罗尔溪的工厂开始试点。我认为这充分说明了Wayfair的工程文化,以及我们如何重视那些能够解决现实难题的想法。这不是什么我们想花一个周末做的浮华项目;这是一个我们都深深热爱并想要部署的项目。我们认为它可以真正地以一种强大的方式影响我们的业务,我们都很高兴有机会与它一起运作,并将其发挥到我们所能达到的程度。我们开始这个项目是为了减少打电话,很快它将成为我们网络中人们每天使用的东西。这是一个令人难以置信的激动人心的想法,看到你的想法被重视、投资并付诸实践,你会感到极大的满足。

要查看这个项目的完整演示,请查看我们的DevPost提交:https://devpost.com/software/first-mile-driver-app-n3z4y2