作者回复: 你说的这个话题其实属于架构下面的。
在技术里面,模块其实是对某一种类型需求的抽象。举个例子来说,一个博客系统,博客的帖子是一个模块,评论是一个模块,用户是一个模块,帖子和评论又可以进一步抽象成内容模块。
模块的分类看你是从架构层面看还是从业务层面看。比如说从架构层面看,一个普通的博客网站可以看成三层:UI层、业务逻辑层和数据访问层。其中UI层包含帖子列表模块和博客文章阅读模块;业务逻辑层则是帖子业务模块、用户业务模块。
如果从业务层面看,包含博客阅读模块和后台模块,更偏向功能的分类。
高内聚低耦合是架构里面的概念。因为架构设计,需要把大的系统拆分成小的模块,拆分后,还要通过约定的协议通信。典型的有前后端分离然后通过REST API通信,还有像类库之间直接通过公开的方法调用。
低耦合意思是项目没有什么依赖,改动互相不受影响。比如说前端和后端之间通过API通信,只要API不变,无论你后端用什么语言,跟前端都没关系。
高内聚指的是一个模块都是关系很紧密的代码,比如用户模块,所有用户操作的功能都在用户模块里面,关系紧密,也不需要依赖于其他模块。
作者回复: 首先你问的是产品部门参与产品设计,还是开发部门?
首先从技术角度,好的产品设计要让产品设计在技术上实现不要成本太高,所以在一些技术难度高的设计上两边要多沟通确认,共同制定出技术难度适中,又满足好产品需求的设计。
然后从产品角度,开发必须充分理解产品设计才能设计出符合产品需求的架构,才能开发出满足需求和好的用户体验的产品。所以开发需要多和产品设计反复沟通需求,然后将确认后结果体现在文档上。
至于参与方式,主要还是看什么形式比较好。
比如可以安排需求评审,关键节点让主要开发人员参与确认技术可行性和成本以及建议。
比如有分批次的需求讲解会议想开发讲解产品设计,回答理解不清楚的问题。
每个Sprint产品经理都要参与其中,及时和开发沟通确认需求不明确的问题!
作者回复: 这种和业务接口的事很锻炼人的,能帮助开发人员换位思考,多了解业务需求、使用场景。
一开始不着急出接入系统,可以先人工做一段,然后在总结归纳,把能自动化的部分逐步用自动化解决。
另外这类事情,一定要配合Ticket跟踪系统,所有提的需求、反馈的bug,都应该基于Ticket跟踪起来。
作者回复:
视觉这种东西主观性太强,每个人都觉得懂一点,所以一般领导都喜欢发表意见。所以遇到喜欢发表意见的领导,不妨让领导有机会参与设计,对设计稿多确认,从粗到细,先确认大风格,再确认配色风格,再到局部细节。这样最后提出设计修改的可能要小一点。
但要注意在确认的方法上,多让领导做选择题,而不是问答题。因为当你问的开放式的问题,那么你就可能得到不确定的答案,但是如果是在几种方案之间的选择,那么对于结果会更容易可控一些。比如说,你问领导:“这套设计方案怎么样?”他可能会提出一些不太可控的意见。如果你准备两三套设计方案,问领导:“你觉得这几套方案哪一套更好”,那么可能问题就集中在选择哪一套设计方案上。
对于需求变更的问题可以参考 《20 | 如何应对让人头疼的需求变更问题?》里面的描述,核心是是要让领导意识到变更带来的成本,以及想办法提升领导变更的成本。
当然如果你确定不是你自己的问题,确实是领导的问题,也无法改善,你也可以考虑换一个项目组换一个部门甚至换一个公司。
作者回复: 流程图是辅助的,可以被原型设计代替,但是有了会更清晰。
这就像你的代码,看代码也能看懂 ,有个模块关系图,别人看会清晰很多
作者回复: 产品经理也会考虑信息架构,但是和开发的纬度不一样,开发是站在用户使用功能的角度,做信息架构时需要考虑哪些功能是不同模块共用的。而开发是站在实现的角度,看怎么实现可以重用代码。
只是有时候正好两个不同维度的结果可能是重叠的。
作者回复: 我觉得对于开发人员来说,设计原型是帮助理解需求的手段,并不是必要手段。只要能理解清楚需求,通过和产品经理多沟通,达到理解需求的目的即可。
但对于产品经理来说,产品原型是很有必要的,因为这是最简单有效的确认需求的方式,最简单有效的让其他人理解产品设计的方式。
作者回复: 以前在讨论开发模型的时候有介绍,快速原型开发模型有两种模式,一种是抛弃型的,就是用工具开发的这种;一种是演化型原型,就是类似于MVP,先做简单核心功能,然后不断演化,变成最终产品。
如果你要提升代码的重复率和开发速度,这种前后端分离的呀,我给你的建议是你用一些第三方API云服务:
https://www.apollographql.com/
https://firebase.google.com/products/firestore/
这样你就完全不用考虑后端开发了,直接用它们定制就好了。等到产品开发出来,你再考虑后端迁移。
作者回复: 已经在另一篇留言回复
作者回复: 👍是的,原型设计对于产品设计阶段的作用蛮重要的。