LeetCode • 2023 • PM & 产品设计
LeetCode 的 QD(Question Details)页一直是平台的核心支柱,依托实时判题功能,为数百万用户提供编程练习。然而,随着时间推移,功能模块逐渐堆叠,原本简洁高效的界面变得越来越臃肿。许多用户在实际操作中感到“卡手”,面对繁杂的界面不仅效率低下,体验也显得极其割裂。
我们推出全新灵动布局(Dynamic Layout),赋予用户对学习环境的完全掌控权。通过自由拆分、合并布局窗格及调整大小,用户可根据需求灵活组织界面,真正聚焦在提升编程技能上。
在 2024 年初,灵动布局正式面向全球用户上线,成功让僵化的 QD 页焕发新生,提供了更灵活、专注的学习体验。
2.3%
提交率提升
1.5%
通过率提升
还有...
扩展和协作场景
自定义布局
自定义尺寸
沉浸式全屏
在初期调研中,我们惯性地聚焦于资深用户,但收集的反馈过于单一,无法全面呈现需求。我决定打破传统调研模式,主动深入在线社区和社群,倾听更多用户声音。结果大大出乎意料:用户的解题方式多种多样,有人快速动手,有人依赖题解,有人严谨推演或用计时器控制节奏。资深用户追求效率,而初学者则倾向于试错摸索——两者的需求冲突异常明显。
更有意思的是,即便是同一个用户,不同场景下的需求也截然不同。准备面试时,他可能频繁切换编辑器与题解;而日常刷题中,他更倾向于简化操作,专注于核心问题。个人因素与场景因素的交织,使学习路径充满动态变化,用户需求更趋多样化。
这些发现让我意识到,传统固定布局难以适应用户动态变化的需求与多样化场景。学习路径的复杂性呼唤一种动态学习环境,能够灵活调整以适配用户在不同场景下的目标和习惯,为用户提供更高的适应性和更多自主选择空间。
想法虽好,但要在核心业务上进行大幅改动绝非易事。QD 页是平台的流量支柱,牵涉全球和中国团队的协同推进,贸然重构风险极高,稍有不慎可能影响业务稳定性。
在 PM 缺位的情况下,我从设计侧主动承担起推动角色。通过提案形式,我向管理层和全球团队提出灵动布局的构想。结合数据分析、用户故事和原型展示,我清晰论证了改版的必要性和灵动布局的潜在价值。大家对方案的潜在亮点表现出极大期待,但也对实施成本、开发周期和用户接受度提出了不少质疑。
经过多轮讨论,我们最终达成了共识,采用「大胆但务实」的推进方案,明确了项目目标和策略,并与开发团队协作,制定分阶段实施计划。这种分阶段、低风险的策略,不仅加快了项目启动,也为后续推进扫清了障碍。
通过快速走查,我发现 QD 页面中超过 10 个功能模块高度耦合,任何改动都可能引发连锁反应,增加维护和开发难度。为此,我们决定将页面框架抽象为标准化组件:由窗格、Tab 导航和内容模块组成的结构,用于承载界面布局与交互。这一调整将基础框架与业务模块解耦,使界面更加清晰易用。
在解耦过程中,我与开发团队密切合作,采用设计与开发双线并行的模式,逐一拆解模块,明确通用组件与业务逻辑的边界,将其从耦合中剥离并整合进标准化结构。这种「松散耦合」策略为动态布局奠定了基础,同时降低了后续维护和扩展的复杂性,为系统的未来演进提供了更多可能性。
在模块化的基础上,我们着手突破静态布局的限制,全面释放平铺式布局的灵活性潜力,为用户带来「即拿即放」的自由操作体验,让他们对界面布局拥有更直观和便捷的掌控感。
最初的拖拽落点设计存在尴尬的夹角,导致用户在操作时容易出现偏移和不稳定的情况。通过观察现实生活中的行为,我发现人们通常会「从边缘抓起,向中心移动」,这一直观习惯为交互设计提供了启发。
基于此,我采用了「边缘分割、中央合并」的方案,使拖拽操作更贴近日常使用的自然逻辑。最终,我将布局划分为六个清晰的响应区域,不仅显著提升了操作的流畅性,还有效降低了误操作的概率,增强了整体交互体验。
即时反馈是拖拽操作直观且易掌控的核心。我与开发团队密切合作,结合前端框架特性,确保用户在操作中的每一步都清晰明确,始终「心中有数」。
脱离框架
高亮响应区域
释放目标
内部 Demo 中,「随心所欲」的自由布局让团队兴奋,但也引发了「过度灵活」可能增加用户认知负担的担忧。随即,我展开测试,通过 Kanban 工具透明化管理反馈,与开发团队紧密合作,通过同步会对齐优先级并快速推进解决。设计逐步完善后,我们启动公开 Beta 测试,在任务完成后弹出问卷组件收集真实反馈。这些数据帮助我们归纳典型问题,并持续迭代优化设计,在灵活性与秩序之间找到平衡。
在「查看一篇新题解」任务的测试中,我们尝试了多个灵活性层级。资深用户对自由拆分布局大为欢迎,而部分新手却因窗格过多而感到困惑。
这表明「一刀切」的设计无法满足多样化需求。为此,我引入了「渐进披露」策略:默认采用简化布局,同时为高阶用户提供更灵活的配置入口。
一键切换布局
高阶配置
多窗格模式提升了灵活性,但也增加了用户忽略关键信息更新的风险。为确保用户能够高效捕捉关键信息并避免遗漏,我们基于视觉注意力原理设计了一套提示机制。当检测到信息更新时,折叠或隐藏的窗口会自动展开提示,确保用户第一时间获知内容。在加载过程中,系统通过动画实时反馈进程,而信息呈现完成后,相关窗格的边框会以微动效或高亮显示,引导用户快速定位关键内容。
新版本的推出不可避免地改变老用户的操作习惯,尤其是「运行/提交」按钮从控制台迁至顶部导航的改动,改变了他们多年形成的肌肉记忆。
为降低影响,我们采用了柔性过渡策略:我们默认启用新界面,同时保留旧版入口供选择,并通过分步引导帮助用户在几分钟内掌握拖拽和布局操作技巧,让他们快速适应新版本,平稳完成过渡。
灵动布局为用户提供了灵活的操作容器,但真正释放效能潜力的核心在于内容和工具的深度优化。我专注于信息呈现优化、更直观的数据可视化设计,以及专业级工具的引入,全面提升用户的学习效率与操作体验,为不同需求场景提供更高效、专业的支持。
问题描述是用户进入页面后首先关注的内容,因此必须清晰易读。过去,题目描述常被多余信息淹没,干扰用户注意力。我重新设计了信息呈现方式,使用户能专注聚焦于核心任务。
干扰降权
信息降噪
优化节奏
另一个问题是错误提示种类繁多、样式不统一,使本就复杂的信息显得更加凌乱晦涩,用户难以快速理解。针对多达 7 种错误类型,我抽象并提炼出标准化组件,统一样式与交互逻辑,并对过长信息进行折叠优化,让用户能够一目了然地识别错误类型,快速找到改进方向。
在 AC(Accepted)提交结果中,图表是用户评估能力进步的重要工具。我重新设计了图表,补全坐标信息,突出关键指标,并简化多步交互,让用户快速获取核心数据。
同时,我引入「迷你地图」功能,帮助用户聚焦特定数据范围,提升分析效率,让数据洞察更直观。依托灵动布局框架,用户可原地在窗格中查看「共享代码示例」,避免频繁切换窗口。新增的「AI 算法复杂度分析」功能通过直观反馈复杂度,为用户提供专业性能优化指导,增强学习效率和代码质量。
为了满足资深用户对高阶功能的期待,同时保持工具轻量化,我们对辅助工具进行了精细化优化,既对标专业 IDE 的强大功能,又避免过度辅助影响用户独立解决问题的能力。
原生编辑器
代码格式优化