资深开发者有义务提出解决技术难题的创意。以地理定位应用what3words为例,现简述其工作原理。
译自 How a Developer Might Improve the Geolocation App what3words,作者 David Eastman 一直是伦敦的专业软件开发人员,在甲骨文公司和英国电信任职,也是一个帮助团队以更敏捷的方式工作的顾问。他写了一本关于用户界面设计的书,从那时起一直在撰写技术文章......
上个月,我在后疫情复苏的科技聚会 BarCamp London 上遇到了 Terence Eden。Eden 先生是英国科技界的著名人士,他正在帮助运营这个流行的非正式会议。他最后谈到的话题是英国的地理定位公司“what3words”。对于不熟悉它的人来说,what3words 是开创了一种巧妙的方式来表示地图上的确切位置:“我们将世界划分为 3 米见方的格子,每个格子都赋予了一个由三个词组成的唯一组合。” 它目前在包括美国在内的 193 个国家运营。
Eden 在 2019 年对 what3words 的最初批评是广泛的——包括缺乏公开性、成本以及从开发者的角度来说“没有办法在语言之间转换”。我真的以为这个老话题已经从他的脑海中溜走了;也许现在一家更大的公司已经收购了 what3words,而他正打算开办一个小型咨询公司来利用这个旧解决方案并创建一个开源版本。令我惊讶的是,他毫不犹豫地回应说“他们在烧钱”。
所以,让我们稍微退后一步。
现在,what3words 是个非常有用的系统,这个想法也非常简单。它没有使用冗长的浮点地理定位数据,而是将世界分割成 3 米见方的网格,并为每个网格分配了一个唯一的三字地址。
我正在从位置“///little.march.dare”给你写信。所以,如果发生更糟糕的情况,我被些瓦砾困住无法移动而接到电话,我可以把这三个词告诉任何人,他们可以打电话给急救人员来救我。我的编辑告诉我他用它来向快递员澄清他的地址。
但是,Eden先生和其他人指出的该系统的问题总结如下:
- 建筑物不是平的,但what3words没有高度信息。
- 传达三个英语单词本身很可能导致抄写错误,否则你过去玩的窃窃私语游戏就不会那么不可预测。同音词在英语中是一个特别的问题。
- 我的手机难道不已经知道它的地理位置了吗?这不是传递我的位置的最有效方式吗?
- 如果每个部分都是完全不同的代码,那么两个区域可以相邻,但我不会知道这一点。
- 如果这被急救部门使用,那么这个系统应该由每个国家的政府拥有,这样他们可以制定一个最适合他们的词汇表?目前,地理编码算法对审查是封闭的。
我相当肯定,除非它转型,what3words真的只能在快递公司找到狭窄的用途(他们已经签署了一些协议)。但这篇文章讲的是高级开发人员如何通过解决问题和评估新技术解决方案来帮助他们的组织或创业公司。
因此,暂时假设上述问题落在你的盘中。你和你的团队应该如何回应?
虽然高级开发人员必须始终支持当前的解决方案,但他们也必须提出改进的选项,以给公司一个成长的机会。作为这一点的自然推论,他们也应该告诉利益相关者他们认为某些解决方案将走向何方。
一旦你戴上了企业的帽子,你就需要接受封闭源解决方案可能是对公司最好的——但也要对替代方案给予适当的考虑。开源不是纯粹以财务为目的的路线,但它可以改变一家公司的地位。它允许对一个想法进行大规模的创新和采用,否则这个想法可能会萎缩。与此同时,原始公司可以提供咨询和生态系统发挥作用。在不迷失于许可模型和价值主张的情况下,开发团队可以概述实现这一方向所需的技术技能。
对于what3words,应该有一种过滤同音词的方法——或者至少使用AI来发现这些同音词。允许what3words与本地语言变体一起工作(同时仍指向同一位置)可以确保使用的单词都是独特的。人们根据来自不同地方的方式说单词的方式有很大不同,有些听起来更加独特。考虑到人们响应请求时(无论是紧急情况还是送货员)也很可能是当地人,这一点是有意义的。这表明要对解决方案开放给本地专家。
添加高度是将一个简单的解决方案扩展到更复杂的现实世界的一部分。结合另一种解决方案来解决高度问题可能是最好的,无论是与建筑区域解决方案还是Ordnance Survey地图。同样,这可能意味着开放后端,以便API可以查询地理位置并将其与其他信息组合。
暂时回到真正的what3words;他们当然有一个API可以在单词和数字纬度、经度GPS坐标之间转换:
https://api.what3words.com/v3/convert-to-coordinates?words=filled.count.soap&key=[API-KEY]
和
https://api.what3words.com/v3/convert-to-3wa?coordinates=51.521251%2C-0.203586&key=[API-KEY]
请注意,任何通过蛮力逆向工程后端的企图都很麻烦,而且可以轻松检测到。
我认为相邻区域有完全不同的单词使其成为一个低级的解决方案,但它仍然是一个很好的互补解决方案。这也会导致开放地理定位策略,以便其他工具可以轻松使用它。例如,如果急救部门收到两个what3word位置,可以立即判断它们在地理上靠近,这将减少这种担忧。这在技术上将如何呈现?
这里的重点不在于将所有问题视为软件工程师可以解决的,而是向所有利益相关者呈现选项以及它们的技术隐含意义,以便他们可以全面评估它们。其中一些将与其他业务计划相呼应,而其他一些则可以因其他经验而轻易拒绝。在上述随意的分析中,似乎可以通过改变后端的封闭性来解决许多问题——但这需要业务的全面支持。总的来说,正如阿诺德·施瓦辛格在他的新书标题中所说,技术团队需要“有用”。