对MSF八个原则的思考

第一个原则,也是MSF中最基础的一个原则,推动信息共享与沟通。这个原则的一个特点是,对于团队成员的所有工作,都会被记录下来,包括走了弯路的、出现bug但已调试解决的部分。对于新加入团队的成员或者以前没有参与过MSF开发的成员来讲,第一步便是要学会“不遮掩自己的错误”,因为每个人都是想要展现自己完美一面的,但是为了给团队成员提供经验,也为了真正实现信息的共享,已经提交的工作便不可删除。这让我想起第一次结对编程时因为不熟悉TFS的使用,误把自己的代码签入了服务器,当时还联系助教修改,但是助教说不行,现在我懂为什么不行了。

第二个原则是要求团队成员有共同的远景。作者对这个远景提出了三个要求:明确、通过努力实现和具有指导作用。这样的要求可以说是不仅仅适用于MSF的,几乎所有的远景,都应满足这三个要求。一个模棱两可的远景,或者把一个团队已经达到的成就当成远景,或者一个太空泛让人不知道该做什么的远景,都不利于项目的实现。然而对于项目的远景由谁提出,作者说应该由一个“有远见的人”提出,再交由大家讨论,这里的问题在于作者似乎没有过多讲述远景的提出基于一些什么样的考虑,用户需求?技术难度或者开发人员的水平?另外一个问题是在于,远景这样一个说起来很宏大的词,是怎么对软件开发过程起到如此重要作用的?

第三个原则讲的是团队人员之间的授权和信任。最吸引我注意的是对于团队事件安排的一个建议:由下而上地制定时间,由负责开发的成员自己拿捏时间表,这样做的好处在于提高了大家的主动性,由于是自己做的计划,应该就已经考虑清楚了开发中会遇到的问题,也考虑了自己的技术水平,那么自然比别人为自己定deadline的情形更有动力,这样的授权充分地考虑了个人因素在开发中的作用,确实是一个非常好的方法。那么作为项目的管理者,既然计划都是开发人员自己制定了,那么他做什么呢?作者看来,开发者要实时地跟进项目的进度,及时地位开发者提供技术上的帮助,比如通过组织学习解决一些新的技术问题等等,为了避免不能按时提交工作的情况,管理人员当然不能坐等验收,而是参与整个过程。最后一点,关于充分发挥团队成员的特长,也就是每个成员都能在自己擅长的领域担任领导者,带领团队其他成员在相关的工作中做得更好,这当然是充分授权和信任的表现。

第四个同第三个原则相互制衡。在第三个原则的最后,作者提出了一个问题:如何避免“授权与信任”之后,每个人都有很多想法,反而达不成一致意见了。第四个原则讲各司其职。核心就是每个人要对自己负责的项目负责,主要体现为哪个环节出现了问题,这个环节的负责人就要做出解释甚至承担相应的惩罚,我们在完成某个模块任务时,当然会询问他人的意见,他人也都会乐于给与我们帮助,但是他人提出的建议可能过于理想化,因为他不对这个任务的完成与否负责任,自然不能设身处地地思考,所以,只有将责任捆绑到开发者身上,才能督促上认真思考旁人的建议,认真决策,不会出现被旁人的建议牵着走而耽搁了进度的情况。而且,从另一个方面讲,我们在为他人提建议时,也应该注意一下建议的可行性,不要以一种旁观者的态度提出一些无意义甚至帮倒忙的建议。

第五个原则是我疑问比价大的一个原则。这个原则本身很简单,因为毕竟软件开发是一个商业过程,我们的大多数软件项目都是希望能盈利的,这无可厚非。然而是不是存在一些软件项目本身就不以盈利为目的呢?我的答案是肯定的,令人高兴的是,作者也提到了开源和闭源的问题,遗憾的是我并没有这么多知识储备,也找不到一个好的“闭源转开源”的项目来分析,不过在我看来,有的开源项目本身是出于更深层的一些终极价值发起的,具体是哪些终极价值在本文中也不便说明,我想表达的问题其实更像是通读本书的过程中贯穿始终的一个问题:本书是一本实战型的书,导致它的行文风格显得过于职场化,用我很讨厌的企业家、很欣赏的言说者罗永浩的话来讲,这也太没有情怀了。对于这个原则,开了一些玩笑,总结一下,我是想借此机会向一些伟大的开源项目致敬,向一些致力于为所有人提供公平的互联网服务的项目致敬,比如说基于Google Appengine的goagent项目组。

下一个原则是关于敏捷开发。这算是一个同我们软工的实践比较贴近的原则了,正巧我们最近就刚刚因为需求的变化对后面的计划做了相应的调整,把本来要做的一个比较有意思的功能给放弃了,因为下一个组用不上这个数据。作者说到了一个偏执追求质量导致软件跟不上客户需求变化的例子,这当然是对软件开发团队必须要平衡质量和需求的警示,目前我的体会还不深刻,但是这也是第一次比较学术地接触到软件开发的指导思想的问题,需要认真地学习。

后面的一个原则仍然和质量有关,准确地讲是和如何对待质量有关。质量当然是软件开发过程中最重要的一个交付条件了,你总不能给用户一个bug漫天飞的软件吧?那是不是开发者就必须要交付给用户一个没有bug的软件呢?答案尽管很直接,但确实是这样:不可能,在质量上耗费过多功夫就意味着在满足客户需求、提升用户体验等方面花费了少的功夫,而一个软件最重要的是解决用户的问题,如果能够解决用户当前的问题,就应该越早地交付,非要等到软件完美以后,可能就会出现上一个原则中的悲剧例子。所以作者把这个原则叫做投资质量,投资意味着质量不是最终追求,而是通过追求质量达到更大的目的:解决用户的问题。

最后一个原则是关于学习经验,我们也做了alpha阶段的事后诸葛亮会议了,而且这一个原则也贯穿我们的整个学习生涯,我也不再赘述了。

时间: 2024-10-29 19:11:17

对MSF八个原则的思考的相关文章

职场与生活 八条原则 让你不再浪费时间和提高效率

Heidi Roizen女士一度是硅谷人人争相学习的典范.她曾创办自己的公司并管理了14年之久.后来,她担任苹果公司主管开发者关系的高级副总裁.现在,她是DFJ Venture的一位风投家,她还在斯坦福主讲一门名叫??"企业家精神??"的课程.她几乎认识硅谷的所有重要人物并且灵活地运用着自己的影响力.哈佛商学院甚至还有专门关于她的案例. 以下是Roizen提出的八条原则,她正是利用这些原则来指导自己的工作.建立起广泛的人际网络并不断推动创新.这些过来人的经验对于新入行者弥足珍贵,可以作

习惯用八个维度的思考:道术器用,人时事境

最近看时间管理,结合之前看的管理学,有所悟,因此记下. 所有的事情,如果这八个维度都能思考清楚,得到自己的答案,那么一定能做下去: 道术器用,人时事境 道:你的道.白话一点:选择这条路的原因.为什么做?内--动机,外--潮流术:方法论.怎么做?有什么方法可以帮你走下去?器:手段.有什么工具/手段/资源,是可以用的?用:道指引下,器的配合,术的实施,结合后运用的方式. 人:内--你的性格,习惯,家庭,外--团队,人脉,是否足够支撑?时:时机.为什么这个时候做?早一点晚一点会怎么样?事:具体的方案.

关于大型系统设计原则的思考

以下以公共信息平台作为大型系统的典型代表.   在进行设计原则的讨论之前,首先要明确一个事实: 在一个软件项目团队中,在讨论项目设计的时候,每个人都会有自己的设计理念.这些设计理念一般都跟每个人的成长经历有关系.跟用户密切接触的人员,比如:产品经理,售前经理等,在设计一个系统的时候更考虑整个系统如何设计才能更加方便用户,更加贴合用户的业务流程,才能解决用户面临的问题.而研发体系的人员,比如:系统架构师,开发经理,一般更加侧重于系统架构如何高效运行,如何减少代码工作量,如何减少系统的复杂度. 因此

【设计模式】#001 面向对象设计的八个原则

1.对于面向对象的软件系统设计来说,在支持可维护性的同事,需要提高系统的可复用性 2.软件的复用可以提高软件的开发效率,提高软件的质量,节约开发成本,恰当的复用还可以改善系统的可维护性 3.面向对象设计简化成三条 3.1 封装变化点 3.2 对接口编程 3.3 多使用组合,少使用继承 点击查看大图:

杰克?康菲尔德:佛法心理疗愈的二十六项原则

https://www.douban.com/note/518933460/ 该文整理于临床心理学博士.禅修大师杰克•康菲尔德所著<慧心自在>,此书结合禅修思想与心理治疗,将灵性修行落实于日常生活,治愈身心的疾病.适合以下人群: 1.医生或心理治疗专业人员 2.刚接触佛法,对禅坐也很陌生的人 3.对佛法的修炼经验较丰富者 4.对生命探索充满无限好奇的人 5.渴望心灵健康和心灵提升的人 第一部分 你到底是谁 第一项原则 观看众人的内在神圣性和美德.第二项原则 慈悲是我们最深的天性,它源于我们与万

面向对阿象设计原则

如何衡量软件设计质量1 首要的标准 满足软件的功能需求 满足软件功能需求的设计并不一定就是好的设计. 好的设计 可读性:软件的设计文档是否轻易被其他程序员理解.可读性差的设计会给大型软件的开发和维护过程带来严重的危害. 可复用性:软件系统的架构.类.组件等单元能否很容易被本项目的其它部分或者其它项目复用. 可扩展性:软件面对需求变化时,功能或性能扩展的难易程度. 可维护性:软件维护(主要是指软件错误的修改.遗漏功能的添加等)的难易程度. 上面四个标准太抽象了,无法考量 内聚度 耦合度 什么是内聚

OOAD之面向对象设计原则

学习这个设计模式 真的觉得很抽象,只有自己多多的领会! 在很多时候,很多的知识都会觉得讲起来是很矛盾的. 本章目标 1 掌握内聚度和耦合度的概念 2 掌握面向对象设计原则 (一)如何衡量软件设计的质量 内聚度:表示一个应用程序的单个单元所负责的任务数量和多样性.内聚与单个类或者单个方法单元相关.(在我自己的理解就是:在一个类中完成自己所有的任务,这些任务都在自己的类中.) 耦合度:耦合度表示类之间关系的紧密程度.耦合度决定了变更一个应用程序的容易程度.在紧密耦合的类结构中,更改一个类会导致其它的

BGP选路13条原则全实战,一条条帮你梳理支撑整个互联网的选路原则

BGP选路原则实验 11.7.1 BGP选路原则理论 BGP不是简单的通过metric来选路最优的路由所有的路径属性归为一下四类:? 周知强制属性? 周知自选属性? 可选传递性属性? 可选非传递属性以上属性分为两类,首先,周知属性,即所有BGP实现都必须能识别这些属性:其次是可选属性,即并不要求bgp实现支持这些属性如果可选属性是传递的,那么bgp进程应该接收该属性中包含的路径(即使不支持),并将路径传递给邻居如果可选属性是非传递的,那么无法识别该属性的bgp进程忽略update消息中包含的属性

Scrum总结

Scrum总结一个轻量级的软件开发方法 Scrum是一个敏捷开发框架,是一个增量迭代的开发过程..在这个框架整个开发周期由若干个小的跌代周期,每个小的的跌代周期称为一个Sprint,每个Sprint的长度2到4周.在每个Sprint中,Scrum的开发团队拿到一个排列好优先级的需求列表,我们称它为用户故事或者叫Sprint backlog, 所以我们先开发的是对客户具有较高价值的需求.  在每个迭代结束后,都会开发完成可交付的产品. 一个简单的框架 Scrum由三个角色,三种活动,3种交付物组成