一个完整的软件开发流程离不开策划、交互、视觉、软件、测试、维护和运营这七个环节,这七个环节并不是孤立的,它们是开发一款成功产品的前提,但每一项也都可以形成一个学科,是一个独立的岗位,随着敏捷开发的流行,以及来到了体验为王的时代,现代软件开发更多的是注重效率和敏捷,而不是循规蹈矩的遵循这些开发流程,比如软件开发的岗位不再仅仅是个技术岗位,它需要去参与前期的设计和评审、可以在视觉和交互方面提出自己的见解,在开发的过程中需要自测程序尽快解决现存问题,运营和维护的过程中也需要软件的帮助。可见现代软件开发对开发者的综合素质(这并不是facebook所讲的全栈工程师)越来越高,自称为码农或者程序猿显然是不合理的,因为这个过程是脑力劳动和体力脑动并存,称呼自己为工程师显得更为合理。

  • 策划:需求收集(通过用户调研、灰度发布、大数据分析、竞品分析、领导拍脑袋等方式获取需求)、需求整理(将需求归类、划分优先级等)、将需求转换成解决方案(输出设计文档);

  • 交互:从心理学(利用人性的弱点)、人性化(心智)、个性化的角度将解决方案转换成可交互的功能和界面(需要输出交互文档),比如加载等待、消息提示、页面布局、页面内和页面间的交互逻辑、页面切换动画等等,这个过程中一般会使用Axure或者PowerPoint来制作交互文档;

  • 视觉:根据交互图,使用PhotoShop来做视觉效果,在Android上的图片格式大多是png和jpg,对于需要屏幕适配,程序又适合做屏幕适配的地方可以使用九图,格式为*.9.png。

  • 软件:根据视觉和交互效果将需求转化为具体的实现,在实现的过程中可能会因为需求、交互或者视觉的变动导致软件实现的变动,因为策划、交互、视觉这每一个环节都可能会有信息失真的现象,或者是由于市场环境的变化、获取信息不够准确、领导拍脑袋等等情况导致软件始终处于被动状态,所以现在会提倡敏捷开发、结对编程、程序设计、同行评审、单元测试来提高程序的灵活性和稳定性;

  • 测试:软件达到可交互的标准后,需要将可交互的程序提供测试,其中灰度发布(用户测试)、自测(开发自测)、SQA(品质保证)都算是测试;

  • 维护和运营:通过测试程序达到稳定标准后,软件就可以上线了,软件上线后,需要去维护,用户反馈的问题要及时解决、用户有疑问要及时解答;根据后台统计信息、抓住可运营的节日、民族文化需要做运营来提高用户使用产品的粘度,让更多的用户知道、使用产品都是运营应该做的。

注:

  • 可以查看这个答案了解一个APP从创意到上线的具体流程,开发一个APP有多难?

  • 可以查看笔戈科技的这篇文章了解一个手机(平板或其它电子产品也差不多)的诞生需要哪些环节,一个手机的诞生过程

提问的智慧

  大多数工作都是以结果为导向的,特别是软件开发这个职业,绩效考核、KPI这些都是在考核你工作的成果,所以工作更多地是需要你解决问题的能力,至于学习这个事情,还是在工作之外的时间去做吧。对于提高解决问题能力我有两个建议:

  • 学会学习和思考:学习的过程中要广度和深度并存,Android应用开发本身对技术功底的要求不高(因为很多底层的东西都被google、框架、开源代码给封装起来了,多数时候你只需要看ReadMe或者API知道怎么用就可以了),更多地是在你遇到问题的时候知道这个问题能够通过什么方法和方式来解决。书要看,但多逛逛论坛、QQ群、Github、StackOverflow、CSDN博客专栏对自己都是有益的。

  • 学会提问:你身边有很多资源,比如同事、StackOverflow、QQ技术交流群、搜索引擎,当你遇到问题的时候完全可以利用身边的资源来解决遇到的问题,如果一个问题在一个小时之内自己都不能够解决它,我就会通过搜索引擎、Github、QQ技术交流群、同事、StackOverflow(以上排序是按优先级排列的)来解决它。如果你需要好的答案你就需要有好的提问,特别是在QQ群或者论坛,在提问的过程中需要体现出你的思考,能够通过搜索引擎解决的问题坚决不问他人,这是对别人的尊重,在这里推荐几个链接,认真看会对你有莫大的帮助:

解决bug的方法

  为了写这一项我专门在知乎上提过一个问题:

  你有哪些解决bug的技巧?

  在知道如何快速解决bug之前,你需要知道什么是bug。没有完成策划、交互、视觉要求的功能,这不叫bug,这叫功能缺陷;一个功能完成后不能正常使用也不叫bug,因为它根本还没达到可测试的标准。我认为当你的程序达到可测试标准之后发现的问题才叫bug。综合我自己解决bug的经验和知乎上的回答,总结常见的解决bug的方法有(你想要高效解决bug的前提是你能够快速定位到缺陷所在的位置,所以以下方法多数讲的是如何快速定位问题,至于真正解决bug,需要你自己修改程序才行):

开发一个项目需要的基本知识相关推荐

  1. 探索开发一个游戏引擎需要那些知识和技术

    探索开发一个游戏引擎需要那些知识和技术 说到游戏引擎我们可能会想到Unity3D,虚幻引擎等.可是我们对于开发一个游戏引擎了解甚微,作为一名游戏开发者在开发游戏的同时我觉得也有必要了解并熟知如何开发一 ...

  2. 如何开发一个项目脚手架

    创建一个项目通常需要依赖很多的二/三方组件,我们很难记住每个组件的maven坐标,并且有些组件的初始化工作很繁琐,一堆配置项很难记住.如果没有脚手架,每当需要创建一个新的project,我们通常会选择 ...

  3. linux重新启动某一个项目,Linux运维知识之supervisor更改某项目配置后 需要重新启动才有效...

    本文主要向大家介绍了Linux运维知识之supervisor更改某项目配置后 需要重新启动才有效,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 在linux服务器上部署了nod ...

  4. 设置tableview的滚动范围--iOS开发系列---项目中成长的知识三

    设置tableview的滚动范围 有时候tableview的footerview上的内容需要向上拖动界面一定距离才能够看见, 项目中因为我需要在footerviw上添加一个按钮,而这个按钮又因为这个原 ...

  5. 多人共同使用一个github的仓库,实现版本管理,多人开发一个项目

    以前那使用 github + IntelliJ IDEA  + git(就是在git的基础上实现的)实现了代码的版本管理,有了版本控制之后,那么就可以随心所欲的写测试代码,而不用担心其他问题. 但是, ...

  6. YII框架开发一个项目的通用目录结构:

    testdrive/ 4    index.php                 Web 应用入口脚本文件 5    assets/                   包含公开的资源文件 6    ...

  7. iOS 控制section不悬停 --- iOS开发系列 ---项目中成长的知识八

    一般情况下,tableview中的section是会默认不随着tableview的滚动而滚动的,而是会等到属于这个section的cell滑完过后,然后往上顶(不知道大家能不能听懂=_=!) 有些时候 ...

  8. iOS 导航栏遮挡问题 --- iOS开发系列 ---项目中成长的知识七

    不知大家有没有遇见过自己写的tableview被导航栏遮挡住的问题,反正我是遇见过! 因为在ios7以后所有的UIViewController创建后默认就是full Screen的,因此如果带导航栏的 ...

  9. 引用一个项目作为library的操作步骤---开发中遇到的问题(二)

    今天在开发一个项目的时候需要引用另一个项目作为library.我是这样设置的: 1.将需要被引用的项目设置为library(正确的) 在项目中引用library(这一步是错误的) 通过这两步之后,在编 ...

最新文章

  1. Toast的功能和用法
  2. 使用LoadRunner对Web Services进行调用--Add Service Call
  3. sqlsugar 批量删除guid类型主键_一文上手SqlSugar 「C# 数据操作系列」
  4. (九)数据结构之“图”
  5. 知乎个人精选 | 绝版的专业书到哪里找最快最高效?
  6. 四、规则组织的衍生组织——经向破斜组织数学模型的建立
  7. python输入数字成数组_python – Numpy:将数值插入数组的最快方法,使得数组按顺序排列...
  8. 关于云原生需要了解什么
  9. 上下布局_再出上下铺新布局 新全顺都快被途酷玩出花了 还不来看看?
  10. dnf修改服务器时间限制,DNF历史性革新,团本刷新时间改为周六,为黑鸦让路
  11. 10年老台式机4分钟攻破量子加密算法,此前12年无人破解,核心原理来自25年前...
  12. xpath 解析后和原网页结构不一致
  13. python哥德巴赫猜想_Python验证哥德巴赫猜想
  14. 7-9 旅游规划 (25 分)Dijkstra算法,单源最短路径算法
  15. 企业网站的服务器配置,企业级服务器配置方案(网站服务器配置情况)
  16. Nginx下同域部署多个Vue项目(history路由模式),报404、500错误
  17. php 促销方案,七步就轻松搞定,促销活动方案
  18. 地图集web项目_技术学习(二)_bootstrap分页的例子
  19. 行业认证标准:如何达到DISA ASD STIG规范进行软件开发
  20. 马克思基本原理复习版本01【带题】

热门文章

  1. go区块链培训怎么样?深度讲解椭圆曲线加密算法ECC和椭圆曲线数字签名算法ECDSA
  2. 计算机故障维修要遵循什么原则,计算机故障排除原则和方法;
  3. P3084 [USACO13OPEN]照片Photo
  4. 【HTML 教程系列第 18 篇】详解什么是 HTML 中的表格 table
  5. 黑色炫酷动态引导页404页面源码 自适应
  6. softlayer iso_配置SoftLayer组件以与帐户定义的网络一起使用
  7. 支付宝五福java_2021年集支付宝五福攻略 一个账号一天最少扫到10张+ 扫一轮下来 基本要啥福有啥福!...
  8. 2018年北京中考试卷答案
  9. 深入浅出XDL(三):framework
  10. Redis-简单介绍及基本数据类型【随笔一】