(未經授權,禁止轉載)
軟件開發是一種幾乎沒有門檻的工作。正是這種不設門檻的開放精神,讓軟件開發領域形成了一種獨特的行業文化:你行你就上。開源活動就是很直接的實證,它使得后人以零成本直接繼承前人的成就,并基于已有成果繼續探索新的發現。開源精神在全球軟件行業已經深入人心,成為行業得以持續發展的基石。
盡管入行門檻很低,軟件開發作為一種產品設計和生產的工作,對從業者專業性的要求一點也不會少。實際上,與不少其他工作相比,它給從業人員提出的要求甚至更嚴格:打造精巧的軟件能成倍地提高生產力,為社會發展提供動力;設計細致的軟件給人們帶來沁人心脾的體驗,為日常生活增加樂趣。另一方面,軟件作為精密的構件,在代碼中哪怕寫錯一個標點也會引發程序罷工。它看不見摸不著、高速運行,它出現問題的時候,不聲不響、毫無征兆之間就可能引發巨大影響……軟件的這些特征,都對創造軟件的開發人員提出更苛刻的要求。
民科要不得,專業很重要
“如果你手里有一把錘子,所有東西看上去都像釘子”。不少開發人員入門不久,剛剛掌握了使用 Visual Studio 拖拽控件,就興奮地以為自己隨手拖一個騰訊 QQ 也不成問題。如今我們都已經知道了有關拖拽控件的笑話,卻鮮有人注意到,其實這類笑話從未消來過。就比如,隨便打開一個社區就到處能看到成天叫囂要用 JavaScript 統治世界的人,他們與前述笑柄有何不同?
可以說,他們就是軟件開發領域的民科。民科與初學者不同。初學者知道自己任重道遠,千里之行、始于足下;而民科表現出異于常人的妄,他們不思進取,卻驕傲自滿。民科是要不得的。民科的問題在于無法認識到自己的民科性質,遺憾的是,民科們很可能無法讀到這篇可能改變他們的文章。
“一葉障目,不知泰山”是這類開發人員的通病。他們喜歡用自己笨拙的邏輯嵌套去重新構造一個個狀態機以求解決復雜的問題。最終的結果往往是,錯綜復雜,局面失控、項目失敗。而在不遠的隔壁網站,可能早有定義好、完善的問題域描述與實現協議,很可能在一些社區已經有人提供了具體的實現。
專業的人也是從初學者成長起來的。不同的是,他們更謙遜,懂得發現問題并從問題中學習。他們在解決問題之前,總是先分析思考問題的來由和價值,尋求高效、洽當的方法,在最終解決之后,人們評價他們為“專業的”。問題解決的多了之后,分析思考和總結反省也多了,在解決過程中尋找和得到的方法也多了,向他人咨詢得到的建議和經驗也多了,最終他們成為了技藝精湛的專業人士。專業的人不光有錘子,還有不少其他工具。他們懂得用錘子對付釘子、用刀對付木頭,而何時該用鋸子對付竹子。
“循規蹈矩”是人們對學院派的刻板印象,人們不屑地斥責他們不懂創新。然而專業的人在打破規則之前,一定懂得何時該嚴格遵從現有規則,又在何時出手打破規則完成創新。他們了解規則背后的原理,并且不受到這些規則的拘束。
專業的開發人員懂得責任所在,懷有敬畏之心對待自己的工作。他們認真寫好每一個函數、仔細設計每一個接口,條理清晰地理解業務,逐字逐句地斟酌給用戶的文案,及時友好地與各方干系人溝通,他們是令人信任的合作伙伴。
成為專業的開發人員
專業性體現在日常工作的時刻細節之中。從野生到專業的成長過程是漫長的,當追求專業成為了一種生活態度,也就成為了專業的人士。
大家都聽說過關于數學家高斯小時候得出100以內累加和的簡單算法的故事,高斯正是在蠻力運算之前做了必要的觀察思考才得出更高效的解法。開發人員在面對問題時,也應該首先思考問題的來路去脈,尋找現有最佳實踐——那些廣泛運用、被證實有幫助的方法,了解那些實踐能提供的價值,以及運用時可能帶來的挑戰,基于它做出必要的調整以適應當前的問題,然后基于自己的實踐持續改進這些方法。在獲得了寶貴的經驗與教訓之后,不要忘記將這些總結分享給后來者,至少在別人問到的時候給出真誠地實事求是的建議。
通往專業的成長之路是漫長的,在能夠耐得住寂寞的同時,還需要克服一系列難以想象的困難。我們經常討論學習的過程有守、破、離三個階段,也就是對應新手、進階和專家的三個層次。一般來說,大家都對新手很熱情,有很多入門教程、快速上手等資料,但對于已經通過“21天快速入門”的人來說,如何成為高階玩家是一個很值得在線等的急事。在這里需要說明的一個現實情況是,這樣的成長過程是等不來的。你要治得了自己的拖延癥,在周六的清晨起床開始練習TDD;你要放得下玩了一半的游戲,一篇推送的技術文章都能讓你跟著鏈接學習一整晚;你要管得住自己探索萬物起源的好奇之心,耕耘屬于自己的專業領域……專業的成就,需要刻意的長期的練習,最好還要有良師益友的幫助。
有一些方法能夠讓這個成長過程更順利。“學而不思則罔,思而不學則殆”,孔夫子的思想淵遠流長,如今它一樣適用于開發人員的成長之路。嘗試使用靈活而開放的心態,了解認識各種思想與方法論,積極嘗試新出現的事物和概念,這能開拓視野、不斷充實自己的工具箱;而批判性思維的習慣讓我們冷靜思考、客觀理性,即使面對最佳實踐也不盲從,傾向于更全面地了解并分析論證,消化為自己的經驗與能力。
最后,只剩火候。方向對了,火候到了,就錯不了。耐心是這個時代最為缺少的因素,而在追求專業的路上,缺了耐心是容易走火入魔的。人們常說的“每次了解得多一點,也就發現不懂的原來更多”確是事實,當某一天你體驗到這一點,充分了解自己目前所處的狀態,并淡定自信地繼續上路,那么你就已經乘上了專業的順風車。
寫在最后
開發人員普遍對在其他行業習以為常的資格證書、學歷這些用于評估職業技能水平的方式不以為然。這確實有助于軟件技術以及互聯網等相關行業的發展。得益于行業準入門檻低,加上近年來國內互聯網行業快速成長對開發人員的巨大需求,軟件開發人員的隊伍在近幾年快速龐大了起來。
這并不妨礙專業性仍然是一桿秤,它存在于人們心中。無論是與開發人員自己,與開發人員合作的團隊其他人員,還是體驗著由他們開發的產品的用戶,大家都對開發人員是否專業有著明確的理解與結論。
<br />
(未經授權,禁止轉載)