创业型的软件公司,如何做项目管理呢
发布时间:2011-06-20 17:28:23 文章来源:www.iduyao.cn 采编人员:星星草
创业型的软件公司,怎么做项目管理呢?
诚心的请教。
------解决方案--------------------
既然你是在“敏捷开发”这个论坛里问,我就给你复制文档《访谈 Kent Beck:仅作必要的事情》先看看吧。
tensile: 能否谈谈XP 和UML 的关系
Kent Beck: XP是一个软件开发的社会(social)系统,UML是一个描述软件的标记法(notation)。你可以在XP中使用UML,但团队良好的进展并不需要许多文档,除了代码及测试外。
yhufo: XP 中的文档重要吗?需要写什么样的文档?
Kent Beck: 你要写的文档就是代码及测试。
superlong: XP 如何用在一个可视化项目中?
Kent Beck: XP程序员并不是不做视觉上的思考(think visually),他们只是一般不储存图片(picture)。
notyy: XP 可以解决什么问题?
Kent Beck: 当你有许多关于需求的不确定性,XP让你快速得到一个具体、运行中的系统,同时让你以一个相当稳定的速度(pace)修改。以这种方式你无须在开始之前知道所有的事。
yhufo: 但CRC 卡及故事--这些都不是文档。
Kent Beck: 你无须永远保存。你从CRC卡及故事获得内容,然后把他们丢掉。
joe_lee: XP 是一种递归过程(recursive process)吗?
Kent Beck: 是的,或者我可能说『不规则碎片形(fractal)』。以一年为期,描述你所想要的(故事)然后去做。以一分钟为期,描述你想要的(单元测试)然后去做(编写代码)。分解的不规则碎片形是经过相当的深思熟虑的(deliberate)。
taoxie: 你提到了单元测试。我同意rerun 所有的单元测试是合理的,那么rerun 所有的集成测试也是合理的吗?
Kent Beck: 如果你有适当的准备而且够快的话,你可以随时执行测试。
yhufo: 如果我们没有文档,我怎么知道怎样能控制软件中的变更呢?我想我们必须建立文档!
Kent Beck: 当你们说『控制变更』,我则说『鼓励变更(encourage change)』。控制来自测试、双人编程、大家坐在一起讨论及持续集成。XP对于受过良好训练的程序员运作得很好,但是如果目前不觉得有良好的训练,别担心。你的搭挡可以帮你,不然你的集成工作无法达成,你必须把你的代码丢弃。
dggh: 能谈谈xp practise games 吗?
Kent Beck: 我做过一个练习让人们描绘一个咖啡壶的图像。从这里显示有更好的game。在伦敦有人建造乐高(Lego)机器人。Joshua Kerievsky有一个团队写了一个剧本(电影的脚本)。
gigix: 我想我们必须先小心地设计。如果我们忽视了设计的重要性,XP(或重构)将不能对整个项目有改进。对此你如何看?
Kent Beck: 我就知道迟早要讨论这个。我,同样地,坚持我们需要小心地设计。我宁愿等待并且在我有一些经验后再做,而不愿依据猜测(speculation)做设计。前置设计(Up front design)是一种正向反馈的循环(positive feedback loop)。你越有经验,你越可以考虑前置设计,直到你完全无用(useless)。另一种使用设计经验的方式是等待你的好想法,直到这些想法显露出来,立即就可以用得上。
joe_lee: 如果没有文档,我们怎样维护软件?
Kent Beck: 你有两个非常有价值的文档-代码及测试。如果测试总是能够100%执行而且绝不会允许逆行(regress),你还需要什么?
yhufo: 在双人编程中,两个人应该经常变换角色吗?一天或两天,我是说多久换一次,一天或两天?
Kent Beck: 在比较大的团队中,每天变换(switch)2-4次。在一天之中我无法维持一个双人组6个小时以上,因为专注的程度太过激烈。
xlp223: 既然XP 没有专家,那XP leader 在程序员当中扮演什么角色,客户,经理?
Kent Beck: XP是有专家,但他们的角色并不像以前一样是固定的。专家的出现是由团队中的每一个人依据经验挑选出来的。促使这种专家的出现是管理者扮演的角色。
yhufo: 在双人编程中,当一个人编写代码时,另一个人在干什么?只是看和说话吗?
Kent Beck: 双人编程并不是看着别人编写代码。编写代码就像是在沟通。键盘每几分钟便传来传去。双人编程时,你们讨论相关的想法,试试一个,建议另一个测试,把你下一个想法画个草图,写成代码,做些重构等等,持续进行下去。
dggh: 如何处理“程序员很少接触客户”的情况?
Kent Beck: 我想这些接触一般运作得不是很好。这就是为什么我说XP是软件开发的社会系统。频繁地和其生活受你写的软件影响的人接触,这能使你重视它。
tensile: 软件开发的社会系统?
Kent Beck: 首先,所有的团队成员聚集坐在一个大房间内:程序员、管理者、客户、分析师、测试员、用户文档、交互设计。其次,“客户团队”(customer team)提出编程团队必须通过的验收测试(acceptance tests)。学习如何通过这些测试需要沟通。
skyin: 每个人都有自己的任务,那如何双人编程时如何分配任务呢?
Kent Beck: 今天早上我将与你共同做你的任务,下午你可以帮我做我的。
yhufo: 能否介绍一些XP 的工具?
Kent Beck: 我使用Eclipse作为Java工具,我真的很喜欢它。有时我也使用IntelliJ,还有,JUnit或它在其他语言的姊妹产品,在单元测试及建立验收测试架构时非常有帮助。
xlp223: 每对双人编程都有自己独特的风格和水平,重构怎样才能使它变得一致和平衡?and person or group to do refactoring need be arranged in addition.
Kent Beck: 合唱团中的人,每人都有自己的声调。他们是如何让这些声音和谐?他们先决定最重要的和声然后“以他们的方式”唱出。在程序员团队中也是同样的道理。团队中所有人的成功,比个人的闪耀更重要。
notyy: 安排一个“在场客户”(on-site customer)在某些情况下实在困难。
Kent Beck: 想办法找到一个,否则准备接受失败。旧的Taylorist 软件开发社会结构没有用了,要有新的社会结构。如果让软件开发运作成功是重要的,坐在一起是绝对关键的。如果想做好却不认为那是重要的,或许这个项目应该取消。
yhufo: 为什么XP 不需要文档!
Kent Beck: XP确切需要两种文档-代码及测试。如果你的团队觉得需要更多的文档,那么去做就是了。大多数的团队发现他们并不需要其他的内部(internal)文档。
taoxie: 你说客户注重合同型(Contract-style)的项目,我就碰到了这种情况。XP 怎样应用在套装软件产品开发中?
Kent Beck: 对于套装软件(shrink-wrap)开发公司而言,客户团队(行销、测试、可用性、客户服务)是比使用自制型(in-house)开发的公司要大。除此之外,大家都同意使用单一的需求序列(故事)可以让软件开发越来越平滑(smoothly)。
tooliu: 不介意解释一下WinDNA 和XP 的关系吧?
Kent Beck: XP是Extreme Programming,不是操作系统。
xlp223: 做重构的人或组需要额外安排吗?
Kent Beck: 设计是每一个人的责任。当我们坐在一起而我们看到需要重构的地方,我们就重构。如果你还需要去安排进度,那你就等得太久了。
notyy: 我们应该首先教育客户吗?
Kent Beck: 客户需要知道XP吗?绝对需要。他们是团队的一份子,因此他们需要知道团队如何运作。故事及验收测试是需要先教给他们的两个最重要的事情,然后是发行(release)(3-12个月)及迭代(iteration)(1-3周)的计划。
skyin: 看起来XP 更适合客户导向的应用软件,那其他类型的软件呢?
Kent Beck: 还有其他类型吗?如果没有客户,为什么要写这些软件?
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
菜鸟请教:RUP和敏捷的区别与联系
敏捷是迭代开发,RUP也是迭代开发,两者有什么区别与联系?有点混淆了。。。
------解决方案---------...
-
scrum works 中文乱码
scrum works 是否支持中文??
如果支持怎么设置呢?
------解决方案--------------------
看我微波去,里面有答...
-
想学软件架构设计,有什么好书推荐吗?
最近负责新项目的架构设计,发现无论是理论还是实践都严重缺乏,有什么好书推荐吗?充充电。谢谢!!
-...
-
关于测试驱动开发
我看敏捷开发不久,看到基本上都提到测试驱动开发,我一直不明白,如何测试、如何驱动?
请问高手能通过一个小小的例子...
-
急求,如何做的nightly-build
我需要做的一件事事情,是每天晚上,从服务器获取文件,然后编译,打包,部署到服务器上,接着跑测试脚本。
cle...
-
这是不是敏捷开发???
我们开发时,客户也只是大体了解要做什么东西,然后我们就开始做需求分析,设计,建模,编码开发。
在开发过程中,开发了...
-
封装变化后,我们能干什么?
我知道设计模式中把变化的和不变的分离,把变化分离出来,继承个抽象,而后在不变的代码中使用这个抽象,
但我...
-
敏捷,想说爱你不容易--从CMM向敏捷过渡的一点体会(欢迎大家讨论)
http://blog.csdn.net/ggokind/archive/2008/12/23/3591376.aspx
...
-
敏捷开发的定义
敏捷开发的定义???
大家是怎样理解敏捷开发的???
------解决方案--------------------
敏捷开发是对先进开发手段的统...
-
如何更好的设计程序功能,让其减少bug的出现?
如何更好的设计程序功能,让其减少bug的出现?比如我要做的软键盘,有以下2中思路,但选择那一...