快速开发的要素

1. 好的编程语言

动态语言或者说可以把函数当成对象的语言,比如js,python(ruby,lisp应该也是,但我没有学习过), 一定程度上都会加速开发,通常情况下动态语言一句话搞定的事情,放在c#这样的语言可能需要一大堆的反射语句才能完成。

RoR的成功导致很多其他语言的模仿,比如groovy,然而java这种语言真的适合做类似RoR框架吗? 也可以这么问,为什么RoR的创造者为什么选择Ruby,而不是java, C#, php等? 

 

2. 框架的成熟程度

时间久的,文档多,遇到的问题从网上搜索到的可能也大。

我一直做.net, 后来为了在SAE上写个小程序,需要玩php, 再后来我决定选基于python的webpy框架作为今后的web开发语言,在遇到问题搜索时,两者对比很明显,php遇到的问题可以说都能找到很好的解决方案,而Webpy现成的答案比较少,通常都需要从各个相关的文章中琢磨出解决问题的方法。

 

3. 开源社区是否成熟

常用的功能是否都能在开源社区里找到相对完美、简单的解决方案

如果一个团队的人全部都是只接触过.net的开发人员,他们通常解决问题的思路比较窄,例如有些问题可能用memcached, hadoop可以轻松解决,然而团队里没人会linux,即使有人愿意尝试去学习开源类库,但可能因为最终部署原因而放弃。

 

4. 开发者对这门语言,以及开源方案的熟悉程度。

不熟悉就意味着需要查文档,转型的人也是。这个不解释了!软件开发中提倡“重复是可耻的!”,但如果一个新的语言你从来都没做过,第一次做的过程肯定遇到很多问题,这个肯定会遇到很多的问题。

 

5. 自动化脚本

项目初始代码自动生成,自动化测试、自动部署等等,linux的shell脚本真的是挺强大的,尤其是管道的应用。

 

6. 精英小团队

流水线上熟练工人和不熟练工人的效率差别不会太大,而信息产业绝对不是这样,高手的经验都是拒绝了一次次的重复后提炼出来好多能更加快速、自动化的方案的,因此在软件、互联网这块的技术领域,2个人差别大于几十倍的可能也是完全有的。

另一点,精英之间心领神会,很多时候不用通过太多的沟通也完全能够理解彼此的意思。

 

7. 决策者是否接受小版本、快迭代的做法

是一味的要求加入功能,知道这些功能全部做完之后才能上线,还是遵循一个固定的发布周期,例如2周发布一次,这2周内能做多少是多少?

我一直认为敏捷神马的,加起来的总时间可能比传统开发的还要多,但之所以采用敏捷,主要是保证不会出现东西做出来了,结果不是客户想要的!

 

8. 好的团队leader

主要发挥资源协调作用,产品原型-设计-html-架构设计-编码-测试-部署-运维-反馈-再改进等等

如果没有好的资源协调,很容易卡可block,有的忙的要死,有的在等别的资源,耗费不起啊。

 

因此,我不赞成黑客与画家中说的那样,自从用了某种比较酷的开发语言后,一切都快了。

 

posted @ 2011-10-21 19:27  高天蒲  阅读(1585)  评论(3编辑  收藏  举报
[url=http://t.sina.com.cn/1084588625?s=6uyXnP][img]http://service.t.sina.com.cn/widget/qmd/1084588625/a57ab42b/1.png[/img][/url]