大数跨境
0
0

项目计划管理之理想和现实

项目计划管理之理想和现实 二进制跳动
2023-07-08
2
导读:项目计划管理之理想和现实
理想中的软件工程项目推进,可以参考电影中盖房子的场景。设计师绘制蓝图,按照一期、二期、三期工程有条不紊地进行建设,并按时交付。然而,在现实项目中,特别是大型项目,往往会遇到各种挑战和问题。这就好比在盖房子时,发现有个搬不走的石头阻碍了下水管道的安装;在建造烟囱时,发现设计不合理,邻居对风向和高度提出抱怨而无法继续;在盖第二层时,发现工人不足,尤其是缺乏特殊技能的工人;原本计划的电路走线需要重新规划,以符合合作方公司的新标准等等。
类似的情况也会在项目中发生,由于内外部变化导致项目受阻或需要进行调整。特别是当项目时间跨度较长时,可能会面临更多的因素和问题。
首先讨论项目计划。有人曾说过,制定项目计划有时就像是一个近视眼向远处山顶进发。你对登山路径、方向和大致时间有个粗略估计,但随着前进,你能看到的视野也逐渐扩展。你会发现之前未曾察觉的沼泽、悬崖甚至绊脚石。因此,仅仅有一个大方向是不够的,你还需要一个随着新问题的出现而合理调整路线和进度的策略。如果僵化地按照最初的计划前进,很难取得成功。
在项目中,很多时候会发现某个产品特性未被考虑进去,某个基础设施的功能尚不存在,或者之前认为可用的工具实际上无法完全满足需求等等。这时候,只能集思广益,讨论如何进行调整。
对于改进设计中的缺陷,通常需要权衡取舍。例如,你可能发现一个系统的某个设计在某个产品需求之前是很好的,但由于新增需求,这个设计突然无法支持。这时候可以做一些小的改动,但可能会导致长期的技术债务,或者考虑重新设计一个看似更完美的方案。
从理论上讲,每个工程师都尽力避免技术债务。但重新设计是否一定更好呢?
首先,这取决于项目已经进行到哪个阶段。重新设计可能意味着大量代码的重写和重构,以及对相关子系统设计的改动。这往往会导致项目延期。
此外,你可以说宁愿延期一个月,也要实现一个更理想的系统。但事实是,另一个方案只是在设计阶段,你能保证在新方案的实施过程中不会发现新的缺陷吗?即使新增的核心需求是真实存在的,它能经受住各种用户测试的反馈并长期存在吗?或者说它只是某些特殊用户在特定情况下才会使用的功能?
当然,并不是说所有情况下都有充分的理由不对设计进行重大改动。如果某个设计缺陷就像一栋房子的基础对安全性和可用性产生重大影响,那么必须重新考虑。
那么,如何尽可能避免项目中的重大设计改动呢?
首先,在初期设计阶段,就像近视眼登山一样,尽可能使用所有工具,如望远镜和地图,来帮助设计更可靠的路线和进度计划。在设计过程中与产品团队充分沟通,确保了解所有现有和未来几年可能出现的场景。了解你需要使用的现有系统和工具以及正在开发的系统和工具,确保所需性能得到满足。
其次,在设计中平衡大框架和细节。确保大框架可以应对各种变化,投入更多的精力,可以减少后续困境。对于一些小细节,如果能够保证改动的相对独立性(解耦),不会引起连锁反应,即使后期需要修改,也不会成为大问题。
与有经验和决策权的人员反复沟通和确认设计的大框架,而不是等到项目进行到一半才被质疑为什么没有让相关人员知晓。了解哪些细节可以自主决策,根据情况而定。
另外,尽可能将可验收的部分进行分块,即将整个项目拆分为多个阶段,每个季度可以交付一个完整的部分。而不是所有部分都在同时进行,只在年底有一个验收阶段。分期设定交付目标可以将一些大问题控制在相对有限的范围内。
最后,任何一个系统在产品和用户的发展过程中都不会是完美的,都会有改进的空间。明确你需要解决的主要问题是什么,并时刻牢记这一点。因为有时候在为了解决某个问题而改变设计时,可能无意中会引入新的问题。
最后,项目是静态的,人是活动的。同一个问题如果由不同的人负责,可能会有完全不同的选择。因此,制定一些指导原则,并确保团队对其达成共识,即使因人员变动而产生分歧,也不会引发不必要的争论。
大改动筋伤骨,要尽力避免。小改动几乎是无可避免,坦然面对就行了。而小改动,虽然说不可避免,且危害不算太大。但有时候,因为各种产品、参与者的关系,也可能会发生 “改回来又改回去” 的情况。不仅费时间,也容易消磨程序员的斗志。

【声明】内容源于网络
0
0
二进制跳动
15 年 + 技术老兵 架构师|技术总监|科技创业技术合伙人 曾任职苏宁科技、电讯盈科、联想云 专注架构设计与技术落地
内容 739
粉丝 0
二进制跳动 15 年 + 技术老兵 架构师|技术总监|科技创业技术合伙人 曾任职苏宁科技、电讯盈科、联想云 专注架构设计与技术落地
总阅读117
粉丝0
内容739