`
zwchen
  • 浏览: 795998 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

关于软件思想在管理中的一点体会

阅读更多
软件这行,如果干得有滋味,也许会有这种体会:软件就是把一些做事的规则换一种表达而已。就说说我的体会吧。

分配任务和反馈:Request/Response模式,还是Observer(观察者)模式?

因为项目组有七八人,项目上线后,经常有一些bug要修改,开始是这样的:我提出修改建议,开发人员修改,感觉修改差不多后,我再询问开发人员,他答复。如果有五六人要沟通:通知业务人员改内容,通知设计师改界面,自己一忙起来,就忘了检查。

当然了,要是团队每个人都积极主动也没事,但如果当事人很主动,但事情一多也忘了反馈那咋办?问题出来了,看来要寻找一种Solution。

搞软件这行,都有一种职业思维,马上想到BugZilla、JIRA、Mantis,这三种我都玩得很熟,后两种自己部署实施过,用过几年。但感觉对于我们项目组:太重了。填个bug要打开浏览器,输入网址,新建问题,描述问题,提交,通知相关人…,很累,特别是业务员,实在忍受不了这种折腾。

用软件解决前,先想想我们的问题究竟是什么?
问题:负责人和执行者,怎么建立一种有效、高效的问题跟踪反馈模式?

我上面描述的沟通模式,不知大家抽象出来了没有:Request/Reponse模式,主动获取,就是我们敲www.kaixin001.com,然后出现一堆骚扰信息的界面。这是一种典型的Pull模式。

怎么改进我刚才说的问题呢?
大家可能都想到了:让执行者每次处理完毕后,主动通知负责人,并且将这形成一个制度。负责人分配任务后,等着被动告知就行了。

是不是很像Observer模式:定义一个对象间的一种一对多的依赖关系,当一个对象状态发生变化时,所有依赖于它的对象者得到通知并自动更新。只不过,我的情况是:多个对象状态发生改变,我这个依赖他们的对象得到通知并自动更新(知道问题被修复,可以重新部署了)。

在以前的沟通模式中,如果我有6件事情要跟踪,总共需要6+6次主动请求,新的沟通模式:6次主动,6次被动,压力小很多。

刚才说到了访问kaixin001是一种典型的Pull模式,如果我们每天要访问的网站一多,就很累,后来出现了RSS订阅,Pull变成的Push,就像Foxmail自动收信一样,轻松多了。这和我上面的例子一致。

上面这个问题还没结呢,因为我还是比较累。
ok,我又想到了一种沟通模式,并付诸了实践,效果很不错。

Bug处理:星型模式还是网状模式? Chain of Responsibility (责任链)模式

上面这种沟通模式,大概应该知道,是一种星型沟通,也就是说,我站在中间,大家都和我沟通,都对我负责。

然后我想到了另外一种模式,并且一实施,团队沟通起来非常愉快。因为以上的模式,是上下级沟通,毕竟有些距离。

打个比方吧,开发一个电子商务网站,一个团队有做原型设计的,有做界面的,有做程序开发的,有做内容的。就说这四种角色吧,如果我是负责人,也就是测试人员,发现产品列表页排序不易用,那么我只需要向界面设计师阐述清楚问题即可,如果需要后台程序修改,那么他通知开发人员,开发人员发现内容,比如产品排序标志如“热门”需要勾上,找内容编辑。

这样,一个责任链就形成了。是不是有点像Chain of Responsibility (责任链)模式?(使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止),也许有点牵强。

从结构上说,是网络模式:去中心化,去掉我这个中心。
沟通从6+6次主动,到6主动+6被动,到2次主被动就够了。
我算解脱了,我可以专注于需求分析和功能测试这些更接近用户的工作。
因为是平级关系,沟通更顺畅些,因为沟通,关系也更亲密。

财务报销:模板(Template)模式

大家是不是在公司财务报销上总是感觉不爽,去财务室报销,不是收据不行,就是发票黏贴不对,或者报销时间不对,总之,财务总是折磨我们这些写程序的。

我们是这么做的:公司建议每个人在每月第四周前三天把发票啥的准备好,到时候部门行政MM来收(当然大企业这样做可能不行), 是不是有种被尊重的感觉?

这种思路是从模板模式学来的:定义一个操作中算法的骨架,将一些步骤的执行延迟到子类中。

这么解释吧:定义的骨架,就是我们的财务报销制度,报销步骤也就是报销者准备账单,被动等待被执行(递材料、收现金)。

也许有人会问,原来那种不算模板模式?不太算,因为它的模板定义不清晰(出现报销时间错过),而且,后来这种模板方法要处理的“逻辑”更少一些。模板方法的核心,就是“被执行”。

再举个例子,就是部门间沟通和责任界定的事情。

责任明确:高内聚、低耦合

做过管理的大概都知道,部门间协作较部门内困难得多,因为部门间利益很难制衡,打个比方,你开个户外店,别人试了你的望远镜半个小时,你有权力要求别人一定购买吗?

我就遇到过这种问题:网站要经常更新,更新是业务部那边的事情,我经常发现一些问题,比如产品价格过时,产品描述错别字。我该找谁?七八个业务员,难道我要一个个知道哪块归谁负责?并且通知其中某个人吗?再说,他可能会说,凭啥要听你的?

当然,如果企业有优秀的协作共赢文化,业务员可能会觉得你在帮他,但大多数情况呢?

也许我直接找负责人就不是最有效的?怎么做?先建立一套网站运营责任链,比如运营过程中,网站任何内容错误,如果没有及时反馈给IT部,是业务人员的责任。

如果我要提出业务问题,直接提给业务部产品经理,他确认、修改后给我反馈。我不需要知道修改工作,比如上传一张图片,是由谁来做。

一个部门,对外应该是高内聚,低耦合的,这里面蕴含的一个核心思想,就是职责分离。

这也符合软件上的面向接口编程:我和业务部沟通接口只应该是产品经理,他们内部沟通,对于其它部门来说,是private的。

先就举这几个例子吧。像软件分层架构思想,在建立高效的组织结构方面,也可以借鉴一下。因为软件本身也是一个组织、生命体。

组织有生命周期,也有从简单到复杂到衰亡的过程。组织有自我修复功能,健壮的软件也会有,比如优秀的异常处理机制。






分享到:
评论
11 楼 zwchen 2010-05-20  
hideto 写道
搞软件这行,都有一种职业思维,马上想到BugZilla、JIRA、Mantis,这三种我都玩得很熟,后两种自己部署实施过,用过几年。但感觉对于我们项目组:太重了。填个bug要打开浏览器,输入网址,新建问题,描述问题,提交,通知相关人…,很累,特别是业务员,实在忍受不了这种折腾。

------------------------------
如果你的产品比较复杂,而且是需要在不断运营中改进的,你就特别需要track系统的任何改动(起因-经过-结果)。没有bug tracking和文档系统,日积月累下来你的系统就会变成没人可以维护了


同意。
我另外补充一点,Bug Tracker系统一般是种事后补救系统:让产品烂得更慢点,对烂进行管理。它关注的是怎样不让系统更烂;而我觉得,更应该注意事前准备,让系统更好,如系统模块化、插件化,可扩展,代码规范。

当然,系统变更无法避免,因为系统有生命周期,比如走向衰亡。只是,Bug系统并不能指导你开发一个健壮、高可维护性系统。

这也就回到我的本意了:有时候,我们为了系统上线,会找一种最适合我们的Bug Tracker。再说明白点,就是上线前的Bug Tracker(zwchen用的),上线后的Bug Tracker(hideto指的).


10 楼 mercyblitz 2010-05-20  
文章不错,不过楼主把方向搞错了。

这些软件思想是来自于现实生活,比如高内聚-低耦合,在政治上,称为三权分立。只是在不同的场合,又不同的表述。
9 楼 hideto 2010-05-20  
搞软件这行,都有一种职业思维,马上想到BugZilla、JIRA、Mantis,这三种我都玩得很熟,后两种自己部署实施过,用过几年。但感觉对于我们项目组:太重了。填个bug要打开浏览器,输入网址,新建问题,描述问题,提交,通知相关人…,很累,特别是业务员,实在忍受不了这种折腾。


------------------------------
如果你的产品比较复杂,而且是需要在不断运营中改进的,你就特别需要track系统的任何改动(起因-经过-结果)。没有bug tracking和文档系统,日积月累下来你的系统就会变成没人可以维护了
8 楼 songze39 2010-05-17  
zwchen 写道
Bug管理,这两年,我们经历了三个阶段。
先说说使用环境吧,因为这是决定一管理软件是否适合的最核心条件之一。

人员 有开发人员和不懂软件的业务人员 问题主要是业务员提出
距离 原来一年大家在一个办公室 后来IT部和业务部分,距离约1km
项目 旅游电子商务网站 包括前台和后台 这类网站重业务和用户体验 技术上没难度

最开始,使用的是Bug管理系统JIRA 用了约一年,基本上是推,业务人员不适应,最后我觉得反馈一个问题很烦琐,自己主动废弃了。

后来,使用Excel,当然这是为bug管理定制的Excel, 执行一个月就觉得不行,因为问题汇总、截图等不方便,简单问题这样汇报似乎也太累。

最后,使用Foxmail邮件 用得非常顺,特别是业务部和我们分开情况下。因为邮件有三个特性很受用:抄送人,延迟执行,贴图。
有些很小并且及时的问题,直接通过QQ完成。

反正,在我们这个小团队,最后一种方式,直到现在都觉得很适合我们。

其实,在Bug管理的背后,有一个非技术支撑:信任。我们的重点不在责任界定、责任追究等和权限有关的事情上,我们只关注目标:问题被及时发现、及时解决,以及解决过程中的低成本协作。


我觉得方法因人而异,因公司而异!目前我们是用excel来进行bug的跟踪和管理!
可能小团队用邮件来管理bug就足够了,但对bug的跟踪和开发人员的错误率不好掌控!
7 楼 xueyi_lee 2010-05-10  
LZ好厉害 呀, 思想可以融会贯通~~ 受教 了~~~
6 楼 orpheus 2010-05-10  
经验谈,受教了。 不过感觉楼主没有把经验的精髓说出来,就是经验所处于的情景。
5 楼 zwchen 2010-05-08  
Bug管理,这两年,我们经历了三个阶段。
先说说使用环境吧,因为这是决定一管理软件是否适合的最核心条件之一。

人员 有开发人员和不懂软件的业务人员 问题主要是业务员提出
距离 原来一年大家在一个办公室 后来IT部和业务部分,距离约1km
项目 旅游电子商务网站 包括前台和后台 这类网站重业务和用户体验 技术上没难度

最开始,使用的是Bug管理系统JIRA 用了约一年,基本上是推,业务人员不适应,最后我觉得反馈一个问题很烦琐,自己主动废弃了。

后来,使用Excel,当然这是为bug管理定制的Excel, 执行一个月就觉得不行,因为问题汇总、截图等不方便,简单问题这样汇报似乎也太累。

最后,使用Foxmail邮件 用得非常顺,特别是业务部和我们分开情况下。因为邮件有三个特性很受用:抄送人,延迟执行,贴图。
有些很小并且及时的问题,直接通过QQ完成。

反正,在我们这个小团队,最后一种方式,直到现在都觉得很适合我们。

其实,在Bug管理的背后,有一个非技术支撑:信任。我们的重点不在责任界定、责任追究等和权限有关的事情上,我们只关注目标:问题被及时发现、及时解决,以及解决过程中的低成本协作。
4 楼 x03570227 2010-05-08  
没有bug跟踪系统会很痛苦的,现在我用的是redmine,

楼主文中提到让业务员等填写BUG表单不可行,这点我赞同,但这个问题可以通过"高内聚,低偶和"的模式解决,业务员统一将问题反馈到自己部门的某个负责人,再由负责人(报告人员)来填写BUG

"让执行者每次处理完毕后,主动通知负责人,并且将这形成一个制度。负责人分配任务后,等着被动告知就行了。"
我认为这里仍然存在负责人不够主动的问题,楼主没有提到如何监督制度执行情况,在企业中制度制定却很难被执行的现象仍然很普遍吧
3 楼 robertliudeqiang 2010-05-08  
zwchen 写道


怎么改进我刚才说的问题呢?
大家可能都想到了:让执行者每次处理完毕后,主动通知负责人,并且将这形成一个制度。负责人分配任务后,等着被动告知就行了。



其实象BugZilla之类的软件,当执行一个操作后,可以设定给相应的关联人发邮件,其实这就是一种通知方式。

个人认为并不一定面对面的告知才是通知,面对面告知在小的项目组是可行的,如果是一个比较大的项目组,不一定可行。
2 楼 wjpiao 2010-05-08  
wow,,有想法,把设计模式运用到管理中!
1 楼 spy 2010-05-08  
好文章, 非常有启发~

相关推荐

    PKM2个人知识管理工具

    个人体会: 只要安装.net 3.5即可使用,免安装,支持代码高亮显示,搜索快速,用过一定会喜欢,目前发现最好的个人知识管理软件.该版本是目前最新版本. PKM2的优点:6 条推荐理由 ① 基于知识管理思想。 真正的好...

    大学生军训心得体会2021最新范文.docx

    在软件开发中,无论是团队协作还是项目进度,都需要严格的纪律来保障。代码提交规范、会议纪律、沟通标准,每一项都不可或缺。纪律性让人知道何时该做什么,怎样做得更好,这对于一个IT项目而言,是保证高效率、高...

    2021软件工程师述职报告.docx

    在2021年的工作历程中,作为一名软件工程师,我深刻体会到了在智通公司这个大家庭中成长的每一刻。公司以“统一,专一,事业第一”的精神塑造每一位员工,这一点在我入职初期就深有感触。企业的精神成为了我工作和...

    VB人事管理系统(源代码+设计说明书+调研报告+实习报告).zip

    VB(Visual Basic)人事管理系统是一款基于Microsoft Visual Basic编程语言开发的软件,用于企业管理中的人事信息记录、查询、统计等操作。本系统集成了源代码、设计说明书、调研报告以及实习报告,为学习者提供了...

    20xx年11月群众路线心得体会:转变工作作风.docx

    在IT项目管理中,团队成员的积极参与和共识达成能确保项目顺利进行,减少沟通成本,提高项目执行效率。 6. **可视化管理**:文中提到的“可视化管理”是现代企业管理的重要手段,对于IT团队,可以是通过看板、仪表...

    雷家书读书笔记.doc

    通过细读这些家书,我们不仅能够得到关于如何教育子女的启迪,更能在职业发展中找到值得借鉴的方法和精神。 《傅雷家书》中的教育方式,首先体现在对孩子才能的肯定上。傅雷先生通过书信形式,对儿子傅聪的才华和...

    研发部经理述职报告范文.pdf

    在积极参与公司拓展的思想教育活动中,我鼓励成员撰写心得体会,并通过一对一的沟通交流,以期达到团队成员之间更深层次的理解和信任。 在总结了四年多来的经验之后,我清晰地认识到,一个高效的研发团队的建立,...

    计算机个人实习工作总结.docx

    实习生需要在思想的层面上认识到这一点,并在实际的工作和生活中潜心体会,并自觉的进行这种角色的转换。 四、 未来的发展规划 实习生对未来充满了美好的憧憬,计划继续学习和实践,不断提升自我,努力创造业绩,...

    DTCMS网站内容管理系统 v4.0 ACCESS

    DTcms之所以开源,最大原因在于国内ASP.NET(c#)开源软件成品太少,相信刚接触编程开发者都跟我一样有很深的体会,书本上的知识很有限,学习的过程中都是一些比较简单的基础知识,偶然发现一个比较成熟的案例,要么...

    政治老师教学工作总结例文.doc

    作为一名政治老师,我在教学实践中深刻体会到这一点,并在工作中始终贯彻这一教育理念。现将本学期的政治教学工作总结如下: 首先,我深知教育不仅仅是知识的传递,更是品德和人格的塑造。因此,在日常教学中,我...

    银行支行团委书记的竞选报告范文 .docx

    3. **开展征文活动**:通过举办征文活动等形式,鼓励青年员工阅读有益书籍,撰写心得体会,促进思想交流,这对于IT团队的文化建设和员工之间的沟通也有积极意义。 ### 二、职业发展规划与能力培养 **关键词:青年...

    迷宫游戏设计文档1

    应宇杰在文档中提到,通过这次实践他体会到了基础算法的重要性,尤其是查找和排序算法对解决实际问题的贡献。这一点对程序设计初学者来说尤其重要,因为掌握基础算法是进行复杂编程任务的前提。而于跃则在文件读取、...

    水资源与利用课程设计报告.doc

    这一点体现了他在实践中不断追求卓越的精神。 水资源的合理利用和保护已经不仅是技术问题,更是涉及到社会可持续发展的重大问题。通过本课程的设计,宋严深刻体会到了水资源的重要性,并理解了节约用水、保护水资源...

    微生物所病原微生物与免疫学重点实验室温廷益研究组2019年招聘人员试题及答案解析.docx

    首先,试题中对《刑法》中关于刑事责任的规定的考核,凸显了对法治意识和社会责任的重视。这一知识点提醒我们,不论个体处于何种状态,都应对自己的行为负责。尤其在科研领域,任何实验和操作都必须遵循法律法规,...

    微机实验二排序完整报告.pdf

    报告不仅要描述程序的功能和实现过程,还需要包括算法思想、调试过程及心得体会。这有助于加深对实验内容的理解和记忆,并能够提高解决问题的能力。 通过本实验的完成,学习者不仅能够掌握汇编语言的基本编程技能,...

    阅览室学习总结2000字(范文)..doc

    这一点让我认识到图书管理工作的复杂性和技术性,也看到了目前图书馆在资源整合和管理软件升级上面临的新挑战。 学习与个人发展紧密相连,图书馆的位置处于学校中心,方便学生随时随地学习,这不仅体现了图书馆在...

    二十三种设计模式【PDF版】

    实际上,GoF 的设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用 和智慧,让你能够真正掌握接口或抽象类的应用,从而在原来的 Java 语言基础上跃进一步,更重要的是...

    《铁道游击队》读后感作文5篇.docx

    无论是游击队员们在艰难环境中执行任务,还是软件工程师在项目中面对挑战,都需要团队成员之间的良好沟通和协作。技术项目的成功,很大程度上依赖于团队成员之间的协同作业和领导者的战略规划。在这一点上,《铁道...

    C#微软培训资料

    14.4 继承中关于属性的一些问题.169 14.5 小 结 .172 第四部分 深入了解 C#.174 第十五章 接 口 .174 15.1 组件编程技术 .174 15.2 接 口 定 义 .177 15.3 接口的成员 .178 15.4 接口的实现 .182 ...

Global site tag (gtag.js) - Google Analytics