不懂技术如何判断一个页面的开发复杂度

简介: 做为一名苦逼前端码农,写给一起奋战的产品经理们。

做为一名苦逼前端码农,写给一起奋战的产品经理们。

最近的聊天中产品经理说:“我不懂技术,所以当初也判断不好这个页面在技术实现上有多复杂”。于是想起来有好几次:

  • 有好几次,在产品经理眼里很简单的需求,可最后出来的技术方案非常复杂,开发工作量特别大,导致整个项目不得不重新评估。
  • 有好几次,朋友问我能不能给他做个小游戏,很简单的网页小游戏哦,像QQ农场那样的。

有时候在想有没有一种简单的方法,让不懂技术的人能判断一个页面的前端复杂度,于是有了这篇文章。希望能让前端码农和产品经理能更好的互相理解,合作如丝般顺滑。

下文总结三个基本原则,用这三个原则可以大致判断一个页面前端复杂度。

注意:

  1. 本文只适用于辅助产品经理理解页面复杂度,不能代替前端工程师评估工作量,每个网站的业务模型、架构设计都不一样,开发起来也大不相同。
  2. 本文只适用于理解前端开发复杂度,不包含服务端开发。

原则一 - 交互越多越复杂

先看如下两个页面:
1.png

左边的页面内容丰富、样式多样。内容包含页头、导航栏、tab标签、文章列表,每篇文章又包含回答计数、作者、最新回答时间、标题、标签,布局上有各种排列方式,还有各种色彩。

右边的页面看起来只有简单的3个输入框、2个勾选框、2个按钮,页面内容整体看起来并不丰富。

左边的页面看起来比右边的页面复杂,但实际上开发起来右边的页面复杂得多。左边的页面可以称之为“纯展示型页面”,这类页面的显著共同点是只有数据的展示而不能与用户发生交互。右边的页面称之为“富交互型页面”,常常包含以下交互元素:

  • 输入框、按钮
  • 单选、多选、下拉选择
  • 展开、收起
  • Tab切换
  • 分页、滚动加载
  • 弹窗

对纯展示型页面来说,工程师只需要处理好页面的样式就好,不用考虑太多其他问题。另外,这个页面的文章列表部分,虽然内容很多,但实际上是相同结构的不断重复,在工程师眼里如下图所示:
2.png

工程师只需要把这个结构的模板写好,再填入不同的数据。常见的纯展示型页面可以有图片、表格、文字,以及这些元素的各种混合排列。

对富交互型页面来说,工程师不仅要写好页面样式,更重要的是处理用户的交互逻辑。交互逻辑比纯展示逻辑复杂得多,比如输入框获取光标时如何响应、失去光标时如何响应、用户输入特殊字符如何处理、用户鼠标点击如何处理,还有些页面内容是需要根据用户的操作从服务器端查询实时数据展示出来的。其二,看起来差不多的两个按钮或者两个输入框,包含的逻辑却完全不同,比如用户名输入框和手机号输入框

  • 用户名:6-20字符、英文字母和数字、不能和其他用户重名
  • 手机号:11个字符、只允许数字、一般以"1"开头

尽管交互元素看起来样子都差不多,但实际上每个元素背后的隐含逻辑都不一样,开发成本也就大很多。一个页面中包含的交互元素越多,则页面开发越复杂。

原则二 - 组件化程度越高越简单

每个网站都会有一些重复出现的元素,比如日期选择、上传图片、弹窗、Toast提示等等,为了最大化的复用这些相同功能的代码,提高开发效率,大多数开发团队会建设一个组件库,里面包含各种常用组件,业界比较著名的组件库有 bootstrap 和 ant design。有了这些组件,工程师开发页面就像搭积木一样简单,把这些组件拼凑在一起,再加上适当的业务逻辑代码,就可以开发出一个页面。

产品经理应该适当了解你们开发团队的组件化现状,如果基于这些组件设计页面,那对工程师来说会减少很多工作量。如果能从产品的角度对组件库提出改进建议,既能让工程师们从中受益,也能更好的支持产品开发,达到双赢。相反,如果产品形态和交互行为始终处于变化之中,那工程师也很难沉淀出一套适用的组件库,开发效率也大打折扣。

原则三 - IE浏览器

要求兼容 IE 8 及以下浏览器的页面,复杂度增加10000000000000000倍。

开发者的因素

由于主题是“页面复杂度”,应该是页面本身的属性而与开发者无关,所以没有列入三大原则之中。但如果回归到现实需求中,开发者实在是无法绕开的一个关键因素。

1、 开发者综合素质。除了技术实力之外,还有沟通能力、需求理解能力、责任心等,这些大家工作中已经有很多感触,就不再赘述。

2、 开发者对业务的熟悉程度。这一点尤为重要,也是容易忽视的一点。有时候会出现这样的情况,同样的一个需求,小A只需要1天搞定,小B则需要3、4天,很有可能是因为小A一直是这块业务的开发者,而小B刚刚接手这块业务。由于代码本身的强逻辑性特征,哪怕同一个开发者去读自己三个月前写的代码,即使是最简单的一段几百行的代码,也很有可能不太记得其中的逻辑。对接手新业务的开发者来说,要读懂前人的几千行甚至是上万行代码绝对是非常艰巨的任务,会需要更多的时间和精力。

一个小故事

最后分享一个小故事,在上家公司合作过一位产品经理,有一次我们周末有事找他,他说他没空,报了java培训班,要上课去了。。。要上课去了。。。要上课去了。。。快要被抢了饭碗的感觉。

目录
相关文章
|
Ubuntu 网络协议 网络安全
ubuntu防火墙的安装,开启,关闭和添加规则等操作
ubuntu防火墙的安装,开启,关闭和添加规则等操作
7482 0
ubuntu防火墙的安装,开启,关闭和添加规则等操作
|
SQL Ubuntu 关系型数据库
PostgreSQL介绍和PostgreSQL包安装
PostgreSQL 是一个功能强大、可扩展的开源关系型数据库系统,以其可靠性、数据完整性和高性能著称。它支持复杂查询、事务、多版本并发控制及丰富的数据类型,适用于各种应用场景。本文介绍 PostgreSQL 的核心特性,并详细说明在多种 Linux 发行版上的安装与配置方法,帮助用户快速部署和使用该数据库系统。
1198 0
|
9月前
|
Web App开发 人工智能 自然语言处理
快速搞定Dify+Chrome MCP:打造能操作网页的AI助手
用Dify+Chrome MCP,3分钟打造能“动手”操作网页的AI助手!无需编程,通过自然语言指令实现自动填表、数据抓取、网页点击等自动化任务。本地部署简单,支持搜索、登录、监控等场景,让AI成为你的7×24小时数字员工,高效处理重复性网页工作。
|
前端开发
如何在React Router中进行嵌套路由配置?
如何在React Router中进行嵌套路由配置?
709 57
|
前端开发 JavaScript
【前端用法】前端JS获取视频时长的写法
【前端用法】前端JS获取视频时长的写法
753 0
|
小程序 JavaScript 安全
微信小程序实现云闪付支付(代码和注释很详细)
微信小程序实现云闪付支付(代码和注释很详细)
|
Android开发
AutoX——当Android中clickable属性显示为false,实际可点击的布局如何处理
AutoX——当Android中clickable属性显示为false,实际可点击的布局如何处理
335 0
|
机器学习/深度学习 人工智能 自然语言处理
机器之心开放人工智能专业词汇集(附Github地址)
作为最早关注人工智能技术的媒体,机器之心在编译国外技术博客、论文、专家观点等内容上已经积累了超过两年多的经验。
1658 0
机器之心开放人工智能专业词汇集(附Github地址)
|
数据采集 JavaScript Go
蓝易云 - crawlab通过docker单节点部署简单爬虫
以上就是通过Docker单节点部署Crawlab并运行简单爬虫的步骤。在实际操作中,你需要根据自己的需求对爬虫代码进行编写。
543 2
|
存储 SQL 安全
一文读懂 Mysql MVCC
MVCC(Multi-Version Concurrency Control)是一种**多版本并发控制**技术,常用于数据库管理系统中,用于支持事务的并发执行。MVCC 技术可以在读取数据时不产生锁,同时保证数据的一致性。具体来说,MVCC 技术会在每个数据行上保存多个版本的数据,每个版本都有一个时间戳,当一个事务需要读取数据时,会根据该事务的时间戳选择合适的数据版本进行读取,从而避免了读取数据时的锁定操作。同时,MVCC 技术还可以通过回滚日志和垃圾回收机制来保证数据的一致性和完整性。MVCC 技术在 InnoDB 存储引擎中得到了广泛的应用,成为了 InnoDB 存储引擎的一个重要特性
1354 1
一文读懂 Mysql MVCC

热门文章

最新文章