作者dorgonman (dorgonman)
看板Soft_Job
标题[心得]软体专案管理导入心得
时间Mon Apr 3 19:04:21 2017
前段时间换工作到新公司,发现新公司内部完全没有任何的专案管理流程。为了说服老板导入软体专案管理以及建立好管理体制的好处,因此写了下面这篇文章。
虽然我的观点不一定正确,但这篇文章是我思索了好几天的结果。
若有任何指教,欢迎一起讨论 :)
部落格版本:
http://dorgon.horizon-studio.net/archives/747
=============本文开始=================
最近陆陆续续的花了一些时间导入专案软体开发工具跟流程进到现在的公司中,我想就藉由这次的机会来描述我想像中一个软体专案应该要有的体制。当然,这些都是基於我过去在其他公司参与游戏开发专案所得出的结论,或许很多并不是最佳解,但我想里面应该有一些可以参考的观点。
基本上,我所认为一个好的软体专案开发体制需要能解决以下这三个主要的问题:
一、工作要能够连续,不要轻易的被打断:尤其是当一个人才刚进入工作的状态却被其他的临时事项或沟通所打断时,要再重新进入原本的任务内容所耗费的时间与心神劳力在无形之中都是个浪费。
二、任务内容要能够有效传达:由於软体开发在本质上复杂与不可见的特性,很多时候口头上所讨论的内容每个人所理解的都不尽相同。又尤其开发过程中肯定会有不少任务内容展开,而开发人员肯定是一件一件的对於这些任务进行消化。而在这期间,软体需求的各种修改与追加其实会是一种常态,特别是对於新创公司而言,要如何让这些任务内容有效的传达到所有相关的参与者身上,而不是藉由开会来占用人员宝贵的开发时间,则是一件软体专案管理上必须要思考的议题。
三、软体设计过程要能够追踪:软体开发不同於其他产业,它很难用任何量化的指标去评估。公司的价值基本上就是围绕在里面成员的技能与组成,因此,要如何将开发经验传承下去则是每个软体公司都会面临到的挑战。这点在程式人员中通常都是使用版本控制软体(如Git),但只有这个是远远不够的。程式码无法体现想要达成的使用者经验以及其他各种功能面上的决策与情境,因此如何为这些东西提供一个互相参照的机制,则会直接影响到公司的体质。体质好的公司,这些开发经验是要能有系统的累积下来的。人员若能够藉由这个机制而能简单且快速的存取到跟手
边任务相关的资讯,则能够大大的提升软体开发与维护的效率。
其实,上面这些问题在本质上都是怎麽「沟通」。要怎麽让这件事更有效率的被执行,其实在软体界中有一门叫「软体工程」的理论专门在探讨相关专案管理的开发议题,从各种从上千人参与的软体开发专案到十人以下的小团队都有提出一些方法论来解决各种软体开发上所会面临到的情境。其中一套被称作agile的方法论普遍被世界上各个开发团队所采用,其核心思想便是藉由每天不断的沟通、频繁的交付版本来快速的适应需求的变化。
然而,沟通是有成本的,因为沟通需求而被中断的开发时间意味着时间的浪费。因此在agile中的 「scrum」框架下才会有每天的站立会议的出现。藉由每天在进入工作之前跟成员间互相分享彼此在任务上的状况与需要协助的地方,以解决当面互相沟通的需求。
当然,就如同人月神话一书中所提到:「没有银弹」──软体开发并没有一套完美的方法论可以完美的套用。各个软体专案管理必须要根据人员的组成与专案的特质进行不同的管理流程,一切都要以如何进行有效与简洁的沟通为基础来进行发展。
基於上面的需求,市面上其实也已经有几套专案软体系统可以用来协助我们减轻成员间沟通的负担。
其中最有名的是jira(
https://www.atlassian.com/software/jira ),它是目前公认做的最好的专案软体管理工具,只是如果要完整的使用该公司的方案的话,在价格上会有些昂贵。
再来就是redmine(
http://www.redmine.org/ ),由於这套解决方案是免费的,因此在市场上占有不小的份量。只不过我个人用过的感觉是缺乏了不少关键性的整合能力,而且server必须要自己架设,适合有专门资讯人员在管理的团队。
接下来便是微软的vsts(
https://www.visualstudio.com/team-services/ ),由於其完整度还蛮高的,各种整合跟服务都很不错,而且5人以下免费,git跟git lfs的空间无上限,因此作为startup使用的专案软体管理工具是蛮适合的。
另外也有不少小团队采用Trello(
https://trello.com/ ),只是我觉得这套系统作为个人使用的任务管理工具虽然还蛮完美的,但当团队成员扩张到5个人以上的时候就会开始显得有些零乱,到10个人以上时基本上就会呈现一种无法管理的状态。
当然,除了使用专案管理系统之外,还是会有即时沟通的需求。基本上,市面上的专案管理系统会在每天汇整当天的任务资讯并寄到你的email,但若我们在专案管理上的任何更动或任务的指派都能够即时通知到相关人员的话,那麽团队就能够更敏捷的去处理各种突发状况。
通常大部份的人想到的都会是建立一个line或Skype群组并手动的通知对方相关的任务变更,但「手动」这件事其实是一件劳心劳力的事,若能够自动化的话该有多好?而且建立line或skype群组意味着公司需要再去寻问员工私下个人的帐号资讯,这对於一些重要资讯的控管与流程的制度化其实是不好的。
这就是为何市面上会有slack、hipchat或microsoft teams……这些群组聊天软体出现,它们不仅仅跟专案软体系统有一些自动化机制上的整合,更重要的是如果这们软体是直接跟公司的email帐号绑在一起,就能够让员工们做到公私分离,在公事上分享相关机密资讯时就不会有太多的疑虑。
最後,根据agile的精神,我们必须要频繁的交付版本以达到快速适合需求变更。但交付版本这件事其实是一件劳心劳力的事,若是每几天都要缴交一个版本的话,那麽就会必须要配置一个工程师整天都在做这件事。这其实也是一种浪费,若是这件事也能够自动化的话该有多好?
其实所谓的持续集成(Continuous Integration)就是在处理这件事。基本上要做的事情就是一套自动化建置与布署的流程,撰写自动化的测试程式以确保基本的软体质量,并在每天晚上自动执行这些自动化出版的脚本。其中这套持续集成系统最有名的是jenkins(
https://jenkins.io/
)。这套流程虽然一开始的建置需要花费一些时间,但是当整个机制完成之後,团队成员每天能够拿到一个最新的版本以检视其前一天的工作成果,而且最大的好处是能够让各种潜在的议题在软体实作的初期就浮现出来。一个好的CI流程能够体现软体专案的心跳声,若是我们能够越早倾听出专案中各种潜在的病症,那麽便能让我们後期专案的开发与维护成本降至最低。
--
Sent from my Windows
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 219.70.222.43
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1491217470.A.FD6.html
1F:→ pttworld: 体制那边讲的比较偏维运角度,第三点通常是用wiki like 04/03 19:23
2F:→ pttworld: 的系统。 04/03 19:23
3F:→ pttworld: 第三点谈追踪是你说的redmine或还有bugzilla这类的,但 04/03 19:26
4F:→ pttworld: 内文指的经验传承是偏知识性的。 04/03 19:26
5F:推 hipocritos: 第三点bbs字跑掉了 04/03 19:47
※ 编辑: dorgonman (219.70.222.43), 04/03/2017 19:56:28
6F:→ dorgonman: 修好了,不太习惯bbs操作 04/03 19:57
7F:推 atpx: 好文, 建议可多强调时程的可控性与软体品质, 老板只想听这个 04/03 20:16
8F:推 sing10407: 其实最难的是要怎麽开票、谁收票、谁催票。要工程师 04/03 20:21
9F:→ sing10407: 自动去用你开的专案管理平台很难的 04/03 20:22
10F:推 sing10407: 然後PM怎麽去画WBS时程预估给老板也很麻烦 04/03 20:24
11F:→ dorgonman: 至少现在我少了很多临时讨论事项,可以专心的写code :) 04/03 20:27
12F:推 jj0321: 想为新公司导入软体管理流程+1 谢分享! 04/03 20:57
13F:→ Lordaeron: 用了agile + Jira = 天下无敌了. 君不见delphi 04/03 21:50
14F:→ Lordaeron: 的bug 之多. 04/03 21:50
15F:推 abccbaandy: 可惜搞这麽多都比不上老板一句:我明天就要 04/04 01:34
16F:推 johnny94: 你们写文件吗? 04/04 07:49
在我主推并导入vsts後,目前团队中的成员已经慢慢的开始会用开票的方式来指派任务了
之前是每想到一个想做的东西就直接跟跑过来问我能不能做
每次写code写到一半一直被打断实在很不爽
17F:推 maxqq: 通常专案管理是要整个团队都有想法,你说服老板没用 04/04 07:50
18F:→ maxqq: 这是整个 team 的问题,还是你是 CTO 可以决定要怎麽做? 04/04 07:51
虽然没有CTO这个位置,但我是第一个加入公司的软体工程师
基本上我们是新创公司小团队,但就是因为小,所以我现在推动这些事没什麽阻力
19F:→ maxqq: 台湾 team 都有的毛病,当然能掌握就等於团队整合成功 04/04 07:52
20F:→ maxqq: 讲错,多数软体 team 都有的毛病 04/04 07:52
21F:→ maxqq: 我到每个 team 都遇到这个问题,试图解决团队问题,最後 04/04 07:54
22F:→ maxqq: 都失败,如果只有你一个人再用,变成你就是小组的秘书 04/04 07:55
23F:→ maxqq: 为了某项不合理的任务,然後在那边上下争论 04/04 07:55
24F:→ maxqq: 最後死的都是这种积极态度的有心人 04/04 07:55
25F:→ maxqq: 出张嘴的永远不知道自己该负的责任 04/04 07:56
26F:→ maxqq: 因为他们不懂量化时间与自己嘴炮的能量 04/04 07:56
27F:→ maxqq: 懒得学习就交给别人学习<---不晓得就透露出自己的情绪化 XD 04/04 07:57
28F:→ maxqq: 不小心 04/04 07:58
29F:推 johnny94: 楼上完全说中现在工作的窘境 04/04 08:19
30F:→ johnny94: 那种人在嘴炮出他们解决方案时完全没经过任何考虑,随便 04/04 08:24
31F:→ johnny94: 在网路上看一看就认为应该要这样做,完全没考虑合适度, 04/04 08:24
32F:→ johnny94: 最後就是严重拖垮进度,而且还不知道问题 04/04 08:24
※ 编辑: dorgonman (219.70.222.43), 04/04/2017 08:54:37
33F:推 prag222: 别导假scrum开发速度就快很多了 04/04 18:55
34F:推 Hevak: 想听一下所谓的假scrum大概有什麽样的特徵@@ 04/04 21:31
35F:→ ah7675: 就是讲自已在run scrum 04/04 22:54
36F:→ ah7675: 三不五时出现"因为scrum" "scrum就是这样" 之类的字句 04/04 22:55
37F:→ dorgonman: 我觉得跑scrum不能沦为型式,如果变成罚站会议就没有意 04/04 23:07
38F:→ dorgonman: 义了。重点是有没有真正的沟通到 04/04 23:07
39F:→ manaup: 需要刻意导入专案管理和强调沟通的团队 基本不会成功 04/04 23:30
40F:→ dorgonman: @manaup 当你一天到晚老板跟pm跑来跟你说要追加什麽功 04/05 11:32
41F:→ dorgonman: 能的时候,你就会多麽希望有个专案管理机制了……根本 04/05 11:32
42F:→ dorgonman: 没办法专心写code。现在要老板想加什麽功能,不急的我 04/05 11:32
43F:→ dorgonman: 都请他先开issue票等我有空再评估,或者是等到每天的 04/05 11:32
44F:→ dorgonman: 早上的scrum meeting再提出来讨论。 04/05 11:32
45F:推 lininu: daily scrum真的很崩溃= =每日崩溃边缘的工程师++而且我们 04/05 16:53
46F:→ lininu: 公司的scrum真的很浪费时间,无法准确掌握专案进程,然後 04/05 16:53
47F:→ lininu: 两周一个单位写计画…问题他们全部被前案卡,PM整个也状况 04/05 16:53
48F:→ lininu: 外(pm连我是f2e都有认知障碍),我怎麽有办法规划两周的工 04/05 16:53
49F:→ lininu: 作项Orz 04/05 16:53
50F:→ dorgonman: 我觉得scrum早上的站立会议是工作遇到困难时有个当面向 04/05 18:23
51F:→ dorgonman: 相关人员求援的机会,而不是做进度报告用的。 04/05 18:23
52F:→ dorgonman: 会议的气氛应该是轻松的,不然久而久之大家都不想参加( 04/05 18:26
53F:→ dorgonman: 除了主管跟老板) 04/05 18:26
54F:→ landlord: 观念正确,求援/互补/互助/互相学习的好机会 04/05 21:44
55F:推 vn509942: 没经验的去拆解细分工作 无论用什麽模式都是悲剧 04/06 20:31