如何走出問(wèn)題的迷宮
??在我們生活和工作中揩晴,或多或少都會(huì)遇到一些非常“繁復(fù)”的事整吆,基于我們自身認(rèn)知的情況下沒(méi)有辦法一下就處理完畢拱撵』源ǎ可能是籌劃一個(gè)完美的 party;可能是需要做一個(gè)面面俱到的旅行計(jì)劃拴测;也有可能和我一樣乓旗,需要在工作中去解決一個(gè)”復(fù)雜”的問(wèn)題。
??如果你用敲釘子的辦法去解決他們集索,那你很有可能會(huì)走入問(wèn)題的迷宮屿愚。請(qǐng)跟著我一起看看,到底是什么樣的方法讓我成功走出重構(gòu)了這個(gè)“復(fù)雜”業(yè)務(wù)的迷宮务荆。
問(wèn)題來(lái)了
??那個(gè)時(shí)候我正在參與一個(gè)大型項(xiàng)目的第二階段妆距。項(xiàng)目中核心業(yè)務(wù)的代碼實(shí)現(xiàn)邏輯與我們和客戶確認(rèn)的業(yè)務(wù)模型有一定的出入。需要將這個(gè)不匹配的模塊進(jìn)行重構(gòu)成和實(shí)際業(yè)務(wù)模型一樣函匕。項(xiàng)目上的后端開(kāi)發(fā)人員中娱据,只有我一個(gè)人是擁有項(xiàng)目第一階段的所有上下文。這時(shí)浦箱,我自告奮勇的去接受了這個(gè)重構(gòu)任務(wù)吸耿。
敲不完的釘子
??以我以往的經(jīng)驗(yàn)來(lái)看祠锣,這不過(guò)是重構(gòu)的時(shí)間稍長(zhǎng)而已酷窥。一開(kāi)始,我就想象著可以揮舞釘錘那樣去錘下那一個(gè)個(gè)翹起的釘子一樣把重構(gòu)就能完成了伴网。
??但是事情接下來(lái)的發(fā)展出乎了我的意料蓬推。釘子們被敲了進(jìn)去,另外一邊剛敲下去的釘子又冒了出來(lái)澡腾,甚至出現(xiàn)了很多新的釘子沸伏。就這樣按下葫蘆浮起瓢,我埋著頭在被改的亂七八糟的源碼里面暈暈乎乎的搞了好幾天动分,重構(gòu)沒(méi)有一點(diǎn)進(jìn)展毅糟。這時(shí)候的心態(tài)也和這塊需要釘釘子的板子一樣,一片狼藉了澜公。
走出迷宮
??因?yàn)檫@幾天我都在做著同一件事姆另,但是沒(méi)有任何的內(nèi)容產(chǎn)出。于是找到了 TL 溝通坟乾。我告訴他:“我先找到一個(gè)點(diǎn)去改迹辐,結(jié)果發(fā)現(xiàn)改了這個(gè)地方導(dǎo)致其他地方也需要改,然后我就這樣不停的改啊改啊甚侣,不知道改了多少次明吩,也不知道還要改多少才能做完∫蠓眩”他聽(tīng)完以后告訴我:“你這樣去做比較簡(jiǎn)單的事是沒(méi)有問(wèn)題的印荔,因?yàn)槭虑楹芎?jiǎn)單低葫,每個(gè)改動(dòng)的邊界是可以感知和控制的。但用這種方法做看不到邊界躏鱼,無(wú)法控制每次修改影響范圍的事氮采。結(jié)果就會(huì)是做了很多,還不知道對(duì)錯(cuò)染苛,最后陷入進(jìn)退兩難的境地鹊漠。好在我們其實(shí)是有方法去解決這種復(fù)雜的問(wèn)題的,就是任務(wù)分解茶行∏牛”
??緊接著,他一條條的給我講解了什么是任務(wù)分解畔师,然后娶靡,我們一起通過(guò)結(jié)對(duì)編程的方式刻意練習(xí)了這種方法。
任務(wù)分解怎么做
- 將一個(gè)復(fù)雜的事情拆分成 N 個(gè)有明確目標(biāo)和范圍的的小任務(wù)
- 我們將這些小任務(wù)進(jìn)行優(yōu)先級(jí)排序
- 按排序的先后開(kāi)始去一個(gè)個(gè)完成任務(wù)
- 在完成過(guò)程中會(huì)發(fā)現(xiàn)一些新的問(wèn)題,先不要去解決他看锉,我們把這個(gè)問(wèn)題同樣當(dāng)成小任務(wù)放到我們的任務(wù)列表里面(我們往往就是在這里迷失了方向)
- 重復(fù) 3-4姿锭,直到我們把任務(wù)列表都完成通過(guò)使用任務(wù)分解,我把需要重構(gòu)的內(nèi)容伯铣,分解成了一個(gè)個(gè)范圍我們可以控制的任務(wù)呻此。
沒(méi)想到比之前在“迷宮”中花的時(shí)間還短,就完成了整個(gè)重構(gòu)腔寡。
最后的一些思考
??一切美好的事物都是曲折地接近自己的目標(biāo)焚鲜,一切筆直都是騙人的,所有真理都是彎曲的放前,時(shí)間本身就是一個(gè)圓圈忿磅。
??復(fù)雜的問(wèn)題我們通過(guò)任務(wù)分解的方式一步步的去曲折的靠近目標(biāo),一開(kāi)始看到的筆直不過(guò)是在欺騙我們凭语。當(dāng)我自認(rèn)為很快可以解決這個(gè)問(wèn)題的時(shí)候葱她,已經(jīng)迷失在了問(wèn)題的迷宮中了。其實(shí)在我們平時(shí)接觸到很多實(shí)踐和方法論中都或多或少的出現(xiàn)了它的身影似扔。比如 TDD 通過(guò)一個(gè)個(gè)功能點(diǎn)測(cè)試去完成整個(gè)功能斑芜;Scrum 中將一些大的問(wèn)題拆分成了一張張 story 卡所袁。
??如果,大家遇到了和我類似的情況,不如試一試任務(wù)分解钝鸽,說(shuō)不定你的問(wèn)題就能一點(diǎn)點(diǎn)的解決掉了矛纹。