转载 http://raychase.iteye.com/blog/1774065。
惊叹原创的天才总结 转已做备忘。。。
进度驱动开发(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个可配置的项都不好意思自说产品是自己做的。
- 评审装逼:体现自己超强无比的全面性和洞察力,请参阅我曾经写过的一些牛叉无比的评审方式中,“到处放炮型评审”。
总而言之,软件工程的每一个环节都需要达到足够的装逼值,才能进入下一环节。装逼是指导软件开发的重要思想。
相关推荐
首先,3D开发库是一种预编写好的软件组件,它们提供了用于生成、操作和展示3D图形的工具和API(应用程序接口)。这些库能够帮助开发者节省时间,因为他们不必从零开始编写所有底层的数学计算和图形处理代码。例如,...
在电脑使用过程中,有时会遇到声卡问题,特别是在笔记本上,声卡无声音并显示出惊叹号的情况尤为常见。这通常是由于驱动程序问题导致的。在本文中,我们将深入探讨这个问题,以及如何通过安装特定的更新文件来解决它...
Qt 是一个跨平台的应用开发框架,旨在为桌面、嵌入式和移动平台创建具有令人惊叹的用户界面的优秀软件应用。 它为开发人员提供了一套优秀的工具,用于设计和构建优秀的应用,而不必担心平台依赖性。在本书中,我们将...
为了帮助开发者更好地利用这款设备,HTC发布了对应的开发工具SDK,即我们今天讨论的重点。本篇文章将深入探讨这个SDK,以及它如何助力Unity平台上的VR应用开发。 首先,HTC Vive Focus Plus VR一体机开发工具SDK是...
总结来说,HDevelop以其强大的功能、易用的界面和广泛的应用范围,成为图像处理和计算机视觉开发的首选工具。对于希望在这一领域探索创新的人来说,掌握HDevelop无疑会极大地提升工作效率和解决问题的能力。通过深入...
OpenGL开发库是计算机图形学领域广泛使用的开源图形库,它为开发者提供了丰富的接口,用于创建交互式的2D和3D图形。OpenGL库是跨平台的,可以在多种操作系统上运行,如Windows、Linux、macOS等。它不依赖于特定的...
游戏开发教程系列书籍整理:iOS、Android、Unity3d、Flash网页游戏与移动应用、端游,这是一份详尽的资源集合,旨在为游戏开发者提供全面的学习材料,覆盖了多个平台和技术领域。以下是根据标题、描述以及部分提及的...
RenderMonkey是一款由ATI(现AMD)开发的图形着色器开发工具,专为3D图形应用程序设计,旨在帮助开发者充分利用...通过掌握RenderMonkey的使用,开发者可以更好地利用现代图形硬件的功能,创造令人惊叹的实时图形效果。
最后,第九章介绍了一款增强现实浏览器的开发,探索如何将增强现实技术应用于网页浏览,为用户提供全新的交互方式。 #### 结语:迈向未来,掌握AR技术 总之,《安卓增强现实开发教程》不仅是一本详实的技术指南,...
### J2ME的3D开发教程:探索移动设备上的三维世界 #### 引言:步入移动3D开发的殿堂 随着科技的飞跃发展,移动设备的功能早已超越了基本的通讯需求,它们成为了集娱乐、多媒体体验及游戏于一体的综合性平台。其中...
《Visual C++ DirectX 3D游戏开发实例教程》是一本专为希望利用Microsoft的Visual C++和DirectX库进行3D游戏开发的学习者所编写的教程。教程涵盖了从基础概念到高级技术,旨在帮助读者掌握3D游戏编程的核心技能。 ...
速算天才的故事向我们展示了人类大脑在处理数学问题时的潜力,同时也揭示了通过特定策略和技巧,复杂的计算可以变得更为简单。 在爱因斯坦的例子中,他运用了一种巧妙的速算技巧。当面对2974×2926这样的乘法问题时...
通过《THREE.JS开发指南》的学习,开发者不仅可以掌握three.js的基本用法,还能深入了解3D图形学原理,从而在网页上创造出令人惊叹的3D互动体验。无论你是初学者还是有一定经验的开发者,这本书都将是你探索three.js...
此外,Cocoa框架本身也是使用Objective-C编写的,因此使用Objective-C进行开发能够更好地与框架集成,利用框架提供的所有功能。 ##### 3.3 语言特性:消息传递 Objective-C中的核心概念之一是消息传递。在...
Cesium是一个强大的开源JavaScript库,专为Web上的地理空间应用设计,它提供了丰富的三维地球渲染功能,使得开发者能够创建出令人惊叹的3D地图和地球应用程序。 首先,了解Cesium的基本概念至关重要。Cesium的核心...
”在linux中有着很多让你惊叹的妙用。本文就来细数那些“!”的神奇用法。下面话不多说了,来一起看看详细的介绍吧 执行上一条命令 例如,在执行完上面一条命令后,可以使用下面的方式再次执行上一条命令: $ where...
Direct3D 9 (简称D3D9) 是微软为Windows平台开发的一种图形应用程序接口(API),用于处理复杂的计算机图形任务,特别是在游戏开发和专业应用领域。D3D9SDK是Direct3D 9的软件开发工具包,包含了开发者需要的所有...
js彩色圈圈,动态炫彩放缩旋转绽放,惊叹效果,前端小白必看! js彩色圈圈,动态炫彩放缩旋转绽放,惊叹效果,前端小白必看! js彩色圈圈,动态炫彩放缩旋转绽放,惊叹效果,前端小白必看! js彩色圈圈,动态炫彩...
《Three.js开发指南》是针对WebGL库Three.js的一本详尽教程,旨在帮助开发者深入理解和运用这个强大的3D图形库。Three.js是JavaScript的一个开源项目,它为Web浏览器提供了简单易用的接口,用于创建复杂的3D场景、...