当我们在做技术调研的时候,到底需要做什么?怎么做?

一、序

日常工作中,或多或少都会有接触到一些技术调研的工作,有些是亲自参与,有些是分配给其他人来完成。

技术调研的过程中,会碰到一些问题,并且解决一些问题。有些技术调研可以做的非常完美,得出的结论让人无可挑剔,但是有些就显得不那么严谨,总能让挑剔的人找出一些问题。

抛开技术调研,我们只看调研的话,在生活中就比较常见了。例如:计划旅行的攻略、挑选一件商品,这些都是有借鉴意义的。只是这些生活中的例子,是对我们自己负责,没有做好可能会影响出游的心情或者损失购买机会。

可在工作中,技术调研的好坏,能根本上决定了公司在做这个方向上的产品方案,所以,当被分配到技术调研工作的时候,尽力做到最好。

二、技术调研发生在什么时候?

既然是调研工作,那在现有的环境下,肯定不会存在确定的方案。有不确定性存在,才需要专人来做调研。

那么,什么时候会需要技术调研?

  1. 新技术。

  2. “某人” 已经做到了,但是不确定实现细节。

  3. 想做 Xxx 功能,不确定能不能实现。

新技术没什么好说的,程序员的行业技术迭代快,今天出个小程序、明天出个快应用,就算只是拿 Android 来说,最近 Google 也要发布新系统 P、适配又多了刘海屏。

这些你只要耐心等,总有一些愿意分享或者乐意尝鲜的人,写出一片文章来分享出来。但是一般这样的文章,总有一些不足的地方,就是考验作者的水平,并且作者也只会站在自己的视角。而在公司为角度,需要确定的方案,而不是模棱两可的结论。

那些“某人”已经做到的功能,相信每家公司的产品,在市面上肯定不会是独一无二的,一定是存在竞品的。竞品也是在不停迭代的,有时候会有一些有亮点的实现。这个时候就会有产品经理跑来问你,这个 App 的 Xxx 功能,原理是什么?我们能不能做?我想再改进一下你看能不能做到?

最后一类,就是完全没有依据的,属于产品经理的创新功能。但是提出创新功能的人,并不了解提出的创新功能,是否能被现有的技术所实现,如果能实现的话,需要做什么?可能会有哪些限制?

这些,就是技术实现需要解决的问题。

三、开始技术调研

3.1 理解需求

理解需求说的非常的老套,但是它真的很重要。

在开始做技术调研的时候,一定要理解需求方的深层意义。明确这次技术调研的目的,它是用来实现什么需求?

你只有理解清楚需求方的真实意图,你才能更好的进行技术调研。

但是既然技术调研充满了不确定性,所以一个详细的功能需求,可能并太不适合技术调研,你可能更需要的是一个泛需求。

举个例子:

“小程序-王者荣耀群排行” 的功能,表现出来就是有人分享小程序到微信群里,你进去就可以看到群成员的排位排行信息,这是产品经理所看到的功能。

此时,产品经理提过来的调研需求是“分享到群里的小程序,能不能拿到群成员的信息?”。你看看官方文档就可以回答“做不到”。再问“为什么它可以?”,“大概是腾讯内部产品有私有接口?”。

可这并不是产品经理的核心目的,核心目的是想建立分享人和微信群成员的关系。

那你接到这样的技术调研,你首先看完文档发现无法“直接做到”。但是你发现可以在小程序中,拿到几个数据:谁分享的、分享到那个群、谁进入过这个小程序分享。也就是说,我们只需要通过服务器将这三份数据,建立一个基本的联系方式,我分享出去的这个群,你曾经进来过,我们之间应该是有某种联系的,这其实是产品经理的真实需求。

所以,在做技术调研之前,充分的理解需求,想清楚需求方到底是想干什么,更深层次的需求到底是什么。

3.2 合理安排时间

技术调研,一定是不确定的技术点,而技术调研的过程,也是一次对未知技术的学习过程。

合理的安排自己的时间,是非常有必要的,否则很容易的沉迷在未知中,无法自拔。要时刻谨记,这是一项工作,是需要有 Dealline 的,无论成或不成,都需要在最后时刻,交出一份调研的反馈。

3.3 调整心态

技术调研的始发正是因为技术实现的不确定性以及当前团队技术储备的短板上,所以才需要一次技术调研。

有时候,技术调研真的是没有结果的,当你找不到解决方案的时候,不要沮丧,这都是正常的,调整好你的心态,才能应对这些不确定。

我们并不需要把技术调研当成一次找解决方案的过程,有时候严谨的证明“无法实现”也是一个优秀的技术调研。

3.4 尽可能搜集资料

一定要尽可能的搜集资料,通读它们,可能解决方案就在某些细节中。

当你在公开的现有资料中,找不到答案的时候,你也可以选择阅读源码(如果有的话),一些开源项目,文档并不一定尽善尽美,但是因为已经被开源了,我们可以很方便的阅读它的源码。在源码中找答案,要知道源码是不会骗人的。

针对一些竞品调研的需求,如果找不到头绪,其实还有一条路可以走,那就是对竞品进行逆向分析。通过阅读逆向后的代码,找到实现的思路,也是一种不错的方法。

其实这些都是方法,都是术,核心就是在你的能力范围内,找到所有可以找到的方法,来完成这个调研工作。

3.5 向他人寻求帮助

当你的调研工作,因为一些技术细节无法推进下去的时候,你也可以考虑寻求其他人的帮助。

虽然正是因为你所在团队没有此方向的技术积累,才需要进行调研,但是并不代表团队成员无法对你提供帮助。每个人有自己的涉猎面,有自己的思考方式,多和其他人沟通,可能能带来一些灵感让我们将调研的工作推进下去。

当团队成员无法提供帮助的时候,也可以在网上寻求别人的帮助,加社群、发文章都是一个不错的办法。但是要记住提问和沟通的技巧,大多数时候,别人只能给你提供思路,而不是完整的解决方案。

一个带着套路的提问方式是:

我想做 Xxx 功能,xyz 已经实现了,但是我并不知道细节。我已经尝试了 1、2、3… 种方式,但是没有符合我的预期,你有什么更好的想法吗?

这样的套路提问法,表达清楚你想做什么,你已经做了什么努力,但是没有成功,那么对方在这个具体的上下文语境中,有没有什么好的想法或者思路,来解决这个问题。

重视别人的思路,有时候可以让你茅塞顿开。

四、反馈调研结果

技术调研之后,无论是找到了解决方案,或者被认定此方向行不通,都一定要公开的反馈出来,让大家知道结论。

一般来说,我比较看好的反馈形式有:

4.2 分享会

对于一些大型且完整的技术调研,我倾向于开一个技术分享会。当然,分享会需要有完善的 PPT 和配套的说明文档,这些都是需要提前整理和准备的,有时候在这个整理的过程中,你又会发现新的思路。

分享会不仅可以增强团队的技术氛围,不仅可以提高了自己的演讲和教与授水平,同时也将新的技术知识,在团队中和大家同步,相信不会有人拒绝一场干货满满的技术分享会。

有心做好分享会的话,我希望你不要仅仅把它当成一次调研反馈,而是当成一次真正的技术分享来做。这样大家也能从你的这次调研上学到东西,而不是跟着你的思路得到你的结论。

4.2 文档+邮件

当调研的题目非常的单一的时候,组织一场分享会,无疑是耽误时间的,这个时候可以选择更轻量级的形式:文档+邮件。

整理出一份调研文档,并以邮件的形式发送到大家手里,和大家同步此次调研的结果。

无论使用哪种方式进行反馈,最好都要落到文字上。

五、反馈的内容

你最终选择使用分享会,或者是文档邮件的形式,在你反馈内容中,都一定要讲清楚技术调研相关的所有细节,以保证读到此文档的人不会对你想表述的内容有疑惑。

具体的反馈内容,我觉得一般需要包括:

  1. 技术调研的核心需求。用来干什么。

  2. 你都从什么渠道收集到了那些有效的资料。

  3. 做了那些尝试,如果成功,最终选择的方案是什么,并说明原因。如果失败,也要说明做了那些失败的尝试。

  4. 如果找到解决方案,需要说明使用此方案的前提条件、使用场景、会不会有潜在的问题。

  5. 调研的时候,碰到的问题,思路如何。

调研反馈之所以要写的这么详细,一方面是为了让大家知道此次调研的结果,你的思路是什么样的,你做过什么尝试。另一方面,也是看看别人在你现有的调研基础之上,有没有更好的解决方案。

不要在意别人对你调研结果的质疑,觉得他是在质疑你的能力,要有独立完整的自尊体系,不受他人所影响。有人提出问题,这说明有人在认真的思考你的问题,和别人辩解的过程,也是让你和大家更清晰的理解此次调研的过程,道理是越辩越明的,技术也是一样。

六、写在最后

当你的 Leader 将这件调研任务分配给你的时候,大多数情况下是对这件事情有大概了解的,正常来说是符合你当前的技术水平,或者稍微垫垫脚能够得着的,所以遇见问题,不要轻言放弃,尽力的解决吧。
当我们在做技术调研的时候,到底需要做什么?怎么做?

<think> 首先,用户的问题是关于“前端平台所需地图文件的格式”。这涉及到前端地图开发,特别是使用像OpenLayers这样的库。 回顾系统级指令: - 所有行内数学表达式用$...$。 - 独立公式用$$...$$并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识。 - 回答结构清晰,帮助用户逐步解决问题。 - 保证回答真实可靠。 用户引用了几个来源: - [^1]: 关于OpenLayers框架实践。 - [^2]: 关于设计地图。 - [^3]: 关于缓存技术。 - [^4]: 关于OpenLayers初始化代码和ECharts。 用户的问题是:“我想了解前端平台所需地图文件的格式”。所以,我需要专注于地图文件格式。 从引用中提取相关信息: - [^1] 提到“地图数据源的加载和渲染”,暗示了地图文件格式。 - [^4] 展示了OpenLayers初始化代码,使用了`TileLayer`和`OSM`(OpenStreetMap),这涉及瓦片地图格式。 - [^2] 讨论地图开发调研,但没具体说明格式。 - [^3] 是关于缓存的,不直接相关。 常见的前端地图文件格式: 1. **瓦片地图格式 (Tile-based formats)**: - 如PNG、JPEG等图像格式,用于显示地图瓦片。 - OpenStreetMap (OSM) 使用瓦片地图。 - 在[^4]中,使用了`new OSM()`,这加载OSM瓦片。 2. **矢量地图格式 (Vector formats)**: - GeoJSON:一种基于JSON的格式,用于地理数据。 - TopoJSON:GeoJSON的扩展,更高效。 - KML/KMZ:Keyhole Markup Language,由Google Earth使用。 - Shapefile:但通常在服务器端处理,前端通过API访问。 3. **其他格式**: - WMS (Web Map Service):服务端渲染地图,返回图像。 - WMTS (Web Map Tile Service):瓦片地图服务。 - 在[^1]中,提到“常见地图数据源的加载”,可能包括这些服务。 OpenLayers支持多种格式: - 如GeoJSON、KML、GML、WMS等。 - 在[^4]的代码中,使用了OSM,这是瓦片格式。 回答结构: 1. **引言**:直接回答用户问题,解释前端地图文件格式。 2. **主要格式**:列出并描述常见格式。 3. **如何加载**:简要说明如何在前端使用这些格式(例如,通过OpenLayers)。 4. **引用**:自然地引用相关段落。 5. **生成相关问题**:在结尾添加相关问题。 生成相关问题: - 例如: 1. 如何在前端加载GeoJSON地图文件? 2. 什么是瓦片地图服务? 3. 如何优化地图文件的加载性能? 确保使用中文回答。 完整回答: - 先解释格式。 - 引用[^1]和[^4],因为它们是相关的。 - 结尾添加相关问题。 </think>### 前端平台所需地图文件格式详解 在开发前端平台(如使用 OpenLayers 或其他地图框架)时,地图文件的格式直接影响到地图数据的加载、渲染和交互性能。以下是常见的前端地图文件格式及其特点,我会逐步解释这些格式的适用场景、优缺点以及如何在实际项目中使用。基于您的引用内容,我将重点结合 OpenLayers 框架进行说明(参考引用[^1]和[^4])。 1. **瓦片地图格式(Tile-based Formats)** 这是最常用的格式,适合显示静态或动态地图瓦片(tiles)。地图被分割成小图像块,适合缩放和漫游。 - **常见格式**: - **PNG/JPEG**:用于栅格瓦片地图,如 OpenStreetMap (OSM)。这些文件体积小,加载速度快。例如,在 OpenLayers 中,您可以用 `new OSM()` 加载 OSM 瓦片数据(参考引用[^4])。 - **WebP**:现代格式,压缩率高,支持透明通道,适用于性能敏感场景。 - **优点**:兼容性好,支持快速渲染;缺点是矢量信息缺失,交互性有限。 - **使用场景**:基础地图展示(如公司大屏中的区域分布地图),可通过 CDN 缓存优化加载(参考引用[^3])。 - **加载示例**(OpenLayers): ```javascript // 加载 OSM 瓦片地图 new TileLayer({ source: new OSM() }) ``` 2. **矢量地图格式(Vector Formats)** 这些格式存储地理特征(如点、线、面),适合交互式应用(如自定义标记或数据可视化)。 - **常见格式**: - **GeoJSON**:基于 JSON 的轻量级格式,易于前端解析。支持地理坐标数据,如 `{ "type": "Feature", "geometry": { "type": "Point", "coordinates": [0, 0] } }`。 - **TopoJSON**:GeoJSON 的优化版,减少冗余数据,体积更小(通常节省 30-50%)。 - **KML/KMZ**:Keyhole Markup Language,常用于 Google Earth 或导入外部数据,支持复杂样式。 - **Shapefile (SHP)**:行业标准格式,但通常需在服务器端转换为 GeoJSON 前端使用。 - **优点**:高交互性,支持动态样式和事件;缺点是文件体积较大,需优化加载(参考引用[^1]中的“性能优化和最佳实践”)。 - **使用场景**:自定义地图功能(如用户区域分布热力图),可与 ECharts 等可视化库结合(参考引用[^4])。 - **加载示例**(OpenLayers): ```javascript // 加载 GeoJSON 数据 const vectorLayer = new VectorLayer({ source: new VectorSource({ url: 'data.geojson', format: new GeoJSON() }) }); ``` 3. **服务端地图格式(Service-based Formats)** 这些格式通过 Web 服务动态加载地图数据,适合大规模或实时应用。 - **常见格式**: - **WMS (Web Map Service)**:返回栅格图像,适合静态地图。例如,OpenLayers 通过 `TileWMS` 加载。 - **WMTS (Web Map Tile Service)**:标准化瓦片服务,比 WMS 更高效。 - **Vector Tiles (PBF/MVT)**:如 Mapbox Vector Tiles,使用 Protocol Buffers 压缩,支持客户端渲染矢量数据。 - **优点**:动态更新,减少前端负载;缺点是需要后端服务支持。 - **使用场景**:集成外部地图服务(如公司客户数据展示),确保全球访问性能(参考引用[^3]中的 CDN 优化)。 - **加载示例**(OpenLayers): ```javascript // 加载 WMTS 服务 new TileLayer({ source: new WMTS({ url: 'https://example.com/wmts' }) }); ``` **选择建议**: - **入门级项目**:优先使用瓦片格式(如 OSM PNG),易于实现(参考引用[^1]的“核心架构和工作原理”)。 - **交互式应用**:选择矢量格式(如 GeoJSON),支持自定义功能(参考引用[^2]的“自定义地图需求”)。 - **性能优化**:结合 CDN 缓存静态瓦片或使用 Vector Tiles 减少带宽(参考引用[^3])。 通过 OpenLayers 等库,这些格式可以轻松加载和渲染,帮助您构建让用户过目不忘的地图效果[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值