对XP极限编程的一些想法
我觉得自己写blog总是没有动力,以后就在你的文章后面写一些评论当blog好了呵呵,免得点击链接麻烦。
我之所以对TDD敏捷开发比较认同,就我自己的感受而言,主要是TDD对开发心理的正反馈作用比较大。我记得去年暑假在南京的宾馆里读《人月神化》的时候,感触很深的就是Brooks说的项目陷入泥潭之中,每个人都对项目的完成没有信心了。所以后来Brooks领导的几个项目都要求做出一点东西就让大家看到一点效果,这样对开发士气的鼓舞是巨大的。而TDD中测试也是对工作的正反馈。每次得到一点正反馈,就会给人巨大的信心,各种倦怠和疲劳也烟消云散,带来开发效率的提升是完全不可估量的,甚至有时候进度会出乎自己的意料。还有就是基于概率学的认识。如果一个小模块(函数,类)出错概率是10%,也就是正确率90%, 那么10个小模块(比如10个函数)正确的概率只有30%。这还算错误是独立的,而往往错误会蔓延。所以每前进一小步,就进行充分的测试绝对会极大地提高生产效率。而低错误率对士气和信心又是很好的正反馈。当你尝到测试的种种好处之后,就会对测试上瘾。我现在对每一个参数,每一个返回值,每一个不变式都会疯狂的assert,所以我写程序几乎不需要调试和单步。因为每一个小模块的错误都是如此的明显,每一个模块都有严格的测试检查不让错误蔓延,编程就成了一件轻松的事情。花一点时间多写些测试,看似多花了时间,却省去了无穷的debug时间(俗称time killer),有些人不明白,贪小便宜吃大亏。 低错误率、速度的提高、成就感、测试通过对心理的正反馈都会带来高涨的士气和信心,而高昂的士气和愉快的心情又会提高生产效率,这样会进入一个良性循环,做起东西来就会又好又快。 字串7
测试还有一个好处是会让你比较有胆量去重构(说通俗点就是修改代码:)。我比较认同好的设计是在实现中形成的(martin fowler语),瀑布模型的设计有点类似计划经济,把很多地方设计的很灵活完美,看起来达到了模式的至境,实现起来却是要付出成本的。而这些灵活性之中可能只有20%会真正用到(根据8/2原则),那80%就成了过度设计,这也是我一直认为好的设计不是使用了多少模式,而是有好的tradeoff的原因(也许不光是在oo design领域,在所有设计领域或者说工程领域都是这样的,上学期学并行体系结构到处都是tradeoff这个词:)。reusable模块的用户就是使用它的模块(scott meyers比较喜欢用户的说法)。很多需求可能在写使用模块时才能发现它对reusable模块的灵活性需求,按市场需求去生产灵活性,会节省很多成本。不过做framework好像还是越灵活越好,因为使用模块不是自己写的,需求不太好分析:)
另外对我的想法影响比较大的是《程序员修炼之道》中的破窗原理,就是当一个城市要破败的时候总是从破窗开始。因为破窗对人的心理的负面影响,大家会开始丢弃废弃物之类的,大概有点类似中国的“千里之堤,溃于蚁穴”的说法。也就是一旦你开始贪图方便搞一些不规范不饿legant的做法了,心里还有仅此一次的侥幸,那么很快就有第二次,因为你觉得反正前面那样做过了,整个工程很快就会溃烂掉了。所以小的方面一定要严格要求自己,养成规范的习惯,这种干净整洁的习惯就会对心理产生正反馈,将规范的做法一直延续下去。所以不管我有多么的不情愿,我从来没有将data member申明为public,每一个函数名变量名不能准确表达它自身的意思时,我都会绞尽脑汁改一个比较确切的名字(这个也叫重构,还是使用频率最高的重构手段:),能够放到private里面的绝不放到protected,能够放到protected里的绝不放到public。不管多麻烦,坚决不hack(暴露内部实现编程),因为你越是怕麻烦,麻烦就会接踵而至。每发现一点代码的“坏味道”我就会停下来去重构,去测试。花费这一点小的时间代价,带来的是无穷的收益。 字串3
写了不少,思路比较奔放(通俗点叫散乱),总结一点,就是不能贪小便宜吃大亏。当然也只有吃过亏的人才知道什么做不得(scott meyerss说c++老手的新手的区别就是老手背上都是伤疤),只有尝过甜头的人才知道什么该坚持,从负反馈中吸取教训,从正反馈中鼓足信心,就会保持sustain performance(我现在才知道这玩意有多重要),做东西才会又快又好,相对别人才有比较优势(老板经常教育我们中国资源紧缺,什么都缺就是不缺人)。
结尾引用一下李开复的话与每一个IT爱好者勉励/也是我的qq签名档:
“为了成为最好的你自己,最重要的是要发挥自己所有的潜力,追逐最感兴趣和最有激情的事情。当你对某个领域感兴趣时,你会在走路、上课或洗澡时都对它念念不忘。如果你对该领域有激情,你就可能为它废寝忘食,睡觉时想起一个主意,都会跳起来。不是为了成功,而是享受而工作。”
激情的维持还要靠正反馈,不然天天受打击,没两天就干的没劲了。
再引用一句brooks在《人月神化》中的经典名言:
编程为什么有趣?作为回报,它的从业者期望得到什么样的快乐? 首先是一种创建事物的纯粹快乐。如同小孩在玩泥巴时感到愉快一样,成年人喜欢创建事物,特别是自己进行设计。我想这种快乐是上帝创造世界的折射,一种呈现在每片独特、崭新的树叶和雪花上的喜悦。
我之所以对TDD敏捷开发比较认同,就我自己的感受而言,主要是TDD对开发心理的正反馈作用比较大。我记得去年暑假在南京的宾馆里读《人月神化》的时候,感触很深的就是Brooks说的项目陷入泥潭之中,每个人都对项目的完成没有信心了。所以后来Brooks领导的几个项目都要求做出一点东西就让大家看到一点效果,这样对开发士气的鼓舞是巨大的。而TDD中测试也是对工作的正反馈。每次得到一点正反馈,就会给人巨大的信心,各种倦怠和疲劳也烟消云散,带来开发效率的提升是完全不可估量的,甚至有时候进度会出乎自己的意料。还有就是基于概率学的认识。如果一个小模块(函数,类)出错概率是10%,也就是正确率90%, 那么10个小模块(比如10个函数)正确的概率只有30%。这还算错误是独立的,而往往错误会蔓延。所以每前进一小步,就进行充分的测试绝对会极大地提高生产效率。而低错误率对士气和信心又是很好的正反馈。当你尝到测试的种种好处之后,就会对测试上瘾。我现在对每一个参数,每一个返回值,每一个不变式都会疯狂的assert,所以我写程序几乎不需要调试和单步。因为每一个小模块的错误都是如此的明显,每一个模块都有严格的测试检查不让错误蔓延,编程就成了一件轻松的事情。花一点时间多写些测试,看似多花了时间,却省去了无穷的debug时间(俗称time killer),有些人不明白,贪小便宜吃大亏。 低错误率、速度的提高、成就感、测试通过对心理的正反馈都会带来高涨的士气和信心,而高昂的士气和愉快的心情又会提高生产效率,这样会进入一个良性循环,做起东西来就会又好又快。 字串7
测试还有一个好处是会让你比较有胆量去重构(说通俗点就是修改代码:)。我比较认同好的设计是在实现中形成的(martin fowler语),瀑布模型的设计有点类似计划经济,把很多地方设计的很灵活完美,看起来达到了模式的至境,实现起来却是要付出成本的。而这些灵活性之中可能只有20%会真正用到(根据8/2原则),那80%就成了过度设计,这也是我一直认为好的设计不是使用了多少模式,而是有好的tradeoff的原因(也许不光是在oo design领域,在所有设计领域或者说工程领域都是这样的,上学期学并行体系结构到处都是tradeoff这个词:)。reusable模块的用户就是使用它的模块(scott meyers比较喜欢用户的说法)。很多需求可能在写使用模块时才能发现它对reusable模块的灵活性需求,按市场需求去生产灵活性,会节省很多成本。不过做framework好像还是越灵活越好,因为使用模块不是自己写的,需求不太好分析:)
另外对我的想法影响比较大的是《程序员修炼之道》中的破窗原理,就是当一个城市要破败的时候总是从破窗开始。因为破窗对人的心理的负面影响,大家会开始丢弃废弃物之类的,大概有点类似中国的“千里之堤,溃于蚁穴”的说法。也就是一旦你开始贪图方便搞一些不规范不饿legant的做法了,心里还有仅此一次的侥幸,那么很快就有第二次,因为你觉得反正前面那样做过了,整个工程很快就会溃烂掉了。所以小的方面一定要严格要求自己,养成规范的习惯,这种干净整洁的习惯就会对心理产生正反馈,将规范的做法一直延续下去。所以不管我有多么的不情愿,我从来没有将data member申明为public,每一个函数名变量名不能准确表达它自身的意思时,我都会绞尽脑汁改一个比较确切的名字(这个也叫重构,还是使用频率最高的重构手段:),能够放到private里面的绝不放到protected,能够放到protected里的绝不放到public。不管多麻烦,坚决不hack(暴露内部实现编程),因为你越是怕麻烦,麻烦就会接踵而至。每发现一点代码的“坏味道”我就会停下来去重构,去测试。花费这一点小的时间代价,带来的是无穷的收益。 字串3
写了不少,思路比较奔放(通俗点叫散乱),总结一点,就是不能贪小便宜吃大亏。当然也只有吃过亏的人才知道什么做不得(scott meyerss说c++老手的新手的区别就是老手背上都是伤疤),只有尝过甜头的人才知道什么该坚持,从负反馈中吸取教训,从正反馈中鼓足信心,就会保持sustain performance(我现在才知道这玩意有多重要),做东西才会又快又好,相对别人才有比较优势(老板经常教育我们中国资源紧缺,什么都缺就是不缺人)。
结尾引用一下李开复的话与每一个IT爱好者勉励/也是我的qq签名档:
“为了成为最好的你自己,最重要的是要发挥自己所有的潜力,追逐最感兴趣和最有激情的事情。当你对某个领域感兴趣时,你会在走路、上课或洗澡时都对它念念不忘。如果你对该领域有激情,你就可能为它废寝忘食,睡觉时想起一个主意,都会跳起来。不是为了成功,而是享受而工作。”
激情的维持还要靠正反馈,不然天天受打击,没两天就干的没劲了。
再引用一句brooks在《人月神化》中的经典名言:
编程为什么有趣?作为回报,它的从业者期望得到什么样的快乐? 首先是一种创建事物的纯粹快乐。如同小孩在玩泥巴时感到愉快一样,成年人喜欢创建事物,特别是自己进行设计。我想这种快乐是上帝创造世界的折射,一种呈现在每片独特、崭新的树叶和雪花上的喜悦。
Tags:
责任编辑:您的评论
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
精彩推荐
最新资讯


您的位置: