灵动布局:创新驱动个性化学习

LeetCode • 2023 • PM & 产品设计

问题陈述
从高效工具到臃肿负担

LeetCode 的 QD(Question Details)页一直是平台的核心支柱,依托实时判题功能,为数百万用户提供编程练习。然而,随着时间推移,功能模块逐渐堆叠,原本简洁高效的界面变得越来越臃肿。许多用户在实际操作中感到“卡手”,面对繁杂的界面不仅效率低下,体验也显得极其割裂。

功能堆叠
在冗杂的界面中,用户常常要费力寻找关键功能,有时甚至不得不打开多个浏览器标签来回切换,学习效率和专注力被严重分散。
布局受限
面对多样化的学习场景,静态布局框架显得越发局促,难以承载更多创新,这也让用户在多任务处理和个性化需求上深感局限。
维护成本高
QD 页内部模块之间的高度耦合问题愈发明显,任何小改动都可能牵连整体设计,导致开发、测试和上线周期被大幅拉长。
项目影响力
以灵动布局重新定义学习

我们推出全新灵动布局(Dynamic Layout),赋予用户对学习环境的完全掌控权。通过自由拆分、合并布局窗格及调整大小,用户可根据需求灵活组织界面,真正聚焦在提升编程技能上。

在 2024 年初,灵动布局正式面向全球用户上线,成功让僵化的 QD 页焕发新生,提供了更灵活、专注的学习体验。

2.3%

提交率提升

操作简化且界面直观,让用户更有信心频繁尝试,主动提交代码以检验学习效果。

1.5%

通过率提升

资源使用更充分,注意力更集中的环境下,用户代码准确度显著提高。

还有... 

扩展和协作场景

不仅拓展应用于竞赛强化体验,也为多用户实时协同编程创造可能。

自定义布局

打破固定布局,现在你可以自由拆分、合并窗格,随心所欲地打造独一无二、最契合自己需求的学习空间。

自定义尺寸

屏幕空间不足?只需拖动窗格边框即可调整大小,合理分配每个模块的空间,专注于真正重要的内容。

沉浸式全屏

想完全专注?双击任何窗口即可一键全屏,屏蔽干扰,将自己沉浸在学习与思考的世界中。
灵活调整窗格布局,轻松实现多线任务并行
提交结果更清晰,数据更直观
引导式配置,帮助快速上手
主动引导,配置完全掌控
设计背后的故事
突破研究偏差

在初期调研中,我们惯性地聚焦于资深用户,但收集的反馈过于单一,无法全面呈现需求。我决定打破传统调研模式,主动深入在线社区和社群,倾听更多用户声音。结果大大出乎意料:用户的解题方式多种多样,有人快速动手,有人依赖题解,有人严谨推演或用计时器控制节奏。资深用户追求效率,而初学者则倾向于试错摸索——两者的需求冲突异常明显。

从千人千面到一人多面

更有意思的是,即便是同一个用户,不同场景下的需求也截然不同。准备面试时,他可能频繁切换编辑器与题解;而日常刷题中,他更倾向于简化操作,专注于核心问题。个人因素与场景因素的交织,使学习路径充满动态变化,用户需求更趋多样化。

这些发现让我意识到,传统固定布局难以适应用户动态变化的需求与多样化场景。学习路径的复杂性呼唤一种动态学习环境,能够灵活调整以适配用户在不同场景下的目标和习惯,为用户提供更高的适应性和更多自主选择空间。

设计驱动项目起航

想法虽好,但要在核心业务上进行大幅改动绝非易事。QD 页是平台的流量支柱,牵涉全球和中国团队的协同推进,贸然重构风险极高,稍有不慎可能影响业务稳定性。

在 PM 缺位的情况下,我从设计侧主动承担起推动角色。通过提案形式,我向管理层和全球团队提出灵动布局的构想。结合数据分析、用户故事和原型展示,我清晰论证了改版的必要性和灵动布局的潜在价值。大家对方案的潜在亮点表现出极大期待,但也对实施成本、开发周期和用户接受度提出了不少质疑。

经过多轮讨论,我们最终达成了共识,采用「大胆但务实」的推进方案,明确了项目目标和策略,并与开发团队协作,制定分阶段实施计划。这种分阶段、低风险的策略,不仅加快了项目启动,也为后续推进扫清了障碍。

奠定模块化基础
构建一个灵活可扩展的技术框架,通过解耦组件降低维护成本,并为未来功能扩展留足空间。
打造灵动交互
提供简单直观的交互设计,支持用户根据个人需求和多场景工作流自由调整布局,提升操作自由度。
释放效能潜力
优化界面信息展示与工具功能,改进文字可读性、数据呈现和工作效率,全面提升工具专业度。
奠定模块化基础

通过快速走查,我发现 QD 页面中超过 10 个功能模块高度耦合,任何改动都可能引发连锁反应,增加维护和开发难度。为此,我们决定将页面框架抽象为标准化组件:由窗格、Tab 导航和内容模块组成的结构,用于承载界面布局与交互。这一调整将基础框架与业务模块解耦,使界面更加清晰易用。

在解耦过程中,我与开发团队密切合作,采用设计与开发双线并行的模式,逐一拆解模块,明确通用组件与业务逻辑的边界,将其从耦合中剥离并整合进标准化结构。这种「松散耦合」策略为动态布局奠定了基础,同时降低了后续维护和扩展的复杂性,为系统的未来演进提供了更多可能性。

打造灵动交互

在模块化的基础上,我们着手突破静态布局的限制,全面释放平铺式布局的灵活性潜力,为用户带来「即拿即放」的自由操作体验,让他们对界面布局拥有更直观和便捷的掌控感。

让拖拽更符合直觉

最初的拖拽落点设计存在尴尬的夹角,导致用户在操作时容易出现偏移和不稳定的情况。通过观察现实生活中的行为,我发现人们通常会「从边缘抓起,向中心移动」,这一直观习惯为交互设计提供了启发。

基于此,我采用了「边缘分割、中央合并」的方案,使拖拽操作更贴近日常使用的自然逻辑。最终,我将布局划分为六个清晰的响应区域,不仅显著提升了操作的流畅性,还有效降低了误操作的概率,增强了整体交互体验。

可预测的交互触发

即时反馈是拖拽操作直观且易掌控的核心。我与开发团队密切合作,结合前端框架特性,确保用户在操作中的每一步都清晰明确,始终「心中有数」。

脱离框架

触发拖拽时,模块缩为小缩略标签,直观模拟物体的移动过程,帮助用户确认所操作的模块。

高亮响应区域

光标移动时,潜在落点区域即时高亮,清晰标示可放置的位置,让用户瞬间明白能放在哪。

释放目标

松手后,界面快速且平滑完成模块的合并或分割,摒弃复杂动画,强化了快速响应的体验。
测试迭代与找寻平衡

内部 Demo 中,「随心所欲」的自由布局让团队兴奋,但也引发了「过度灵活」可能增加用户认知负担的担忧。随即,我展开测试,通过 Kanban 工具透明化管理反馈,与开发团队紧密合作,通过同步会对齐优先级并快速推进解决。设计逐步完善后,我们启动公开 Beta 测试,在任务完成后弹出问卷组件收集真实反馈。这些数据帮助我们归纳典型问题,并持续迭代优化设计,在灵活性与秩序之间找到平衡。

迭代 1:渐进披露

在「查看一篇新题解」任务的测试中,我们尝试了多个灵活性层级。资深用户对自由拆分布局大为欢迎,而部分新手却因窗格过多而感到困惑。

这表明「一刀切」的设计无法满足多样化需求。为此,我引入了「渐进披露」策略:默认采用简化布局,同时为高阶用户提供更灵活的配置入口。

一键切换布局

默认提供简化视图。当系统检测到用户短时间内访问多个子内容时,会主动建议切换至「多窗格模式」。

高阶配置

设置中可开启高阶功能,允许用户自定义子内容的打开方式和显示位置,满足资深用户的多任务需求。
迭代 2:辅助聚焦

多窗格模式提升了灵活性,但也增加了用户忽略关键信息更新的风险。为确保用户能够高效捕捉关键信息并避免遗漏,我们基于视觉注意力原理设计了一套提示机制。当检测到信息更新时,折叠或隐藏的窗口会自动展开提示,确保用户第一时间获知内容。在加载过程中,系统通过动画实时反馈进程,而信息呈现完成后,相关窗格的边框会以微动效或高亮显示,引导用户快速定位关键内容。

迭代 3:引导式配置

新版本的推出不可避免地改变老用户的操作习惯,尤其是「运行/提交」按钮从控制台迁至顶部导航的改动,改变了他们多年形成的肌肉记忆。

为降低影响,我们采用了柔性过渡策略:我们默认启用新界面,同时保留旧版入口供选择,并通过分步引导帮助用户在几分钟内掌握拖拽和布局操作技巧,让他们快速适应新版本,平稳完成过渡。

释放效能潜力

灵动布局为用户提供了灵活的操作容器,但真正释放效能潜力的核心在于内容和工具的深度优化。我专注于信息呈现优化、更直观的数据可视化设计,以及专业级工具的引入,全面提升用户的学习效率与操作体验,为不同需求场景提供更高效、专业的支持。

信息呈现:清晰胜过一切

问题描述是用户进入页面后首先关注的内容,因此必须清晰易读。过去,题目描述常被多余信息淹没,干扰用户注意力。我重新设计了信息呈现方式,使用户能专注聚焦于核心任务。

干扰降权

把辅助操作移至底部,尽量不干扰主任务

信息降噪

按需展示帮助信息,让用户把注意力集中在题目本身

优化节奏

通过合理的段落间距、样式,提升视觉平衡感

另一个问题是错误提示种类繁多、样式不统一,使本就复杂的信息显得更加凌乱晦涩,用户难以快速理解。针对多达 7 种错误类型,我抽象并提炼出标准化组件,统一样式与交互逻辑,并对过长信息进行折叠优化,让用户能够一目了然地识别错误类型,快速找到改进方向。

数据图表:让洞察更可行动

在 AC(Accepted)提交结果中,图表是用户评估能力进步的重要工具。我重新设计了图表,补全坐标信息,突出关键指标,并简化多步交互,让用户快速获取核心数据。

同时,我引入「迷你地图」功能,帮助用户聚焦特定数据范围,提升分析效率,让数据洞察更直观。依托灵动布局框架,用户可原地在窗格中查看「共享代码示例」,避免频繁切换窗口。新增的「AI 算法复杂度分析」功能通过直观反馈复杂度,为用户提供专业性能优化指导,增强学习效率和代码质量。

工具加成:赋能高阶用户

为了满足资深用户对高阶功能的期待,同时保持工具轻量化,我们对辅助工具进行了精细化优化,既对标专业 IDE 的强大功能,又避免过度辅助影响用户独立解决问题的能力。

原生编辑器

支持在 tab 式编辑器和原生代码编辑器之间自由切换,兼顾用户对操作辅助和自由度的需求。

代码格式优化

一键优化代码缩进、空格与换行,提升代码可读性,同时帮助用户养成良好的编程习惯。
项目回顾
设计驱动变革
在 PM 缺位的情况下,我主动承担更多协调职责,成功说服管理层和团队认可「灵动布局」的价值。这次实践证明,设计不仅仅关乎界面体验,更能成为驱动产品策略和团队协作的关键力量。
携手跨越复杂
项目涉及全球与中国团队的共同利益和技术实现,需要高频沟通与信任。尽管远程协作不易,但通过透明的进度管理和及时同步,我们克服了障碍,成功完成了这一复杂的跨团队系统性改造。
持续拥抱变化
界面的大幅调整不可避免地带来用户的不适感。我们倾听用户反馈,采用柔性策略,帮助用户平稳过渡。设计需要在大胆创新的同时,持续迭代与优化,才能创造更有价值且可持续的用户体验。