现在位置首页 / 生活多美好 /正文

开发过程中如何发现问题并解决问题?

作者: IT小兵 | 2013年6月28日| 热度:℃ | 评论: |参与:

今天总结一下,我在处理问题时的一些经验教训。顺便发发牢骚。

1.为什么那么多问题:我苦啊

在这个世界上,充斥了不断发生的问题;工作中,生活中,感情中,都是问题;你有需求,那就是你的问题,你的问题可以自己解决,也可以让别人帮你解决;有的问题,还必须有另外的一群人和你一起解决;

        我们每天都要面对那么多问题,这就是一个问题。从某个角度讲,思维的价值,主要体现在解决问题上:一个人是否能够成功,体现在是否能面对和解决问题上,甚至MBA教学,也把培养分析和解决问题的能力,当作其主要的特色……何谓问题,通俗讲就是理想状态(目标)与现实状况之间的差异。问题如果得不到解决,非正常状态就得不到改善,而且,问题累积的结果将会使不良现状持续恶化,结果更为严重:小问题会积聚成大问题;大问题会变得不可救药。

        引用现在人才理论中流行的一句话说:

         人才是企业取得竞争优势的关键。    一个人才的竞争力体现于卓越的解决问题的能力。   最优秀的人,是最能解决问题的人!解决问题能力的强弱决定了绩效的高低!    能解决问题,就具备了竞争力!善于找方法解决问题的人,是社会的稀有资源。

2.正襟危坐:嗟,拿来问题

        在软件开发的过程中,每天的bug就是我们不断挑战的问题。Bug是问题最具象的体现;每天830,到达公司开启电脑,Bug列表便显赫的列在你的面前。




我们一般都会笑着看着这个列表,为什么是笑?一种笑是淡定的笑:又是一个充实的一天了,今天的bug我要如何如何的挑战了它;一种是苦笑:bug如此之多,叫我无奈,bug如此搞笑,叫我无奈,无奈的苦笑;一种是傻笑:bug如此之难,叫我痛苦,bug如此变态,叫我痛苦,就当我是傻吧;

一种是狞笑:bug如此弱智,别人却犯了,叫我可笑,早提出更好的解决方案,你还是犯了

        不管怎么的面对bugbug的存在就是为了让你去解决去修复的,忘掉自己的笑容,收起浮躁的心态,端正好自己的态度,真诚的去接受bug,一个一个的去消灭。

        在流行的问题解决步骤中,一般第一个步骤就是:陈述问题。但是我觉得在这个步骤之前应该加上一个步骤:挑战心态面对问题。只有好的心态,积极的心态,你才能去真实的陈述问题;开放的心态出来了,我们已经成功了一半了。

        所谓的拿来问题,不是强调的动作,而是强调你伸出手去,接纳问题的心理:面带着笑容,从战略上蔑视bug

举个栗子,以开发中的一个典型问题来阐述问题解决之道。




问题背景:

1)  B/S结构的信息管理系统,一个功能要求:后台分析完成数据后,前台根据数据类型A/B/C 3中类型,在树形结构图中表现层级关系。当某一个数据下面子数据较多时,隐藏该数据的子数据图形展示,当用户点击时出现;对每个数据点的子数据进行统计个数;

我们把这个问题的术语定义如下:

1.       层次结构:Tree

2.       后台指:数据存储和分析

3.       前台:UI及逻辑

4.       每个数据自身:Node

5.       子数据:ChildNode

问题就是这么简约而不简单,每个问题都婉约的像个春天的小姑娘一样脸红的说来吧来吧,我好相处,一处就TMD全是惊喜…….

问题从来不告诉你它有多难,因为它要是能告诉你多难那就不难了;

4.陈述问题:不管风吹雨打

        陈述问题之前,我们首先要确定问题,确信这个问题的存在。把问题清楚的描述出来,最好是直白的描述,这时候不能回避问题。

        清楚陈述问题的特点:

        1).一个主导型的问题或坚定的假设

        2).具体不笼统

        3).有内容

        4).可行的

        5).以决策者下一步所需的行动为重点。

以上面的例子来说。

问题的背景描述是功能的概要描述,还远不到我们解决这个问题的具体;我们需要把这个需求问题转换为技术实现问题,就像老婆说饿了这个问题,一般很难解决,你说:吃鱼吧,她说怕刺;你说吃牛排吧,她说咬不动;你说吃KFC吧,她说垃圾食品,无限循环下去,最好还是随便吧

我们应该把这个问题具体化,不能给太多选择或者先走一步再说。按照这个功能描述,我们大概需要做一下工作:

1.              后台把数据准备好:要符合Tree的数据格式要求,按照经验来说,我们需要每个Node来自我描述上下节点。后台不能做?不会做,做啥开发嘛~

2.              数据量可能会是问题。但现在不知道。再来个但是,数据量大的情况下,我们的数据渲染是否会对用户造成体验不好的地方?是不是到时候再说啊?

3.              Tree我们没有开发经验或者库;我得补补这个知识了。

4.              需求还会变化吗?nnd。需求就跟娘们的脸,说变就变。

5.              开发时间质量要求等等。我们有时间去学习吗?如果需要新的技术,是否有捷径?我还想学习学习silverlight来,flash也行啊….打住别跳跃了,你只要陈述问题就可以,不是叫你天马行空

6.              完成的标志是什么?或者说什么是验收过的标准?干都干不完的活,谁都不想干是吧?

5.分析分解问题:不如来个闲庭信步

        在分析问题之前,我们还有一个选择:那就是不做!解决问题的最好办法就是不解决问题!但是这个问题就不是今天我们要解决的了,我们还是要面对问题的!

        下面是麦肯锡的分析问题第二步的概念图,采用逻辑树的方式拆分问题。


图片


根据我们的陈述和开发经验,我们开始拆分问题:


图片

通过上面的思维导图,我们可以得出以下结论:


*

 数据实体和集合的设计是关键:需要从实体结构上减少界面的工作量。


*

 UI与后台之间传输采用Ajax是肯定的,但是采用哪一种实现还不是很确定。但是考虑到实际开发人员的能力和经验,我们会采用AjaxPro.dll来进行开发。


*

 UI控件:我们没有现成的控件使用,我们使用了Jquery库,所以第一考虑的是用JqueryUI控件,但是没有。最后无奈的选择Js的一个开源代码


*

 我们考虑最郁闷的需求变动问题:需求变动在于数据的完整性和展示数据的格式上,而采用树形表达方式是比较固定的了,所以我们要在数据变化上做好准备,考虑到A/B/C 3种类型的数据变化和组合。


*

 异常:异常是我们很头疼的地方。对于Ajax的数据传输和js的数据展示,很容易出现脚本的错误。这个地方,需要我们做好数据的检查和兼容,并在UIJs代码中考虑足够周到的异常处理。比如:加上默认值和默认进度说明,加上一个总的异常提示。

6.解决问题:付诸行动吧,我们来开始战斗!

       

图片

在战略上蔑视了问题之后,好吧,我们开始战术操作了!


*

 准备好武器

n  数据格式定义:定义实体的时候,要考虑到树形Tree控件的要求。每条数据增加ParentID字段。

集合:可采用字典存储数据。也可List存储,由前台自行遍历(数据不会过大)。

n  树形控件:这次树形控件不是竖型的,而是横排的。因此需要重新开发。

考虑到互联网的强大,我们求助---Google!这是开发人员最强大的武器!

借助搜索,我们找到了符合我们要求的开源控件Js。但是需要美观微调一下,OK!找美工去!

n  Ajax方案要确定:不落地的方案不是好方案。确定好Ajax的实现方式。考虑到微软的Ajax.net太大,大材小用了。确定适用AjaxPro

n  


*

 保持好的精神:打起万分的精神吧。别叫郁闷的分析过程和处处碰壁的思路搞得自己精疲力竭。


*

 进攻:等上面都准备好。我们开始动手Code!每一个代码就像打在问题身上的子弹一样,我们在洞穿问题的防护。

一切都很顺利,直到发现js对后台传递的数据遍历时!大数据量遍历,而且还得考虑到实体。要知道Js对对象的遍历和属性使用是比较弱的。咋办?


*

 又来问题了,我们需要迂回:js的对象很弱,但是C#的对象很强,对List的循环和查询更强。Ok!我们换个方法,使用C#把所有数据遍历,预制好,而Js只需要展示数据就可以了!这样做的好处还有对需求的变动,我们可以用C#来应付而不是js

7.总结问题:红尘梦多,梦断则成空

         问题解决了,大家都皆大欢喜。

    


  类似上面的问题,我们平时遇到很多。只是很多时候问题不具有代表性,有的甚至都是TMD的重复问题。我们慢慢被这些问题磨去了激情。但是问题是不会因为我们有无激情而选择离去。

        把典型的问题在解决之后,总结一下,把问题的累赘变成一种经验的财富,而不是过眼烟云一样的过去了。总结后,更可以与别人分享交流。

        但是如何总结问题,又是一个问题,唉,问题真是接连不断啊!

        这里有【麦肯锡解决问题的7个步骤】著名的七步成诗:界定问题(陈述问题);分解问题(问题树);优先排序(用漏斗法去掉所有非关键问题);议题分析(制定详细的工作计划);关键分析;综合建议(综合调查结果,并建构论证);交流沟通(将数据与论证联系起来,讲述来龙去脉)。


     

[开源代码:Http请求封装类库HttpLib介绍、使用说明]

点击阅读本文所属分类的更多文章: 生活多美好 。和高手一起交流:346717337
友荐云推荐

未注明转发、原文均为本站原创。分享本文请注明 原文链接

给您更多信息和帮助

在这里您可以找到更多:

技术交流群:346717337 Jquery插件交流

投稿:[email protected]

承接:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/业务咨询

echarts教程系列
本月最热文章

微信扫一扫,徜徉悠嘻网,您的休闲乐园

微信公众号:快乐每一天

随机文章
标签

技术交流群:346717337

投稿:[email protected]

专业专注:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/付费问题咨询