想要成为一名合格的程序员,必须要拥有良好的产品设计能力。因为无论是产品开发,还是项目中都要根据客户提出的需求进行开发,而在开发前编写设计文档可以保证在开发过程中不偏离客户的需求,满足客户的需求。产品的质量才会有效地提升,降低上线的产品出现问题的风险,才能达到提升交付项目的效率。
下面我们就软件设计开发过程中必须要完成的工作进行梳理,而我们需要注意到,这些需要完成的工作,在不同的开发流程模型的指导下可能有不同的时间要求,而我们需要关注的是在这个阶段内需要完成的工作,只有按照这样的流程来做,才能不断地提升我们开发人员的个人设计能力。
1整体说明
作为一名产品研发人员,不但要对产品有更好的理解,还要在工作交互过程中清晰地表达业务内容并聆听他人描述的业务内容,这些都是影响产品功能最终完成质量的关键因素,无论是在撰写设计文档过程中还是在研发功能过程中,将问题考虑得全面是程序员的基本素养,也是能让自己走得更加长远的方法,因此无论是业务还是意识,只有全方面提升自己才会拥有更大的提升空间。
1.1设计思考
在设计产品功能过程中需要经过用户反馈、产品经理接纳意见并对产品提出变更需求到撰写需求设计文档,最后研发人员完成产品研发工作,整个过程中产品经理和研发人员的沟通交互尤为重要,只有将产品变更的需求让产品经理、研发人员和用户达成共识,才能成就好的产品,好的产品不仅是基于完善体系的框架之上,还要有更加严谨全面的功能来支撑各种业务需求,这样才会使产品的价值得以持久和永恒。
1.2设计优势
由于产品设计阶段要全面确定整个产品策略、外观、结构、功能,从而确定整个生产系统的布局,因此,产品设计的意义重大,具有“牵一发而动全局”的重要意义。如果一个产品的设计缺乏生产观点,那么生产时就将耗费大量费用来调整和更换设备、物料和劳动力。相反,好的产品设计不仅表现在功能上的优越性,而且便于制造、生产成本低,从而使产品的综合竞争力得以增强。许多在市场竞争中占优势的企业都十分注意产品设计的细节,以便设计出造价低而又具有独特功能的产品。许多发达国家的公司都把设计看作热门的战略工具,认为好的设计是赢得顾客的关键。
1.3设计说明
本篇文档将从设计需求、功能设计、开发规范、考察要点四个大方面出发去提升产品设计的能力。需求方面包括对需求的前期调研以及要结合实际业务场景需求分析;接下来是功能上的设计,可以从接口、数据库模型,以及功能实现的大体思路;然后是关于开发中的一些代码规范,像方法的命名等;最后是功能开发中涉及到的技术要点。
2明确需求
编写设计文档之前首先要对需求进行明确,只有了解需求才能根据需求进行设计,而明确需求的过程又可以分为需求调研、需求分析,下面将对这两个过程进行描述。
2.1需求调研
1.首先,要先了解你要做的行业,在网上查一下相关行业知识,这样的话不至于与客户沟通的时候客户说的专业名词你一概不懂,这样不仅会显得很不专业,而且不能更好地沟通需求。
2.开始做调研的时候,一定要认真听取用户讲解需求,切记,这个时候听绝对比讲更有用。在用户中断或者想不起来的时候我们才进行追问和提醒。
3.好记性不如烂笔头,因此做用户需求很重要的一点是记录,把用户说的每个关键词都尽量记录下来,有些部分可能当时不是很明白,可以回头再做进一步了解和沟通,没有哪个用户需求人员是可以不用笔记而靠记忆来完成工作的。
4.现场完成用户需求采访和讨论之后,回到办公室立即进行笔记整理。因为有时候用户语速较快或者说的东西比较多,而记录的笔记只能做到记录关键词,因此马上进行整理,会很快通过关键词回忆起用户说话的细节,这样才能尽量少的有遗漏。
2.2需求分析
需求分析就是将需求进行总结说明,将功能的作用以及它产生的原因进行说明。同时将相关的功能点进行分析、总结。它可以帮助我们再梳理一遍功能的需求,同时也可以让其他人对功能有一个总体的了解,这是十分必要的。在功能实施过程中可以屏蔽掉一定的风险点和技术点,同时在项目初期也能较好地协调资源,有利于项目的顺利实施。
2.3业务理解
想要做好设计还有非常重要的内容就是要懂业务,只有做到充分理解业务逻辑,才能保证产品的设计不会偏离需求,可以满足实际业务中的客户需求。当然,这个并不是一朝一夕可以形成的能力,需要不断地在项目中进行摸索,也可以多跟技术人员进行沟通交流,毕竟技术人员和客户接触的机会还是比较多的。平时多沟通可以提升自己的业务理解能力。
3功能设计
功能设计部分就是具体的对于产品功能的设计部分了。通常情况下分为模型设计,也就是数据库设计,如果有接口的新增或者调整,就需要设计接口。最后就是整体功能的实现思路。
3.1模型设计
模型设计就是前文提到的数据库设计,这部分的设计主要需要考虑数据库表名的命名,要能表达出这张表的作用,需要明确语义。这样在使用过程中也能更好地分辨出每张表的作用。接下来就是字段的设计,字段名称通常是表明的各个部分的首字母组合然后加一个语义字段,如果字段名称过长的情况下,可以去掉一些固定的字段。
3.2接口设计
接口设计包括接口的地址,调用方式以及接口的入参和出参,需要将这些信息明确。另外,需要对返回的错误信息进行编辑。最后,也需要考虑接口暴露,接口并发量等问题。
3.3实现思路
实现思路部分需要对功能的设计进行大概思路的描述,分点列出每一步需要做什么,然后能实现什么,这部分可以画一个流程图,这样图文结合来描述会让看的人更容易理解,自己也能更充分地理解到功能的具体实现。
4开发规范
代码规范是我们在开发过程中非常重要的一个部分,也是十分容易被忽视的地方,特别是对于一些刚入行的新人来说,他们普遍认为只要功能可以实现就好,至于代码的规范完全不需要考虑,这样是大错特错,下面就来具体阐述一下设计过程中需要声明哪些规范。
4.1命名规范
我们在大多数写代码的时候,遵守的都是匈牙利命名法。基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。要基于容易记忆容易理解的原则。匈牙利命名法的特点是前缀。用前缀标明变量的类型。前缀后面的单词首字母大写,其他字母小写,让人一看到变量名就能知道这个变量的类型。
4.2代码规范
前文介绍了关于命名的规范,而在代码逻辑上同样也需要做到规范性,否则可能会影响产品的使用效果。在编写时,大致遵循以下几个原则:
1.不要把操作数据库的方法写在循环里。
2.操作比较频繁的代码可以独立出来为一个方法,然后通过本类调用的方式。
3.尽量减少代码嵌套的层次,便于理解。
4.尽量做到代码复用,减少扩展的次数。
5.不同的方法之间间距适当,例如空格一行。
6.每个if,for等语句都不要省略大括号。
4.3页面规范
页面部分要整体简洁美观,通常我们做前端都会找一个框架来做整体产品的样式结构,像目前比较主流的bootstrap框架。在做页面的过程中要考虑颜色的搭配,整体页面的布局,宽高自适应等情况。
5考察要点
考察要点部分主要是提前预想开发过程中的一些难点和重点,并想出对应的解决方案。整理出来写到设计中,这样在实际开发过程中会大大提高效率。
5.1技术要点
技术要点部分前面也提到了,是对某个功能在开发过程中的关键点进行研究和琢磨,例如,是否需要新增一个方法还是原有的方法中去修改。并把具体的实现步骤写出来,代码可以不用写得那么详细,但是大体上的逻辑要有。这样也为后续功能开发打下一个良好的基础。
5.2实现约束
实现约束说的就是某些功能在实现时会有一些限制条件。我们常见的有一些互补的按钮,比如提交和反提交这一类,通常都是根据数据的状态就判断哪个按钮在什么样的状态下不可以点击,那另一个就正好相反。或者是两个属性需要相互比较,如果是数值的话,会存在一个大小关系,这些都是我们常说的功能的实现约束。
5.3前置条件
前置条件一般情况下指的就是用户在使用该功能之前需要做哪些准备,通常都是一些配置功能,只有配置了相关参数,功能才可以正常去进行。如下图所示。
6心得总结
最后一部分是对如何提升个人设计能力做一个全方位的总结;首先是对产品要有充分的理解,也是我们前面提到的需求方面。其次是要明白设计对于开发工作的重要性。最后也是非常重要的一点就是想要做好设计就必须要有全局思维。
6.1产品价值
产品的价值在于是否能够满足客户的需求,是否可以解决企业面临的困境,帮助企业完善信息化发展,能够实现企业信息集中、管理集中、业务集中的一体化平台目标。每个公司的产品都要抓住这些痛点,结合自身的业务和发展方向,进行完善升级自己的产品,这样才能体现出产品的价值。一款好且稳定的产品可以帮助工作人员快速而方便的工作,大大提高了工作效率,也会让客户满意,增加客户对公司的信任度。
6.2设计优先
产品功能设计得如何决定产品最终效果的好坏。在开发或者项目中通常客户对于自己提出的需求并不是十分的明确,通过功能设计可以消除客户对于需求的模糊性,同时客户通过设计说明可以查看该功能是否符合自己的需求,同时核对需求是否有需要完善的地方,设计过程中还可以发现哪些要求是由于用户的片面性或短期行为所导致的不合理要求,这样就可以在开始实施请与客户交互沟通,达成一致后,再进行实施开发工作,就不需要在开发过程中再交互,导致做无用功,所以设计是非常重要的一个阶段,重视设计才能更加有效地进行项目实施,才能交付一个好的项目成果。
6.3全局思维
不管是哪一个行业,想做好一件事就必须要有大局观,做产品设计也是同理,在做设计之前,脑袋里一定要有一个整体的架构,产品大致分为哪些模块,每个模块具体实现哪些功能,自己一定要做到心中有数。除了产品整体的架构体系外,还需要考虑各个功能之前的关联甚至是和其它产品之间的联系,要避免开发一个新功能可能会对其它原有的功能造成影响的现象,如果那样,就只能是得不偿失。
另外,也需要考虑到产品未来的发展,产品需要不断地更新,功能也会逐渐的拓展完善,在做设计时其实就需要下意识的想到这些问题,给产品后续的扩展留有足够的空间,也为公司整体的产品体系完善打下坚实的基础。