不要被我的标题骗了。我可不是来宣扬什么模型驱动开发,或者什么测试驱动开发的,那些都弱爆了。今天我要说的,是几种看起来激动人心、华丽无比,但是可以让程序员们痛苦不堪的开发方式,特别适合那些热衷于折磨虐待程序员的项目经理和产品经理们。当然,掌握以后,偷偷用就好了,请不要来感谢我。
进度驱动开发(SDD,Schedule Driven Development)
这是在国内最为流行的开发方式,大家心照不宣,口口相交,代代相传,我只是把它写下来而已。它最华丽的地方在于,可以百分之百,甚至百分之二百地压榨程序员的劳动力。
需要实现哪些需求?用什么技术?用什么平台?项目采用什么流程管理?这些都不重要。重要的是——什么时候交付?
假使说,老大们通知,下个月的这个时候要看到产品发布,那么:
- 三周以后就要拿出完备的产品准备上线;
- 两周以后就请发布beta测试版本,ST、IT之类的东西就得在那之前完成;
- 本周就必须完成编码和UT,那么周一设计,周二、周三开发,周四、周五测试和修正问题。
看,项目计划多么完美。项目时间本来就该是根据deadline倒排的。
项目做什么呢?先做那些相对重要的需求,可是如果时间紧的话就只好砍需求了吧……不!你怎么能那么容易就放弃呢?你看,我的完美的计划里面没有安排周六和周日嘛,大家可以来加加班嘛,年轻的时候不得奋斗一把嘛,不用砍需求,平时的时间再压一压不就可以如期上线了?
在热情洋溢的动员会之后,大家开始拼命赶工了,疯狂的一周过去了,测试团队始终等不到开发团队提供的发布包,难道“又”要延期了?
那还用问吗?当然!
测试团队的时间也是可以压缩的嘛。于是煎熬的两周过去了,发布日期眼看越来越不靠谱,项目经理觉得,他需要挺身而出了——
敏捷思想教导我们,搞不定的时候,质量不能丢、进度更不能丢,那我们只得砍需求了。这样,我们只发布“核心功能”总行吧……
可是什么才是“核心功能”呢?
对了,我们做完了哪些?要不,做完的就算“核心功能吧”?
太牛了!这真是一个伟大的创举!
别忘了,给程序员画饼也是项目经理重要的技能——大家再努努力,进度压力也是没办法的事,发布以后大家就轻松了,有好日子过了!
瞧,“没有发布不了的版本”,这是真的!
产品发布以后大家就轻松了,有好日子过了,这也是真的!
文档驱动开发(DDD,Document Driven Development)
这种开发方式也非常华丽,对于许多领导和老大们而言,文档胜过一切。架构文档要靠ppt,因为他们的智商和知识不足以理解满是文字的东西,而胶片,则是最接近看图说话的好东西。设计文档,要靠足够详细的word文档,项目经理要看到你的文档细致到肯定可以轻松地指导编码,如果你明天突然拉肚子拉到抽筋,打嗝打到卡住,喝水喝到噎着,于是不幸住院的话,文档的威力就体现出来了,他可以轻松找到你的备份,替掉你的工作。
软件开发全套有十项文档,从工作任务书开始,只有完成了文档,你的工作才算完成。如果你要在邮件里面,或者会议上向大家传授一点什么技巧,你可得当心了,因为接下去劈头盖脸的就是这样一句“有文档记录吗?”,仿佛有了文档就有了一切,有了文档就买了保险——至于有没有人看,嗨,谁管呢?
别忘了,文档的核心地位需要贯彻到底。在绩效考核的时候,最能写的人,就可以成为优秀员工。代码这种无法体现智商差异的东西可以踢一边去,只有文档才是智慧和能力的综合代表啊。
指标驱动开发(IDD,Indicator Driven Development)
这种开发方式的华丽,源于它超强的数据化和量化的能力。写代码的目的是什么?完成需求?优雅设计?用户体验?你全错了。
再次强调,终极目的是测试覆盖率。
整个软件开发流程里,你可以找得到无数的指标要求,在做每一件事情之前,必须要像默念毛爷爷语录那样回顾一遍需要达成的指标,然后再动手。
有一天,你发现用户体验像屎一样的产品,居然自动化测试也可以达到95%以上的通过率,bug居然可以收敛到10个/轮测试,而且Findbugs/CheckStyle/PMD/Source Monitor/Simian之类的无数代码检查工具的结果页上,都齐刷刷地显示着绿条……
恭喜你,你成功了。
更重要的是,项目成功了。
装逼驱动开发(ZDD,Zhuangbility Driven Development)
这大概是几种开发方式中最华丽的一种。在设计前、写代码前,在做每一项事情之前,都要谨记装逼的重要性。对于很多不懂技术的领导来说,听起来越牛逼的软件,就越值得开发。
- 产品装逼:必须支持“云”和“大数据”,比如数据存储到服务端叫“云同步”,其实具体怎么个支持法,这不重要,关键是装逼的理念,理念!
- 设计装逼:核心就是,灵活!强大!设计,就是要体现出自己的知识和阅历,已经无比聪慧的头脑。设计的东西万万不可简单直接,这是和装逼理念严重违背的。软件的每一个组件不但能够对常见的异常情形容错,你就是删掉它几个类它一样跑得欢快。
- 代码装逼:漫山遍野的Factory,漫山遍野的接口,最好别让我看到“new”这样的关键字;超强的解耦,好端端一个软件,不把它分成个十几二十层来实现都对不起J2EE的祖宗;超级无敌灵活的配置,需要啥配啥,还支持各种免重启的热插拔、热部署,产品发布的时候小于500个可配置的项都不好意思自说产品是自己做的。
- 评审装逼:体现自己超强无比的全面性和洞察力,请参阅我曾经写过的一些牛叉无比的评审方式中,“到处放炮型评审”。
总而言之,软件工程的每一个环节都需要达到足够的装逼值,才能进入下一环节。装逼是指导软件开发的重要思想。
其实还有很多其他华丽无比的开发方式,比如会议驱动开发(MDD),Demo驱动开发(DDD)等等,但这几种是最常见的。如果你知道更华丽的开发方式,请告诉我。
文章系本人原创,转载请注明作者和出处(http://www.raychase.net)
注:本博客已经迁移到个人站点 http://www.raychase.net/ ,欢迎大家访问收藏,本ITEye博客在数日后将不再更新。
相关推荐
本文主要分享了15个无比华丽的HTML5/CSS3动画应用,供大家参考学习。 1、HTML5/CSS3图片选择动画 可选择多张图片 今天我们来分享一款既炫酷又实用的HTML5图片选择特效,当图片被选中时,图片上就会覆盖一个半透明的...
android开发之画廊值得你去下载啊啊
非常华丽的移动端后台开发模板JavaScript
八种华丽主页效果源码,包括随机背景,华丽切换页面,双斜焦点图,关键字随鼠标旋转,鼠标滚动切换界面,气球浮动效果,鼠标悬停图片华丽展示等。
Unity3d 10种二代卡通史诗华丽战斗动画特效 附带人物释放技能动作 10种战斗技能动画特效 可供学习使用 附带特效资源 可以编辑自己的动画效果 拥有人物特效释放场景-免去自己创建demo的麻烦 卡通 史诗 华丽 战斗 动画...
PHP实例开发源码—华丽的冒险留言本 php版.zip PHP实例开发源码—华丽的冒险留言本 php版.zip PHP实例开发源码—华丽的冒险留言本 php版.zip
安卓开发-超级华丽的仿QQ最新版本.zip
初中语文文摘社会有一种华丽的计谋叫“捧杀”
微软最华丽的PPT
很全的华丽金边 用来设计相框 网页 图片 做些 欧式风格的设计都不错哦 值得你收藏哦
用华丽的方式开发 MyUW portlet 的指南。 公共回购,但毫无歉意地专注于 my.wisc.edu 小心! 这是一个公共回购。 促进透明度和与同行 portlet 开发机构的协作是公开的。 但是,本指南毫无歉意地以 MyUW 为重点。 ...
十几个华丽酷炫的Android特效代码(提升用户体验)
设计师素材库华丽古典花纹矢量素材
iPhone华丽解锁 大家体验下 还是不错的
本书以C#作为开发语言,以.NET Framework 3.5作为开发平台,站在开发人员的视角,深入剖析了10个企业级应用程序的构建,内容涉及Windows Forms数据库应用程序、WPF华丽界面的多媒体软件、Web数据库应用程序,以及...
华丽的静态个人博客,支持在线预览。https://github.com/dvlp-org/karler_blog。如果可以,请给个star
ExtJS 是一个很不错的 Ajax 框架,可以用来开发带有华丽外观的富客户端应用,使得我们的 b/s 应用更加具有活力及生命力。ExtJS 是一个用 javascript 编写,与后台技术无关的前端 ajax 框架。因此,可以把 ExtJS 用在...
微软出品的 华丽文本编辑器 bend0.94 。
js华丽翻转焦点图片轮播公司首页banner大图
8.4 打造自己的数据库存储——SQLite存储方式 8.4.1 Android中对数据库操作 8.4.2 完整地操作数据库——日记本实例 8.5 我的数据你来用——ContentProvider介绍 8.5.1 初识ContentProvider 8.5.2 使用...