<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[几种华丽无比开发方式]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Thu, 07 Mar 2013 08:31:14 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	背景：<br/>项目时间本来就该是根据deadline倒排的。<br/>这就是前sina的开发方式，王志东的搞法。<br/><br/>出自《四火的唠叨》：http://www.raychase.net/1169<br/><br/>不要被我的标题骗了。我可不是来宣扬什么模型驱动开发，或者什么测试驱动开发的，那些都弱爆了。今天我要说的，是几种看起来激动人心、华丽无比，但是可以让程序员们痛苦不堪的开发方式，特别适合那些热衷于折磨虐待程序员的项目经理和产品经理们。当然，掌握以后，偷偷用就好了，请不要来感谢我。<br/><br/> <br/><br/>进度驱动开发（SDD，Schedule Driven Development）<br/><br/>这是在国内最为流行的开发方式，大家心照不宣，口口相交，代代相传，我只是把它写下来而已。它最华丽的地方在于，可以百分之百，甚至百分之二百地压榨程序员的劳动力。<br/><br/>需要实现哪些需求？用什么技术？用什么平台？项目采用什么流程管理？这些都不重要。重要的是——什么时候交付？<br/><br/>假使说，老大们通知，下个月的这个时候要看到产品发布，那么：<br/><br/>三周以后就要拿出完备的产品准备上线；<br/>两周以后就请发布beta测试版本，ST、IT之类的东西就得在那之前完成；<br/>本周就必须完成编码和UT，那么周一设计，周二、周三开发，周四、周五测试和修正问题。<br/>看，项目计划多么完美。项目时间本来就该是根据deadline倒排的。<br/><br/>项目做什么呢？先做那些相对重要的需求，可是如果时间紧的话就只好砍需求了吧……不！你怎么能那么容易就放弃呢？你看，我的完美的计划里面没有安排周六和周日嘛，大家可以来加加班嘛，年轻的时候不得奋斗一把嘛，不用砍需求，平时的时间再压一压不就可以如期上线了？<br/><br/>在热情洋溢的动员会之后，大家开始拼命赶工了，疯狂的一周过去了，测试团队始终等不到开发团队提供的发布包，难道“又”要延期了？<br/><br/>那还用问吗？当然！<br/><br/>测试团队的时间也是可以压缩的嘛。于是煎熬的两周过去了，发布日期眼看越来越不靠谱，项目经理觉得，他需要挺身而出了——<br/><br/>敏捷思想教导我们，搞不定的时候，质量不能丢、进度更不能丢，那我们只得砍需求了。这样，我们只发布“核心功能”总行吧……<br/><br/>可是什么才是“核心功能”呢？<br/><br/>对了，我们做完了哪些？要不，做完的就算“核心功能吧”？<br/><br/>太牛了！这真是一个伟大的创举！<br/><br/>别忘了，给程序员画饼也是项目经理重要的技能——大家再努努力，进度压力也是没办法的事，发布以后大家就轻松了，有好日子过了！<br/><br/>瞧，“没有发布不了的版本”，这是真的！<br/><br/>产品发布以后大家就轻松了，有好日子过了，这也是真的！<br/><br/> <br/><br/>文档驱动开发（DDD，Document Driven Development）<br/><br/>这种开发方式也非常华丽，对于许多领导和老大们而言，文档胜过一切。架构文档要靠ppt，因为他们的智商和知识不足以理解满是文字的东西，而胶片，则是最接近看图说话的好东西。设计文档，要靠足够详细的word文档，项目经理要看到你的文档细致到肯定可以轻松地指导编码，如果你明天突然拉肚子拉到抽筋，打嗝打到卡住，喝水喝到噎着，于是不幸住院的话，文档的威力就体现出来了，他可以轻松找到你的备份，替掉你的工作。<br/><br/>软件开发全套有十项文档，从工作任务书开始，只有完成了文档，你的工作才算完成。如果你要在邮件里面，或者会议上向大家传授一点什么技巧，你可得当心了，因为接下去劈头盖脸的就是这样一句“有文档记录吗？”，仿佛有了文档就有了一切，有了文档就买了保险——至于有没有人看，嗨，谁管呢？<br/><br/>别忘了，文档的核心地位需要贯彻到底。在绩效考核的时候，最能写的人，就可以成为优秀员工。代码这种无法体现智商差异的东西可以踢一边去，只有文档才是智慧和能力的综合代表啊。<br/><br/> <br/><br/>指标驱动开发（IDD，Indicator Driven Development）<br/><br/>这种开发方式的华丽，源于它超强的数据化和量化的能力。写代码的目的是什么？完成需求？优雅设计？用户体验？你全错了。<br/><br/>再次强调，终极目的是测试覆盖率。<br/><br/>整个软件开发流程里，你可以找得到无数的指标要求，在做每一件事情之前，必须要像默念毛主席语录那样回顾一遍需要达成的指标，然后再动手。<br/><br/>有一天，你发现用户体验像屎一样的产品，居然自动化测试也可以达到95%以上的通过率，bug居然可以收敛到10个/轮测试，而且Findbugs/CheckStyle/PMD/Source Monitor/Simian之类的无数代码检查工具的结果页上，都齐刷刷地显示着绿条……<br/><br/>恭喜你，你成功了。<br/><br/>更重要的是，项目成功了。<br/><br/> <br/><br/>装逼驱动开发（ZDD，Zhuangbility Driven Development）<br/><br/>这大概是几种开发方式中最华丽的一种。在设计前、写代码前，在做每一项事情之前，都要谨记装逼的重要性。对于很多不懂技术的领导来说，听起来越牛逼的软件，就越值得开发。<br/><br/>产品装逼：必须支持“云”和“大数据”，比如数据存储到服务端叫“云同步”，其实具体怎么个支持法，这不重要，关键是装逼的理念，理念！<br/>设计装逼：核心就是，灵活！强大！设计，就是要体现出自己的知识和阅历，已经无比聪慧的头脑。设计的东西万万不可简单直接，这是和装逼理念严重违背的。软件的每一个组件不但能够对常见的异常情形容错，你就是删掉它几个类它一样跑得欢快。<br/>代码装逼：漫山遍野的Factory，漫山遍野的接口，最好别让我看到“new”这样的关键字；超强的解耦，好端端一个软件，不把它分成个十几二十层来实现都对不起J2EE的祖宗；超级无敌灵活的配置，需要啥配啥，还支持各种免重启的热插拔、热部署，产品发布的时候小于500个可配置的项都不好意思自说产品是自己做的。<br/>评审装逼：体现自己超强无比的全面性和洞察力，请参阅我曾经写过的一些牛叉无比的评审方式中，“到处放炮型评审”。<br/>总而言之，软件工程的每一个环节都需要达到足够的装逼值，才能进入下一环节。装逼是指导软件开发的重要思想。<br/><br/> <br/><br/>其实还有很多其他华丽无比的开发方式，比如会议驱动开发（MDD），Demo驱动开发（DDD）等等，但这几种是最常见的。如果你知道更华丽的开发方式，请告诉我。
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 几种华丽无比开发方式]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>