敏捷开发系列-3-我怎么开发软件项目

编程/开发
369
0
0
2022-11-11
标签   敏捷开发

有渔老师从事软件开发已经十多年了,记得2004年参加全国系统分析考试时,我选的论文是关于敏捷开发的。其实在2001年左右,在网上就有极限开发,XP开发之类的文章,敏捷开发其实早就不是新鲜事了。有渔老师2004年就是靠那篇论文,通过了考试(全省总共通过9人)。今天,我就根据自己多年的体会,来谈谈怎么开发软件项目?

1.重点突破

任何一个软件项目,一定有它的业务重点;你开始做项目时,一定要先揪出重点,先解决它。这样做有什么好处呢?1是能快速看到想要的效果。比如淘宝网,最初是从国外花几千块买的,它最初就完成一个开店,商品展示,用户下单,这么简单的几个功能。2是先把钉子问题攻破,及早验证项目的可行性。不然做到后来,发现一个技术难点根本没法实现,最后被迫全盘否定。

2.快速迭代

最近我看到网上有张图挺流行,就是你要造一辆汽车,该怎么造?先是造出一辆自行车,然后再造出一辆电瓶车,然后再造出一辆简单的4轮车,最后再慢慢打造这辆4轮车,变成你想要的汽车。

千万不要先焊接车体,然后装4个轮子,装车壳,再装发动机,接线路,直接就把车给造出来了。为什么呢?1是这么做,周期会非常长,用户会很长时间看不到效果。网上有篇腾讯原CTO张志东的文章,说不要总想着“憋大招”,并委婉指出微信为了憋大招,忍了一年才发布新版本,有些功能竟然让用户等一年。人家大公司家大业大,时间是拖得起的。但一般小公司,千万不要这么“憋大招”,还是赶紧敏捷吧,先尽快做个能完成功能需求的产品出来。2是市场在变,当心在你闷头搞研发时,外面需求有变,因为客户自己都不清楚自己的需求的。所以,要先做个简单的v1版,然后上线,让市场和客户来检验这个v1版是否合理。然后慢慢修补,添加新功能,逐步迭代成适合市场需求的产品。

3.早日上线

很多人都认为自己的创意很重要,是个宝,怕产品早上线了,被抄袭。我说吧,别天真了,真当你是火星人呢。其实你在做的时候,外面很多人都早在做了。你要做的不是保密,而是早日接触这个市场,不断改进你的产品。不怕产品被抄袭,就怕没人抄,没人做这个市场。何况,在BAT独大的今天,任何互联网产品它们都能快速模仿出来,你是不是永远不用上线了?

当年马云做电商时,国外早就有类似网站了,而且国内做的也不是他马云一家,据说有几千家呢。所以,一定要早上线,早日运营,早日接受市场检验。

4.少开大会,多做讨论

我挺讨厌开会的,我在带团队时就很少开会。我很赞成比尔.盖茨说的,能站着说的,就不要坐着说;能不开会的,尽量不要开会。我在项目实践中,经常有不定期的讨论,现场指导。发现问题,马上就在白板上写下来,等合适的时候大家一起讨论。

平时准备几本小贴纸,2个盒子。1个盒子放新发现的问题,1个盒子放已经解决的问题。小贴纸分红,绿,黄3种颜色,红色表示紧急重要,黄色表示重要不紧急,绿色表示一般问题。当然,我们也采用软件来管理项目的,比如redmine等。

5.多采用成熟的套路,框架

软件开发,很多时候是个拷贝粘贴的过程,一个项目中,往往有很多重复的代码。所以,开发项目时,能用框架一定要用框架,千万不要自己去造轮子。我们应该以项目为驱动,而不是以技术为驱动。记住,技术永远为市场服务。没市场,没现金流,你的技术再牛逼,也没用。还记得以前的朗讯吗?那时可是非常好的公司,很多毕业生争着想去,但最后被收购了,为什么?他们的技术很牛逼,但是没适应市场。

能直接拿来用,就拿;能买来解决就买。不要陷入技术的泥潭之中。在开发时,多采用成熟的框架,成熟的套路。开发速度一定要快,前期不能纠结于细节。记住,我们是在搞开发,而不是搞研究。

6.怎么看待测试驱动开发

TDD,有段时间还是挺火,说是要先写测试代码,再写逻辑代码。网上还有篇清华退学博士王垠的文章,说他啊Google实习时,每次他写完代码,他的主管就说:please write your testing codes。文中王垠也对这种TDD开发方式提出批判。我在项目实践中,也是否定这种TDD开发方式的,至少我认为它不适合中国国情。人家Google可能是做产品,他们财大气粗,有时间和金钱让你去试错,所以他们或许是适合采用TDD的。

我怎么做TDD?我一般一个项目会重构3次左右,第1次是实现最简单的功能,第2次是修补完善系统,第3次是细化、抽象系统。一般我做完这3次重构后,这个项目的需求已经非常清晰,接口也已经非常明确。这时,我就会开始写相关的测试代码。否则,你一开始就写测试代码,那么项目完成就会遥遥无期,而且到后来,你前面写的测试代码也会变成无效,做一堆无用功。

今天就写到这里了,下次我再来讲讲敏捷开发工具的使用。一定要用工具来规范程序员的行为,而不是空洞的言语。