所謂“隔行如隔山”,其實不然,在工作和生活中,大部分的知識和技能都是相通的。學會舉一反三,對于技能的提升有很大幫助。本文是一名軟件開發(fā)者從做技工的父親身上學到的一些經(jīng)驗,而這些經(jīng)驗使他最終成為了開發(fā)者中的佼佼者。
以下為文章全文:
我的父親是一名工程師――是機械工程師,不是軟件工程師。在他成為機械工程師之前,他也做過技工和木工。他很聰明,同時在建筑和維修方面也很有 天賦(只要不涉及到電氣即可,不過那就是另外一回事了)。他甚至在 60 歲時依然能做圍墻、工棚和甲板之類的工作。當我和我的兄弟還小的時候,他就開始讓我們接觸一些他工作用的工具,因此,當我們發(fā)現(xiàn)需要修復或制作一些東西 時,我們有能力做好它。好吧,雖然他在我身上的教育幾乎失敗,但一路走來,我還是學到了很多重要的東西,而且,不管你信不信,這些我學到的東西,在我成為 一名優(yōu)秀的開發(fā)者和企業(yè)家的路上,讓我受益良多。
下面就是我從他那里學到的知識。
第一課:三思而后行
砍柴是一個一次性的工作。只要樹木被砍掉,它就不可能再保持原樣。因此,很重要的一件事就是確保你每一次的刪除操作是無誤的。甚至即使你確定你的做法是正確的,也請你無論如何再做一次評估。重新檢查你的評估,確保它正確無誤,這樣你就可以避免犯一些本可以規(guī)避掉的錯誤,付出的代價也要小的多。
開發(fā)產(chǎn)品也是同樣的道理。如果事先不測量書架要占用的空間的大小,你怎能做出與之大小相適合的書架?如果事先不知道用戶的需要,你又何必去開發(fā) 一個無用的產(chǎn)品?這個道理已經(jīng)提過很多次了,我在這里略過。但有個不被經(jīng)常提及的事情是你的產(chǎn)品是一組功能的集合體,就像書架是一堆貨架的集合體一樣。每 一個功能都應該被認真對待,細心評估,以確保它適用于受眾人群。重要的是不僅僅在項目開始就收集反饋,在整個項目的開發(fā)階段,我們都要重視反饋,而不是等到結束了,才想起還有一些不錯的創(chuàng)意沒有實現(xiàn)。
第二課:粉刷一座建造好的涼亭會很困難
有一次,幾個工人在家里修涼亭,他們在涼亭建好后才開始粉刷。爸爸看到后指出,如果這些工人能在這些木頭放在地面上就開始粉刷的話,他們就能節(jié) 約1/10的時間,而且效果也會更好。粉刷之后只需做一些連接工作就可以很快的建造起這座涼亭。粉刷已經(jīng)建造好的涼亭不僅又慢又不方便,而且還可能導致出 現(xiàn)一些不易刷到的地方,最糟糕的是,如果不幸的話,還會把這一切弄得一團糟。
在產(chǎn)品的開發(fā)過程中,很容易忘記設計和 UI,但這些很重要。以用戶為中心的設計就是在設計頁面時,以服務用戶為第一要務,然后再開發(fā)相應的應用來支持這一設計。而以軟件開發(fā)為優(yōu)先并把設計放到最后,你將做更多的工作,產(chǎn)品也會存在潛在的缺點。UX 應該是一個持續(xù)不斷的過程,不是某個可以隨意丟棄的東西。
第三課:讓你的項目和工作空間始終保持整潔
在一個雜亂的環(huán)境中工作一定會讓你的項目結果變得一團糟。如果碎木屑到處都是,你就不可能粉刷好;如果你的工具都滿覆油污,你就不可能把拆散的發(fā)動機零件再組裝到一起;如果你用完工具后不搜集整理好,你可能永遠都找不到你想要的螺絲刀。任何一個機修工都會告訴你工作在一個整潔的環(huán)境中有多么重要。糟糕的不止是你將花更多的時間用于尋找放錯位置的工具,還會導致更多的損失。
每一個開發(fā)者的代碼中都可能會有一些 bug。很多開發(fā)者都知道“代碼債務”這個名詞,它實際上只是從開發(fā)者的角度來看待這一塊工作混亂的區(qū)域。如果你在源頭埋下隱患,所造成的后果不僅僅是更 難發(fā)現(xiàn) bug,而且在將來會更容易造成更多的混亂。最終你將不得不清理它們(特別是在你開始你自己的工作前,你將不得不去清理其他人留下的這些 bug!)。想必每一個開發(fā)者都知道修改別人代碼時那種恐怖的感覺,并會意識到他們留下了一堆麻煩等著你去解決。現(xiàn)在花一點時間去整理你的工作空間,將來你會節(jié)約更多的時間。
第四課:始終使用正確的工具(而且在你的工具上別吝嗇)
搞砸工作的一個主要原因就是使用了不恰當?shù)墓ぞ?。這雖然顯而易見,但很多人就是意識不到這一點。用錯了工具后的下場通常是一個災難。別心疼錢,工作一展開就應該找到合適的工具。
工具選用不當雖然通常都是管理層犯下的錯誤,但我們開發(fā)者也要為此事負責。毫無疑問,一個用了 6 年的筆記本運行起來肯定會很慢。即便為一款文本編輯器花了 10 美元,但卻選用了最蹩腳的一款,也不會有助你的工作。節(jié)省的這幾塊錢不會幫你贏得客戶的心。最糟的是,利用盜版軟件幫你賺錢,這是完全錯誤的做法。今天你 可能覺得你節(jié)省了一些,但在以后的運營中一定會花掉你更多的錢。找出最適合你項目的開發(fā)工具,然后花一些錢(除非它是開源的?。?。當項目開始后,節(jié)約會特別具有挑戰(zhàn)性。除非你需要,否則別亂花錢,但如果有些工具需要花錢才能使用,那就要選最好的。
第五課:如果方法都不奏效,那么去找一個更大的錘子
有時候你卡住了,這意味著你碰到了難題。有時候不管你多么用力,都無法將螺栓擰入螺孔中。有時候不管你多么用力敲打,釘子都不會被敲入。這時候你僅僅需要一把更大、更合適的錘子。
作為 BugHerd 的創(chuàng)始人之一,我過去常碰到一些本該尋求幫助的情況。但我掙扎著,我通讀手冊,看視頻錄像并參閱博客文章。然后我清醒了,并意識到無論我做什么,肯定有其 他人在這方面做得比我好。目前,我們有 2 位精通 JS 的同事,他們做的工作,比我們?nèi)魏螘r候做的都要好。有很多為遠程團隊協(xié)作而準備的優(yōu)秀的工具,因此,不要找借口說沒有合適的同事和你一起工作。有時候,你僅僅需要接受現(xiàn)實,并找到相應的解決辦法。
作為一個活躍在專業(yè)開發(fā)設計社區(qū)里的創(chuàng)業(yè)者,我常感到像活在培養(yǎng)皿里。偶爾停下來,觀察一些較為傳統(tǒng)的行業(yè),看看我們能從那些做出卓越貢獻的前輩那里學到什么,這也是一個不錯的做法。無論我們認為我們有多聰明,也不論他們有哪方面的優(yōu)點,我們總是能從這些前輩這里學到很多。
該文章在 2012/4/10 11:24:40 編輯過