技工父親教會(huì)我的5堂課
我的父親是一名工程師——是機(jī)械工程師,不是軟件工程師。在他成為機(jī)械工程師之前,他也做過技工和木工。他很聰明,同時(shí)在建筑和維修方面也很有天賦(只要不涉及到電氣即可,不過那就是另外一回事了)。他甚至在60歲時(shí)依然能做圍墻、工棚和甲板之類的工作。
當(dāng)我和我的兄弟還小的時(shí)候,他就開始讓我們接觸一些他工作用的工具,因此,當(dāng)我們發(fā)現(xiàn)需要修復(fù)或制作一些東西時(shí),我們有能力做好它。好吧,雖然他在我身上的教育幾乎失敗,但一路走來,我還是學(xué)到了很多重要的東西,而且,不管你信不信,這些我學(xué)到的東西,在我成為一名優(yōu)秀的開發(fā)者和企業(yè)家的路上,讓我受益良多。
第一課:三思而后行
砍柴是一個(gè)一次性的工作。只要樹木被砍掉,它就不可能再保持原樣。因此,很重要的一件事就是,確保你每一次的刪除操作是無誤的。甚至即使你確定你的做法是正確的,也請你無論如何再做一次評估。重新檢查你的評估,確保它正確無誤,這樣你就可以避免犯一些本可以規(guī)避掉的錯(cuò)誤,付出的代價(jià)也要小的多。
開發(fā)產(chǎn)品也是同樣的道理。如果事先不測量書架要占用的空間的大小,你怎能做出與之大小相適合的書架?如果事先不知道用戶的需要,你又何必去開發(fā)一個(gè)無用的產(chǎn)品?
這個(gè)道理已經(jīng)提過很多次了,我在這里略過。但有個(gè)不被經(jīng)常提及的事情是,你的產(chǎn)品是一組功能的集合體,就像書架是一堆貨架的集合體一樣。每一個(gè)功能都應(yīng)該被認(rèn)真對待,細(xì)心評估,以確保它適用于受眾人群。重要的是不僅僅在項(xiàng)目開始就收集反饋,在整個(gè)項(xiàng)目的開發(fā)階段,我們都要重視反饋,而不是等到結(jié)束了,才想起還有一些不錯(cuò)的創(chuàng)意沒有實(shí)現(xiàn)。
第二課:粉刷一座建造好的涼亭會(huì)很困難
有一次,幾個(gè)工人在家里修涼亭,他們在涼亭建好后才開始粉刷。爸爸看到后指出,如果這些工人能在這些木頭放在地面上就開始粉刷的話,他們就能節(jié)約1/10的時(shí)間,而且效果也會(huì)更好。粉刷之后只需做一些連接工作,就可以很快的建造起這座涼亭。粉刷已經(jīng)建造好的涼亭不僅又慢又不方便,而且還可能導(dǎo)致出現(xiàn)一些不易刷到的地方,最糟糕的是,如果不幸的話,還會(huì)把這一切弄得一團(tuán)糟。
在產(chǎn)品的開發(fā)過程中,很容易忘記設(shè)計(jì)和UI(User Interface用戶界面的簡稱),但這些很重要。以用戶為中心的設(shè)計(jì)就是在設(shè)計(jì)頁面時(shí),以服務(wù)用戶為第一要?jiǎng)?wù),然后再開發(fā)相應(yīng)的應(yīng)用來支持這一設(shè)計(jì)。而以軟件開發(fā)為優(yōu)先并把設(shè)計(jì)放到最后,你將做更多的工作,產(chǎn)品也會(huì)存在潛在的缺點(diǎn)。UX(User Experience用戶測試)應(yīng)該是一個(gè)持續(xù)不斷的過程,不是某個(gè)可以隨意丟棄的東西。
第三課:讓你的項(xiàng)目和工作空間始終保持整潔
在一個(gè)雜亂的環(huán)境中工作一定會(huì)讓你的項(xiàng)目結(jié)果變得一團(tuán)糟。如果碎木屑到處都是,你就不可能粉刷好;如果你的工具都滿覆油污,你就不可能把拆散的發(fā)動(dòng)機(jī)零件再組裝到一起;如果你用完工具后不搜集整理好,你可能永遠(yuǎn)都找不到你想要的螺絲刀。任何一個(gè)機(jī)修工都會(huì)告訴你工作在一個(gè)整潔的環(huán)境中有多么重要。糟糕的不止是你將花更多的時(shí)間用于尋找放錯(cuò)位置的工具,還會(huì)導(dǎo)致更多的損失。
每一個(gè)開發(fā)者的代碼中都可能會(huì)有一些bug。很多開發(fā)者都知道“代碼債務(wù)”這個(gè)名詞,它實(shí)際上只是從開發(fā)者的角度來看待這一塊工作混亂的區(qū)域。如果你在源頭埋下隱患,所造成的后果不僅僅是更難發(fā)現(xiàn)bug,而且在將來會(huì)更容易造成更多的混亂。最終你將不得不清理它們(特別是在你開始你自己的工作前,你將不得不去清理其他人留下的這些bug。。