想要成为一名合格的程序员,必须要拥有良好的产品设计能力。因为无论是产品开发,还是项目中都要根据客户提出的需求进行开发,而在开发前编写设计文档可以保证在开发过程中不偏离客户的需求,满足客户的需求。产品的质量才会有效地提升,降低上线的产品出现问题的风险,才能达到提升交付项目的效率。

下面我们就软件设计开发过程中必须要完成的工作进行梳理,而我们需要注意到,这些需要完成的工作,在不同的开发流程模型的指导下可能有不同的时间要求,而我们需要关注的是在这个阶段内需要完成的工作,只有按照这样的流程来做,才能不断地提升我们开发人员的个人设计能力。

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全局思维

不管是哪一个行业,想做好一件事就必须要有大局观,做产品设计也是同理,在做设计之前,脑袋里一定要有一个整体的架构,产品大致分为哪些模块,每个模块具体实现哪些功能,自己一定要做到心中有数。除了产品整体的架构体系外,还需要考虑各个功能之前的关联甚至是和其它产品之间的联系,要避免开发一个新功能可能会对其它原有的功能造成影响的现象,如果那样,就只能是得不偿失。

另外,也需要考虑到产品未来的发展,产品需要不断地更新,功能也会逐渐的拓展完善,在做设计时其实就需要下意识的想到这些问题,给产品后续的扩展留有足够的空间,也为公司整体的产品体系完善打下坚实的基础。

如何提升自己的设计能力相关推荐

  1. 游戏美术经验分享:如何提升游戏角色设计能力

    设计与绘画都是有表达诉求的,游戏角色设计不能离开世界观.性格.故事,凭空造个没故事的好看的角色出来,就算没深层文化内涵,那也还有视觉意义,所以将这些属性扩大复杂到"故事"的级别是很 ...

  2. 经验之谈:9大技巧快速提升自己的平面设计思维能力

    很多设计朋友新人总是烦恼,怎么样才能提升自己的设计能力,自己本身就是做设计工作的,做了几年设计了,工资待遇也一直原地踏步,不上不下.对于自己做出来的作品,客户也经常不满意,很头疼.那么,今天咱们就来说 ...

  3. 商业化广告--体系学习-- 10 -- 业务实战篇 -- 效果优化:如何一步步从提升曝光量深入到提升销量?

    广告产品效果优化的策略: 广告产品的效果提升是业务执行层面的核心问题,它同时涉及了广告主和企业两方的利益, 一方面能够满足广告主曝光和转化的需求, 另一方面也能满足公司的商业收入需求.因此,效果优化要 ...

  4. 软件测试服务方案ppt,软件测试方案设计能力解决方案.ppt

    软件测试方案设计能力解决方案 软件测试设计技术 xinkai@ /nilxin 课程试用 测试经理TM 测试架构师TSE 测试设计TE 项目经理PM 开发经理DM 及相关PMO/IPMT成员 问题 测 ...

  5. 你与架构师相比差距在哪儿?如何提升

    你与架构师相比差距在哪儿?如何提升?程序员从开发做起,工作前3-5年可以是中级开发,但随着年限的上升还停留在开发上那么淘汰是迟早的事.在IT互联网行业除了保持不断学习,还要规划好自己的职业生涯. 你与 ...

  6. 【模块三:职业成长】36|能力维度一:如何提升结构化设计的能力?

    你好,我是郭东白. 上节课我们定义了架构师这个角色,也了解了架构师的五个成长阶段,分别是程序员.兼职架构师.跨域架构师.总架构师和 CTO.以及与这五个阶段分别对应的核心能力,即:结构化设计能力.解决 ...

  7. SoC(System on chip)与NoC(network-on-chip)

    SoC(System on chip)与NoC(network-on-chip) NoC是相对于SoC的新一代片上互连技术,要深入了解NoC必须深刻认识SoC,故本文组织结构为:  SoC架构  ...

  8. UI设计培训分享:2021年UI设计风格新风向标主要体现在哪些方面

    UI设计在近几年的各大企业中显得尤为重要,那么随着近几年的发展,2021年UI设计风格新风向标主要体现在哪些方面呢?大家是否做过了解呢?如果没有,那么来看看下面的详细介绍就知道了. UI设计培训分享: ...

  9. 美国科技界高度关注中国科技创新进展

    来源:新华网 近日,美国<福布斯>双周刊网站刊文说,中国互联网和高科技企业已超越模仿时代,成为投资和研发的全球领先者,中国的科技巨头进入了全新的创新时代.记者在采访中发现,美国科技界高度关 ...

最新文章

  1. 使用Python,OpenCV实现图像和实时视频流中的人脸模糊和马赛克
  2. MFC窗体控件随窗体变化
  3. Markdown学习测试
  4. python3.7.3安装selenium2library_python+selenium自动化的准备 2:安装python 3.7.4 和selenium 2.53.1...
  5. Hobbit玩转Zynq MPSoC系列之2:TPG输入+VCU编码+rtp网络传输
  6. Java黑皮书课后题第7章:7.10(找出最小元素的下标)使用下面的方法头编写一个方法,求出一个整数数组中的最小元素下标。编写测试程序,提示用户输入10个数字,调用这个方法返回最小值的下标(多个则最小
  7. 【大盛】全网首发HTC One/M7 最新本地化TrickDroid9.0/固件升级/永久root/高级,快速设置/稳定,流畅经典ROM...
  8. bootstrap-wysiwyg 结合 base64 解码 .net bbs 图片操作类 (三) 图片裁剪
  9. html隐藏层点击显示不出来,[js+css]点击隐藏层,点击另外层不能隐藏原层
  10. 初级开发人员的缺点_如何避免我作为初级开发人员犯的这7个错误
  11. c语言编译说文件不存在,c语言编译时缺少头文件,库的解决办法
  12. [LeetCode] Android Unlock Patterns 安卓解锁模式
  13. 001 基本的环境的安装
  14. Ubuntu16.04刷机+装驱动
  15. Pycharm安装numpy失败
  16. SDCC 2017·上海站震撼来袭,首批讲师和议题大公开
  17. 托马斯微积分和微积分学教程_为什么微积分很重要
  18. Tools - Blender快捷键大全
  19. 【Ydui.js】------ ydui.js 中的 util 中的方法讲解如何调用使用 例如:获取地址栏信息,js 倒计时,cookie, 获取图片地址等
  20. 程序员教你玩转电脑手机

热门文章

  1. 如何为管理者设计 360 评估调查题目?
  2. 关于火星坐标、偏移、加偏和纠偏、无偏的理解
  3. 宏基因组笔记(第二章)
  4. php开发his软件,HIS系统(his管理系统)V3.0.1 官网版
  5. oracle 触发器抛出错误,oracle 触发器编译错误,求解
  6. php中怎么设计出生日期,php – 将出生日期添加到数据库
  7. 初读《学会提问》小感
  8. 【学术】各类基金资助项目英文翻译(中英文对照)
  9. python实现人民币金额大写转小写数字
  10. LTE RB PRB