它山之石可以攻玉! //注:本BLOG中标注“原创”的文章为本人版权所有,未经许可不得擅自使用,如有引用请注明作者“谷雨霖”。msn: cabinhome@sohu.com

[zt]IT项目开发的75条管理守则

上一篇 / 下一篇  2006-11-27 00:00:00 / 个人分类:经验分享

1. 你们的项目组使用源代码管理工具了么?
7WM)F#\D(]["y0
应该用。VSSCVSPVCSClearCaseCCC/HarvestFireFly都可以。我的选择是VSSITPUB个人空间 ?BFZ+L6Da,Q
ITPUB个人空间w&T%N1oRS
2.
你们的项目组使用缺陷管理系统了么?ITPUB个人空间[:qHZ)MGfX.df
应该用。ClearQuest太复杂,我的推荐是BugZilla
"vh,|0^tZ9]]r0

ITPUB个人空间/h;|1p8tA(r3^U l
3. 你们的测试组还在用Word写测试用例么?ITPUB个人空间1sJ5?s/Wo:t
不要用Word写测试用例(Test Case)。应该用一个专门的系统,可以是Test Manager,也可以是自己开发一个ASP.NET的小网站。主要目的是TrackBrowse
9C K!b7cOcGg@0ITPUB个人空间hm4|A%Z-E:f,A
4.
你们的项目组有没有建立一个门户网站?ITPUB个人空间xyfS#Mf6v:}+n/^
要有一个门户网站,用来放Contact InfoBaselined ScheduleNews等等。推荐Sharepoint Portal Server 2003来实现,15分钟就搞定。买不起SPS 2003可以用WSS (Windows Sharepoint Service)
"|fB-`w9v{YP^c~0
n(QrGr4N}$}8c-Tc05.
你们的项目组用了你能买到最好的工具么?
0] P"Jl X)n0
应该用尽量好的工具来工作。比如,应该用VS.NET而不是Notepad来写C#。用Notepad写程序多半只是一种炫耀。但也要考虑到经费,所以说是“你能买到最好的”。 ITPUB个人空间of1S J8_d&j2{

^b%F|m:e7m BM4fC06.
你们的程序员工作在安静的环境里么?
)i0QEA`gj0
需要安静环境。这点极端重要,而且要保证每个人的空间大于一定面积。
%b:{#uP8`1Q0ITPUB个人空间'a[FBc0@mj;D(?7^
7.
你们的员工每个人都有一部电话么?ITPUB个人空间t b!H2jN!jq(tC
需要每人一部电话。而且电话最好是带留言功能的。当然,上这么一套带留言电话系统开销不小。不过至少每人一部电话要有,千万别搞得经常有人站起来喊:“某某某电话”。《人件》里面就强烈谴责这种做法。
z6X-ZE+n*d^B0ITPUB个人空间lT%_%o!U+k"@c
8.
你们每个人都知道出了问题应该找谁么?
9cK;VdZ.b0
应该知道。任何一个Feature至少都应该有一个Owner,当然,Owner可以继续Dispatch给其他人。ITPUB个人空间*V1mZu$`'T6u
ITPUB个人空间&H w c$KWE
9.
你遇到过有人说“我以为…”么?ITPUB个人空间4l*r&G3OKxs
要消灭“我以为”。Never assume anything ITPUB个人空间 KS,p8|j7fw"v
ITPUB个人空间6UB1yW:Ya
10.
你们的项目组中所有的人都坐在一起么?
` Lp`L2Y)soV0
需要。我反对Virtual Team,也反对Dev在美国、Test在中国这种开发方式。能坐在一起就最好坐在一起,好处多得不得了。
4^ mg}5^^"Rk$~0
u @ A+J+t011.
你们的进度表是否反映最新开发进展情况?
}UWw,{)K#U0
应该反映。但是,应该用Baseline的方法来管理进度表:维护一份稳定的Schedule,再维护一份最新更改。Baseline的方法也应该用于其它的SpecBaseline是变更管理里面的一个重要手段。ITPUB个人空间l*j4nwo
ITPUB个人空间{HwbR
12.
你们的工作量是先由每个人自己估算的么?
3R9_p$~h0
应该让每个人自己估算。要从下而上估算工作量,而不是从上往下分派。除非有其他原因,比如政治任务工期固定等。
+P%k H M"MM0ITPUB个人空间P+ve9i ih2^K
13.
你们的开发人员从项目一开始就加班么?
#O/Z!m"wa.R"F|0
不要这样。不要一开始就搞疲劳战。从项目一开始就加班,只能说明项目进度不合理。当然,一些对日软件外包必须天天加班,那属于剥削的范畴。 ITPUB个人空间E a\^ RZ_
ITPUB个人空间#l6i@#^-R bh
14.
你们的项目计划中Buffer Time是加在每个小任务后面的么?
g*hz7B @@cy\0
不要。Buffer Time加在每个小任务后面,很容易轻易的就被消耗掉。Buffer Time要整段的加在一个Milestone或者checkpoint前面。 ITPUB个人空间h'x'|.xy4`
ITPUB个人空间8g+[!e#h'SM
15.
值得再多花一些时间,从95%做到100%好值得,非常值得。ITPUB个人空间z f8I$I{D
尤其当项目后期人困马乏的时候,要坚持。这会给产品带来质的区别。
v7A L2i2tt0H0ITPUB个人空间.k'Pv.R-? }w
16.
登记新缺陷时,是否写清了重现步骤?
z/S#M5e0XRV0
要。这属于DevTest之间的沟通手段。面对面沟通需要,详细填写Repro Steps也需要。 ITPUB个人空间3h5j2gFDI

6{asHO2P O6p017.
写新代码前会把已知缺陷解决么?要。每个人的缺陷不能超过10个或15个,否则必须先解决老的bug才能继续写新代码。 ITPUB个人空间*{DF1] q9dk S~q
ITPUB个人空间)B6v/@h-EN'@f
18.
你们对缺陷的轻重缓急有事先的约定么?
'R`w/XND0
必须有定义。Severity要分123,约定好:蓝屏和Data LostSev 1Function ErrorSev 2,界面上的算Sev 3。但这种约定可以根据产品质量现状适当进行调整。
)r b/_s'N Z fFO:J7D0ITPUB个人空间P k9e w^Vv2{
19.
你们对意见不一的缺陷有三国会议么?必须要有。要有一个明确的决策过程。这类似于CCB (Change Control Board)的概念。 ITPUB个人空间7q4M@&z&`#Kcj&u

a2V_ WIkB A })HG020.
所有的缺陷都是由登记的人最后关闭的么? ITPUB个人空间H/m$|'N;Z:J3n

aMe4OG w0_aF/u0Bug
应该由Opener关闭。Dev不能私自关闭Bug ITPUB个人空间vd}9{9y'o

U:@ _ GaU021.
你们的程序员厌恶修改老的代码么?
Q+B^1cx7f2r q!T0
厌恶是正常的。解决方法是组织Code Review,单独留出时间来。XP也是一个方法。
5P] pV~(~D7s*Vs0ITPUB个人空间x.cI;op
22.
你们项目组有Team Morale Activity么?ITPUB个人空间S~/jqA7x[~
每个月都要搞一次,吃饭、唱歌、Outing、打球、开卡丁车等等,一定要有。不要剩这些钱。
)@ `7})|(^e[`0
6N5Y,kg/b%B/M023.
你们项目组有自己的Logo么?
6n4Ob&cR.O'Fh0
要有自己的Logo。至少应该有自己的Codename ITPUB个人空间6XM|qyn
ITPUB个人空间\*x&h6l*oq
24.
你们的员工有印有公司LogoT-Shirt么?
DBVqd.D0
要有。能增强归属感。当然,T-Shirt要做的好看一些,最好用80支的棉来做。别没穿几次就破破烂烂的。ITPUB个人空间 q1hA.l'MH

a!L @M}-Gzq6u025.
总经理至少每月参加次项目组会议要的。ITPUB个人空间1H~3UWv i/}g
要让team member觉得高层关注这个项目。 ITPUB个人空间K7v@$~U6o

2m)~E.~EPb(Pc026.
你们是给每个Dev开一个分支么?ITPUB个人空间 ]uj)v6hnP
反对。Branch的管理以及Merge的工作量太大,而且容易出错。 ITPUB个人空间 W3Z+vUt%V'\
ITPUB个人空间%l8N!MGNv
27.
有人长期不Check-In代码么?ITPUB个人空间p6W}6S)i@C,W}
不可以。对大部分项目来说,最多两三天就应该Check-In ITPUB个人空间5h&\(S+U `&U*r
ITPUB个人空间6NLq'd;r(}7S[
28.
Check-In代码时都填写注释了么?
f.@&o_0R0
要写的,至少一两句话,比如“解决了Bug No.225”。如果往高处拔,这也算做“配置审计”的一部分。ITPUB个人空间P,byK+B:|
ITPUB个人空间g%U6rK C/T
29.
有没有设定每天Check-In的最后期限?ITPUB个人空间2o Q5Nt{ R0t
要的,要明确Check-In Deadline。否则会Build Break ITPUB个人空间7\z"`h&u5o)q K`
ITPUB个人空间D!mE:`@$f
30.
你们能把所有源码一下子编译成安装文件吗?
k;T,\ThDDU0
要的。这是每日编译(Daily Build)的基础。而且必须要能够做成自动的。 ITPUB个人空间F#B-Y)EC:],d `*k
ITPUB个人空间 Ws gyg8x
31.
你们的项目组做每日编译么?
-TS8\7V0@6[ C;C0
当然要做。有三样东西是软件项目/产品开发必备的:1. bug management; 2. source control; 3. daily build
;G9T!SKDDa|0
7B`v;V8~k-gi032.
你们公司有没有积累一个项目风险列表?ITPUB个人空间w6E/]4Y7nH$tK
要。Risk Inventory。否则,下个项目开始的时候,又只能拍脑袋分析Risk了。ITPUB个人空间RA:U;v.Plgt
ITPUB个人空间aoY0j'i-YX"Vu A
33.
设计越简单越好越简单越好。
$s+m,h'eo8J0yO m0
设计时候多一句话,将来可能就带来无穷无尽的烦恼。应该从一开始就勇敢的砍。这叫scope management
-ZVA,vJ av0ITPUB个人空间\4c)[2RM&q5g
34.
尽量利用现有的产品、技术、代码千万别什么东西都自己CodingBizTalkSharepoint就是最好的例子,有这两个作为基础,可以把起点提高很多。或者可以尽量多用现成的Control之类的。或者尽量用XML,而不是自己去Parse一个文本文件;尽量用RegExp,而不是自己从头操作字符串,等等等等。这就是“软件复用”的体现。 ITPUB个人空间9SG WK^a l"i.A

7}1wJ!E-p"EMhh035.
你们会隔一段时间就停下来夯实代码么?
j;G,wl2X$I-J"X0
要。最好一个月左右一次。传言去年年初Windows组在Stevb的命令下停过一个月增强安全。Btw,“夯”这个字念“hang”,第一声。
7c.n$I lA8Me#t%{(JM0ITPUB个人空间 d+s5gF2hh8m ZGb
36.
你们的项目组每个人都写Daily Report么?
i:i)\7?Cc$uk0
要写。五分钟就够了,写10句话左右,告诉自己小组的人今天我干了什么。一则为了沟通,二则鞭策自己(要是游手好闲一天,自己都会不好意思写的)。ITPUB个人空间Oc.hx%d2e.U7Y4?X
ITPUB个人空间5GN8P;p)L D
37.
你们的项目经理会发出Weekly Report么?ITPUB个人空间M4d3\4C3A8s.k
要。也是为了沟通。内容包括目前进度,可能的风险,质量状况,各种工作的进展等。ITPUB个人空间(W8@ wLS^;{b
ITPUB个人空间rP e!K&p ?
38.
你们项目组是否至少每周全体开会一次?
$n[ FT(P(?X0
要。一定要开会。程序员讨厌开会,但每个礼拜开会时间加起来至少应该有4小时。包括team meeting, spec review meeting, bug triage meeting。千万别大家闷头写code
H*f$s0gm0
NF]$G-E039.
你们项目组的会议、讨论都有记录么?
E7st Wn!J4r F0
会前发meeting requestagenda,会中有人负责主持和记录,会后有人负责发meeting minutes,这都是effective meeting的要点。而且,每个会议都要形成agreementsaction items
s#K x"sS0ITPUB个人空间1NT3F qu m&`?+H H
40.
其他部门知道你们项目组在干什么么?ITPUB个人空间AdJ%CM[/Ym L
要发一些Newsflash给整个大组织。Show your teams value。否则,当你坐在电梯里面,其他部门的人问:“你们在干嘛”,你回答“ABC项目”的时候,别人全然不知,那种感觉不太好。 ITPUB个人空间m+jzu#C9}{@ n,L
ITPUB个人空间 A&nG5P:@&\~1~;_
41.
通过Email进行所有正式沟通
Sr x _/\"V*l0
B3ca*Z6YeP-wf8Yt0Email
的好处是免得抵赖。但也要避免矫枉过正,最好的方法是先用电话和当面说,然后Email来确认。
(CE P4X;o0
5hR0VrA~042.
为项目组建立多个Mailing Group
X { ^,~\:P4c.Bu0
如果在AD+Exchange里面,就建Distribution List。比如,我会建ABC Project Core TeamABC Project Dev TeamABC Project All TestersABC Project Extended Team等等。这样发起Email来方便,而且能让该收到email的人都收到、不该收到不被骚扰。 ITPUB个人空间m Bx.H/z%de(gQ

P9XQuS:A SV043.
每个人都知道哪里可以找到全部的文档么?ITPUB个人空间na'W^)pdVq
应该每个人都知道。这叫做知识管理(Knowledge Management)。最方便的就是把文档放在一个集中的File Share,更好的方法是用Sharepoint
:v2sLHEP/n6s_~0
`[%|9_2uJmu044.
你做决定、做变化时,告诉大家原因了么?
E0u1Eb `_Cy4p0
要告诉大家原因。Empower team member的手段之一是提供足够的information,这是MSF一开篇的几个原则之一。的确如此,tell me why是人之常情,tell me why了才能有understanding。中国人做事喜欢搞限制,限制信息,似乎能够看到某一份文件的人就是有身份的人。大错特错。权威、权力,不在于是不是能access information/data,而在于是不是掌握资源。
j'AV"}?:X\![ UQ5k0ITPUB个人空间+m Yd nnl)p6l
45. Stay agile and expect change
要这样。ITPUB个人空间2YT[$?v9X x5l
需求一定会变的,已经写好的代码一定会被要求修改的。做好心理准备,对change不要抗拒,而是expect change ITPUB个人空间(a,m}b MfA)W$K
ITPUB个人空间G S&K G[1FO(g|(}
46.
你们有没有专职的软件测试人员?ITPUB个人空间S\buJP@
要有专职测试。如果人手不够,可以peer test,交换了测试。千万别自己测试自己的。 ITPUB个人空间L:l|#nJUr
ITPUB个人空间)I-M-z'X q6jW
47.
你们的测试有一份总的计划来规定做什么和怎么做么?这就是Test Plan。要不要做性能测试?要不要做Usability测试?什么时候开始测试性能?测试通过的标准是什么?用什么手段,自动的还是手动的?这些问题需要用Test Plan来回答。
*Y {B1Y6Zf"\(ui&C0
{N6NtdJeW4wT048.
你是先写Test Case然后再测试的么?ITPUB个人空间.p!x c\s5\
应该如此。应该先设计再编程、先test case再测试。当然,事情是灵活的。我有时候在做第一遍测试的同时补上test case。至于先test case再开发,我不喜欢,因为不习惯,太麻烦,至于别人推荐,那试试看也无妨。 ITPUB个人空间_)S6wtG3@w'Gn
ITPUB个人空间h,Tt{ w~
49.
你是否会为各种输入组合创建测试用例?
t#Mh UUFV]:R0
不要,不要搞边界条件组合。当心组合爆炸。有很多test case工具能够自动生成各种边界条件的组合——但要想清楚,你是否有时间去运行那么多test case ITPUB个人空间)j a#tg)U0kE

FK2SWQh050.
你们的程序员能看到测试用例么?
b8O3U?^p"{0c \P0
要。让Dev看到Test Case吧。我们都是为了同一个目的走到一起来的:提高质量。ITPUB个人空间Y4O}w#]q*^
ITPUB个人空间^#u'gG%x'DH
51.
你们是否随便抓一些人来做易用性测试?
V rr;^2K j.Zoh0
要这么做。自己看自己写的程序界面,怎么看都是顺眼的。这叫做审美疲劳——臭的看久了也就不臭了,不方便的永久了也就习惯了。 ITPUB个人空间7oY2rXU-Q!Po)l]

&g7d_D:m\%`1o#ki052.
你对自动测试的期望正确么?
Nt)w&_ v._b0
别期望太高。依我看,除了性能测试以外,还是暂时先忘掉“自动测试”吧,忘掉WinRunnerLoadRunner吧。对于国内的软件测试的现状来说,只能“矫枉必须过正”了。
km(SPF/s0
{[ Y"fj+I(O [#l053.
你们的性能测试是等所有功能都开发完才做的么?
f/NK(|.B b5N7`%DX0
不能这样。性能测试不能被归到所谓的“系统测试”阶段。早测早改正,早死早升天。 ITPUB个人空间(d\c,[)p

h5N0tut S]hI0fvW054.
你注意到测试中的杀虫剂效应了么?
\*x0`$O)Y8e&ivE4s)C0
虫子有抗药性,Bug也有。发现的新Bug越来越少是正常的。这时候,最好大家交换一下测试的area,或者用用看其他工具和手法,就又会发现一些新bug了。ITPUB个人空间XK1P qFxp
ITPUB个人空间|LVw-K$u pX^ Y
55.
你们项目组中有人能说出产品的当前整体质量情况么?ITPUB个人空间/]dz;dEu?
要有。当老板问起这个产品目前质量如何,Test Lead/Manager应该负责回答。 ITPUB个人空间'[F!\)_;Iv;T
ITPUB个人空间 N~0yf`%tMNM*K
56.
你们有单元测试么?ITPUB个人空间&|2enH8X,L]M|
单元测试要有的。不过没有单元测试也不是不可以,我做过没有单元测试的项目,也做成功了——可能是侥幸,可能是大家都是熟手的关系。还是那句话,软件工程是非常实践、非常工程、非常灵活的一套方法,某些方法在某些情况下会比另一些方法好,反之亦然。
R4s:e~$Ms*dDXb0
3V$E#g%F[:t,t057.
你们的程序员是写完代码就扔过墙的么?ITPUB个人空间 hA)s)i$S7N)x(r-k A
大忌。写好一块程序以后,即便不做单元测试,也应该自己先跑一跑。虽然有了专门的测试人员,做开发的人也不可以一点测试都不做。微软还有Test Release Document的说法,程序太烂的话,测试有权踢回去。
/[V\,L F9h0
:H#{C9] @HC|T(y058.
你们的程序中所有的函数都有输入检查么?ITPUB个人空间 ]4I'nA4V
不要。虽然说做输入检查是write secure code的要点,但不要做太多的输入检查,有些内部函数之间的参数传递就不必检查输入了,省点功夫。同样的道理,未必要给所有的函数都写注释。写一部分主要的就够了。ITPUB个人空间$j;Ax)T!T,g h*x
ITPUB个人空间|~_(o K Z7G.[
59.
产品有统一的错误处理机制和报错界面么?ITPUB个人空间{T([O'ME [
要有。最好能有统一的error message,然后每个error message都带一个error number。这样,用户可以自己根据error numberuser manual里面去看看错误的具体描述和可能原因,就像SQL Server的错误那样。同样,ASP.NET也要有统一的Exception处理。可以参考有关的Application Block
C[E ~ ~'i m_%e0ITPUB个人空间$|2V @?QKj
60.
你们有统一的代码书写规范么?
w\&R:r b0
要有。Code Convention很多,搞一份来发给大家就可以了。当然,要是有FxCop这种工具来检查代码就更好了。 ITPUB个人空间fl%Co6ATb
ITPUB个人空间'x/G5^ Y&i+X7A%@\@
61.
你们的每个人都了解项目的商业意义么?
:Q7?4C0kB6@"E8o0
要。这是Vision的意思。别把项目只当成工作。有时候要想着自己是在为中国某某行业的信息化作先驱者,或者时不时的告诉team member,这个项目能够为某某某国家部门每年节省多少多少百万的纳税人的钱,这样就有动力了。平凡的事情也是可以有个崇高的目标的。ITPUB个人空间$ms V-E)rL
ITPUB个人空间pk`pqu9u
62.
产品各部分的界面和操作习惯一致么?
[Z _HxLh6i0
要这样。要让用户觉得整个程序好像是一个人写出来的那样。
P/}6}9k jq^0
R:R/U?)i2CH5^ m0^063.
有可以作为宣传亮点的Cool Feature么?ITPUB个人空间TB%Uxb)}-E
要。这是增强团队凝聚力、信心的。而且,“一俊遮百丑”,有亮点就可以掩盖一些问题。这样,对于客户来说,会感觉产品从质量角度来说还是acceptable的。或者说,cool feature或者说亮点可以作为质量问题的一个事后弥补措施。
4i\t:_mF0
z@~Z{AcE064.
尽可能缩短产品的启动时间要这样。
M][%v[t~|0

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-10-16  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 29806
  • 日志数: 709
  • 文件数: 6
  • 书签数: 4
  • 建立时间: 2008-01-14
  • 更新时间: 2008-10-13

RSS订阅

Open Toolbar