一個機械技師給產品開發者的經驗談-三十而慄

最近在國外的網站上看到一篇文章《How lessons from a tradesman can help out a techie》,來自BugHerd這個網站,他們專注在協助一些網站改善存在的Bug,包括了即時Bug提交以及記錄系統,Bug的Check list以及改善的過程追蹤記錄,同時也提供了雲計算的服務。

這篇文章中,作者提到了他的父親是一個傳統木工以及機械方面的技師,他是一個很聰明且在這方面的工作上很有天份,即使到了六十多歲,都仍然能夠很好地勝任戶外籬笆、工棚、以及桌椅方面的搭建以及維修工作,他從作者小時候就開始教導他這方面的一些技能,而作者說最後他雖沒能繼承父親的這些技能,但它確實從他的父親身上學到了一些很重要的經驗與觀念,這些事情對於他日後成為一個開發者甚至是創業者都有很大的幫助。

經驗一:再次衡量,謀定而後動

作者以砍柴為例,砍柴是一次性的行為,只要樹木被砍掉,它就無法再回復到原樣。因此,很重要的一件事就是確保你每一次的刪除操作是無誤的。甚至即使你確定你的做法是正確的,行動前無論如何都最好再做一次評估。重新檢查你的評估,確保它正確無誤,這樣你就可以避免一些本可以規避掉的錯誤,付出的代價也要小的多。

開發產品也是同樣的道理。如果事先不測量書架要佔用的空間的大小,你怎能做出與之大小相適合的書架?如果事先不知道用戶的需要,你又何必去開發一個無用的產品?這個道理已經提過很多次了,我不需要老調重彈。但有個不被經常提及的事情是你的產品是一組功能的集合體,就像書架是一堆貨架的集合體一樣。每一個功能都應該被認真對待,細心評估,以確保它適用於受眾人群。重要的是不僅僅在項目開始就收集反饋,在整個項目的開發階段,我們都要重視反饋,而不是等到結束了,才想起還有一些不錯的創意沒有實現。

經驗二:不要把設計留到最後才思考

有一次,幾個工人在家裡修涼亭,他們在涼亭建好後才開始粉刷。父親看到後便指出,如果這些工人能在這些木頭放在地面上就開始粉刷的話,他們就能節約1/10的時間,而且效果也會更好。粉刷之後只需做一些連接工作就可以很快的建造起這座涼亭。粉刷已經建造好的涼亭不僅又慢又不方便,而且還可能導致出現一些不易刷到的地方,最糟糕的是,如果不幸的話,還會把這一切弄得一團糟。

在產品的開發過程中,很容易忘記設計和UI,但這些很重要。以用戶為中心的設計就是在設計頁面時,以服務用戶為第一要務,然後再開發相應的應用來支持這一設計。而以軟體開發為優先並把設計放到最後,你將做更多的工作,產品也會存在潛在的缺點。UX應該是一個持續不斷的過程,不是某個可以隨意丟棄的東西。

經驗三:隨時保持專案計畫以及工作環境的整齊清潔

在一個雜亂的環境中工作一定會讓你的項目結果變得一團糟。如果碎木屑到處都是,你就不可能粉刷好;如果你的工具都滿覆油污,你就不可能把拆散的發動機零件再組裝到一起;如果你用完工具後不蒐集整理好,你可能永遠都找不到你想要的螺絲刀。任何一個機修工都會告訴你工作在一個整潔的環境中有多麼重要。糟糕的不止是你將花更多的時間用於尋找放錯位置的工具,還會導致更多的損失。

每一個開發者的代碼中都可能會有一些bug。很多開發者都知道“代碼債務”這個名詞,它實際上只是從開發者的角度來看待這一塊工作混亂的區域。如果你在源頭埋下隱患,所造成的後果不僅僅是更難發現bug,而且在將來會更容易造成更多的混亂。最終你將不得不清理它們(特別是在你開始你自己的工作前,你將不得不去清理其他人留下的這些bug!)。想必每一個開發者都知道修改別人代碼時那種恐怖的感覺,並會意識到他們留下了一堆麻煩等著你去解決。現在花一點時間去整理你的工作空間,將來你會節約更多的時間。

經驗四:永遠選擇最適當的工具(不要在這方面貪圖便宜)

搞砸工作的一個主要原因就是使用了不適當的工具。這雖然顯而易見,但很多人始終沒有意識不到這一點。用錯了工具後的下場通常是一個災難。別貪圖便宜,工作一展開就應該找到合適的工具。

工具選用不當雖然通常都是管理層犯下的錯誤,但我們開發者也要為此事負責。毫無疑問,一個用了6年的筆記本運行起來肯定會很慢。即便為一款文本編輯器花了10美元,但卻選用了最蹩腳的一款,也不會有助你的工作。節省的這幾塊錢不會幫你贏得客戶的心。最糟的是,利用盜版軟件幫你賺錢,這是完全錯誤的做法。今天你可能覺得你節省了一些,但在以後的運營中一定會花掉你更多的錢。找出最適合你項目的開發工具,然後花一些錢(除非它是開源的!)。當項目開始後,節約會特別具有挑戰性。除非你需要,否則別亂花錢,但如果有些工具需要花錢才能使用,那就要選最好的。

經驗五:如果一切方法都失效,你應該尋求更大的外援

有時候你必須要清楚自己正遭遇了難題。有時候不管你多麼用力,都無法將螺栓擰入螺孔中。有時候不管你多麼用力敲打,釘子都不會被敲入。這時候你僅僅需要一把更大、更合適的錘子。

身為兩家初創企業的創始人,我過去常碰到一些本該尋求幫助的情況。但我掙扎著,我通讀手冊,看視頻錄像並參閱博客文章。然後我清醒了,並意識到無論我做甚麼,肯定有其他人在這方面做得比我好。目前,我們有2位精通JS的同事,他們做的工作,比我們任何時候做的都要好。有很多為遠程團隊協作而準備的優秀的工具,因此,不要找藉口說沒有合適的同事和你一起工作。有時候,你僅僅需要接受現實,並找到相應的解決辦法。

作為一個活躍在專業開發設計社區里的創業者,我常感到像活在培養皿里。偶爾停下來,觀察一些較為傳統的行業,看看我們能從那些做出卓越貢獻的前輩那裡學到甚麼,這也是一個不錯的做法。無論我們認為我們有多聰明,也不論他們有哪方面的優點,我們總是能從這些前輩這裡學到很多。

*原文刊載在BugHerd Blog,本文部分翻譯內容截取自ITEYE