简单的先做 VS 技术难题先做

这个问题来自於我的专案执行的经验,也让大家一起想想看。

在收到专案後,第一个动作就是去寻找这个专案的核心商业价值在哪边,接着思考这个专案工作上有没有什麽技术难题,以及有多少的清楚明确的条件。假设分析完後,自己只有两周的时间,要解决一个技术难题,与20个附属的工作但并不会太困难,时间花下去就能完成,在这个情况下,我要先做哪一块的工作?

不过要回答这个问题,还有很多背景假设需要做,其实不同的团队会有不同的做法,我这边尽量试着用各种常见的背景来说明。

如果是单兵作战的情况下,很多工程师甚至专案管理人可能会选择赶紧先做完这些附属的工作,毕竟内容多但不花时间,完成後还可以让整体进度看起来很漂亮,说不定还可以要求加薪呢!!

而如果是多人参与的情况下,小朋友才做选择,人海战术发下去做就对了。但是关於困难的技术议题,反正就交给资深的工程师去处理就好,这样应该没问题吧 (望)

我自己做专案的时候的工作安排,不论有没有同伴一起共事,我丢是选择要先集中火力把困难的技术题目先解决,或者至少要做到把复杂度降幂後,才开始处理大量但是简单的工作。因为我认为,所谓困难的问题代表着可能不是投入时间就可以解出来的问题,因此无法评估需要花多少时间完成;而既然他是困难的,表示不太有人有经验,因此不容易得到外援,如果能找到外援,那就表示能把困难的问题给降幂成简单的问题。这类花时间都不能保证能解决的问题,通常才是真正需要花时间去关注的问题,也通常会是最有商业价值的地方,如果甲方发现你没有能力完成他觉得最重要的东西,合约还能继续走下去吗? 我觉得恐怕是有难度的。

另外一个我不会选择先做简单的工作的理由,在专案一开始就狂打LV1史莱姆的话,很容易对专案的难度做出错误的评等,导致心态松懈,最後要面对困难议题的时候心态上转换不过来,导致打王的时候会有不必要的损伤。

再来一个不会选择先做简单的工作的理由,是关於人月神话有关。困难的工作多半无法多人合作完成,所以当时程delay的时候,根本无法加派人手来补救,但是如果未完成的工作都是简单型的,那麽或许还可以加派人手来消化工作。就算没有人手可以加派,仍是可以透过加班的方式来解决。最差的就算不想加班,在回报给甲方或者主管的时程中,至少还是可以估算得出来的时间,而非一个"无法评估"的答案。

时间,是在专案中最稀有的资源,透过工作先後顺序的安排,解决任务相依性的资源冲突问题,而再加入任务复杂度的维度进来思考,或许可以帮助整个专案推动会有更顺畅的轨道。


<<:  [铁人赛 Day07] 为何不该使用 index 当作 Key 值 ?——React render 更新机制解释

>>:  [Day9] Face Detection - 使用OpenCV & Dlib:Haar cascades

Day07 Kibana - Query DSL 语法结构

上一篇我们已经学会了使用kibana来查询Elasticsearch资料,但有时候这种简单预设的查询...

【Day 3】分散式系统模型、容错、高可用

上一章我们了解了分散式系统是什麽、为什麽要让系统分散, 也大概知道分散式系统会遇到节点死掉、网路断掉...

Day 17 ATT&CK for ICS - Persistence(2)

T0857 System Firmware 韧体做为跟硬体的互动的桥梁,若设备中的可能有韧体安全的问...

Day 05 Line Massaging API- 打造自己的 Chatbot

Line Massaging API- 打造自己的 Chatbot 接下来,如果要在 Azure W...

[Python小程序] 陌生人监控器(Stranger Detector)

开机或登入时自动传Line讯息给我,如果有异常的时间点就表示有人偷开你的电脑了! ψ(`∇´)ψ 用...