我在IT行业工作,发现一个奇怪的现象。4 j, n& X4 x; N3 w& z
0 d/ h9 u7 P8 u# o `; R0 y4 ]
IT行业的糟糕循环
) y3 V! B5 {2 s( [& p! x
% M: _6 `1 t. R. W职业生涯的早期,我从事 Web 开发,比如开发 CRUD 应用、构建 API 等。我注意到,我的经理和更高层的领导都对项目时间有一定的期望,但实际上他们往往不具备评估项目时间的技术能力。如果我花费的时间,超过他们的期望,那么我就会有麻烦。5 X7 J7 X) p: H
. h, G3 o# ~7 Y8 O' t后来,我的领域转到了分布式计算,涉及集群管理、系统开发、高可用性、功能编程、分布式图形计算、数据科学等等。但是我发现,我的经理对项目时间的评估,与我以前进行简单的 Web 开发工作时大致相同!
) S/ I# H# I: w: [& c2 b
* _1 _) A: i" e: s他们一开始不会说。你先给出自己的估计,将任务分解为合理的块,并考虑不确定性因素和测试因素。但是如果你坐下来跟他们交谈,你会发现他们仍然期望你在几周内完成更多的事情。如果时间不够,他们会认为问题出在你身上,而不管问题的实际难度如何。我很惊讶,领导以为简单的 REST API 集成所需的时间,与开发一个实时事务性分布式计算集群所花费的时间相同。工程技术真的已经走到了这么远的地步吗?没有。
9 x8 B: g9 i, \! X5 Z) E+ q& t" R6 |" D/ e" Q8 N
这些年来,我终于得出一个简单的结论:领导们对事情需要多长时间一无所知。+ W7 u: m7 J% o B
6 C. N; J* @% l' F: F( C这些年来,软件工程并没有变得越来越简单,而是变得越来越复杂,因为我们正在解决越来越多的问题,将需要更长的时间来解决。但是,许多技术经理都秘密地相信,问题已经减少到拖放式解决的程度。结果就是,技术经理对实施时间的期望与程序员应该花费的时间之间存在巨大差距。程序员不得不继续推出用胶带浆糊拼凑而成的不可靠的解决方案,使之勉强能赶上截止日期,然后将其扔给运营团队,并在整个余生中为产品补漏洞,直到自己精疲力尽离职为止。 |