持續地break down需求,慢慢地越清楚系統的全貌。
不只是我們工作上所碰到的軟體系統,我們生活上所遇到瑣碎事情,與家人的關係,工作夥伴之間的溝通,都在整個思考系統之中。
畢竟我們是人,不是機器。
Appium作者Jonathan在MTSC2018的演說中,最後用一段自彈自唱說明
「雖然我們在做機器人,但我們卻別成為機器人」歌詞發人醒思。
影片連結
仔細想想,你到底是在寫程式,還是被程式牽著走寫著你的人生。
目前跟新進團隊成員在每天站會時,我著重在他怎麼分析問題,怎麼決定使用這個方法的,我「好奇」的想了解他整個思考過程,也想幫他釐清他自己的思緒。
「Code海無涯,回頭是岸」很多人一輩子就陷在程式碼迴圈裡面,而忘了為什麼當初要寫程式,科技不就是為了要幫助人類嗎? 想想你在寫的東西,怎麼幫助到更多的人? 分析出它可能的未來。而不是拘泥在到底要學javascript,還是學後端php,還是去碰資料庫。Who care你用什麼語言,重點能不能跟這個世界溝通,帶給人們最大的幫助。
溝通或對話的重要,已經在前幾篇說明過。但好像對於新進同仁,要提出問題或者勇於說出自己的想法,本身就是困難的,或許是台灣教育的問題,大學生剛出來被嚇傻的居多,可惜了一個不錯的學習環境。
「裝睡的人找誰引導都沒有用。」這句話不是我說的,出自Daniel《切膚之痛》的演說。我認為那些裝睡的人並不是裝睡,而是真的睡著了,沒有任何危機意識的睡著了;有些人,一看見桌上水杯有波紋出現,就意識到可能有地震,而趕快找遮蔽物躲藏;有些人,則是看到水波紋卻不以為意,繼續看電視,等到地震真的來的,才慌慌張張地找地方躲;更有些人,完全沒有發現水波紋,看到別人站起來要跑,才發現地震來了,只好跟著別人一起躲起來。在這種狀況下,不管你是哪種人,都沒有人可以幫你,你要自救。
這意同於聖經裡的寓言故事。
在某個村落,下了一場大雨,洪水淹沒全村,一位神父正在教堂裏祈禱,眼看洪水已經淹到膝蓋了。一個救生員駕著舢板前來,跟神父說:「神父,趕快上來吧!不然洪水會把你淹死的!」神父說:「不!我深信上帝會來救我的,你先去救別人好了。」
不久,洪水淹過神父的胸口,神父勉強站在祭壇上。這時,又一個員警開著快艇過來,跟神父說:「神父,快上來,不然你真的會被淹死的!」神父說:「不,我要守住教堂,上帝一定會來救我的。你還是先去救別人好了。」
又過了一會兒,洪水已經把整個教堂淹沒了,神父只好緊緊抓住教堂頂端的十字架。直升飛機緩緩飛過來,飛行員丟下了繩梯之後大叫:「神父,快上來,這是最後的機會了,我們不願意見到你被淹死!!」神父還是意志堅定的說:「不,上帝一定會來救我的。上帝會與我同在的!你還是先去救別人好了!」(這神父到底煩不煩啊,真這麼想死XD)
最後,洪水滾滾而來,神父被淹死了……他上了天堂,見到上帝後很生氣的質問:「主啊,我終生奉獻自己,誠心誠意的侍奉您,為什麼你不肯救我!」上帝說:「我哪裡不肯救你?第一次,我派了舢板去救你,你拒絕了;第二次,我又派一隻快艇去,你還是不要;第二次,我以國賓的禮儀待你,派一架直升飛機來救你,結果你還是不願意。我以為你急著想要回到我身邊來。」
這故事雖然好像是玩笑話,但現實生活中卻常常很多人這麼做。
「先自己幫助自己,別人才會願意幫助你。」
人是群居的動物,閉門造車不是辦法。應鼓勵團隊成員多認識一些人,學會如何與跨部門互動,be social and relax. 那些人不是壞人,是可以跟你一同學習的夥伴。
我認為新的領導者,不再是高高在上的管理者,也不再是技術的傳承者,而是思想的啟蒙者。比如在電影《Fight Club》主角的好朋友泰勒,偷抽脂診所的有錢人的脂肪做成高級肥皂,再賣回去給有錢人,顛覆了大家對肥皂的思考,也指出一個沒有人注意到的系統環路。
《Fight Club》還有另外一個橋段是,主角在路上看到一對吵架的情侶,然後就走過去拿起刀來拉住女子作勢要傷害她,男子看到後情緒激動要前去阻止,反被主角的刀劃傷,主角放開女子並開始狂揍男子,直到男子倒地不起。女子哭著在旁陪著已經倒地不起的男友。主角瀟灑地離開,並說: 「從今天起,你們的人生開始改變。」
猶如把那些睡著的人叫醒。這才是領導。
真正的領導會在你快睡著的地方,痛擊你一頓。
這些人不是裝睡喚不醒,而是不夠面臨生死交關。也就是Daniel說的,要讓他「痛」,他就知道。
我們來看一下今天引導的cases。
I君:「頁籤切換table的邏輯部分還在思考,應該預計今天可以完成。」
我:「嗯。目前卡在哪裡?」
I君:「大概知道怎麼做了,就是要再花點時間。」
我:「好。看起來就剩下搜尋和排序的部分。這禮拜五前把pagination任務全部完成。我們進下一階段的任務C。」
I君:「好…。」
過了一段時間…。
我:「進度如何?」
I君:「每次頁籤切換不同table,pagination要恢復到第一個index的功能卡住了。所以我先做排序的功能。」
我:「哪裡卡住,我看一下…」
進行約一小時的pair programming後…
我:「可以使用key來當作切換不同頁籤時,強迫元件做重新mount的動作,如此pagination的index就會回到第一頁;另外把列舉統一用import的方式在每個有用到地方再import進來;table的data不用整包傳進來page,應該是選到該頁籤後,指定該頁籤內的data再傳進去page就好。然後元件設計要把握一些原則,除了物件導向的SOLID之外,設計一個元件,它應該要有它本來的樣子,比如說一個人絕對不會在它的頭上長角。除非它是牛。意思就是,page元件要有page元件該有的屬性(props),table元件也應該有屬於自己的屬性(props)...」
我:「這樣能理解嗎?」
I君:「...了解。」
我:「我希望你知道不是只有答案,而是整個我在思考的過程。是怎麼一步步抽絲剝繭的。」
應該還不算迎頭痛擊,但希望這樣能清醒一點。
每天的學習成長,就像每次fight都痛一次般,烙下印記就不會忘了。