我想選一個詞來形容我們要如何對待程式設計這件事,或是我們要成為一個什麼樣的程式員。
當然,可選的詞彙其實挺多的,比如技術能力強,思維靈活,對技術有熱情,學習能力強等,這些都算得上很好的詞彙。
但我認為,如果需要用一個詞來做為我們的職業上想要達到的境界,我更喜歡專業這個詞。
它幾乎能包含一切其它詞語。
本周,編碼之道的最終章,做專業的程式員
你還記得你為什麼會選擇程式設計這個事?
也許你是因為這個行業的待遇還算不錯,也許是因為對技術比較喜好,也許是對自己一行一行代碼能編寫出有價值的軟體這種成就感更着迷,不論目的如何,終有一個問題,是你需要詢問自己:
我要做一個怎麼樣的程式員
這個問題我給自己的答案是:
待人以誠,處事以專
這是我給自己職業上的座右銘。它大緻的意思是:
對待同僚,客戶或上司等任何人,用最真誠的态度與他們相處,無論我個人是否喜好他們。而對待工作上的事情,則力求做到專業性,用一種專業的态度對對待工作中的事情。
是以,這就是為什麼我在程式設計的過程,我會寫單元測試,努力做到以tdd的方式去編碼,對待後端的開發,我通常會自己使用jmeter做性能測試,因為我想知道我寫的東西性能上是否足夠滿足需求,而我幾乎毫不落下的認真去編寫每一個文檔。而在需要我設計一個原型時,我會購買墨刀的服務去做這個事,因為我覺得這是最基本的專業性的要求,雖然我并不是一個産品經理也不需要做到這個程度。
我在做這些事的過程中,沒有任何人要求過我這樣,它們大多是自我要求的産物。因為我希望自己是一個專業的程式員。
你做為一個程式員的自我要求呢,有沒有思考過這個問題?
那以我不多的經曆來看,做為一個專業的程式員,要怎麼才能做到?
我總結了一些原則,我試着解釋下它們,我希望這些原則能引發你的思考。
原則一:程式設計的最高使命是:維護軟體的業務價值與技術價值
我覺得這是最重要的原則,程式設計這個事的目的是什麼,就是為了維護軟體的業務價值與技術價值。做為程式員,這個原則要時刻牢記在心,我們所有的努力都是為了這個目标。
而關于業務價值與技術價值,我在編碼之道的前面的文章中已詳細闡述過我的思考了。
原則二:好才是快,效率至上
是的,我知道我們行業的一些情況并不能盡如人意,一些門外漢總是希望通過無止境的延長工作時間來達到他們設定的一些目标。他們的價值觀是:通過延長每日工作時間來做到更快。
這也我們的行業存在大量的垃圾代碼的原因所在。
但我始終告訴自己的一個信念是:想要做的快,唯一的方式是把它做好。
在我的經曆中,遇見很多次類似的經曆,那種一開始通過過度加班來達到短期目标,而在後期卻發現需要付出越來越多的時間來保持可維護性的例子挺多的。
我确實深刻的了解到了一個事實就是:
沒有好,想要快就如同鏡中花,水中月
做正确的事
google最開始的口号是"不做惡",後面在某一年開始,他們把它改成了"做正确的事"。
做正确的事當然比不做惡的要求更高。
那對于我們程式設計來說,什麼叫做正确的事?這是需要你去思考的。
在robert c.martin的《程式員的職業素養》這本書中,有兩個章節我覺得非常契合這個理念,其中一個是說不,另外一個是承諾。
也就是:
該說不的時候要說不,該做承諾的時候要承諾并做到
要事優先
這其實是時間管理中的一個理念,我們的所有事,可以按照緊急程度與重要程式進行切分,這樣就會有重要且緊急的事,重要但不緊急的事,不重要但非常緊急的事,不重要且不緊急的事四個象限。
你要學着對自己的任務進行分類,并且你會随時随地面臨一個選擇:
究竟是緊急的事做先處理,還是重要的事優先處理?
要事做先,這是标準答案。
但我遇到情況是:講要事優先的人多,真正這樣做的人卻不多。
舉個例,知道要事優先的人,無論在什麼樣的處境下,都能盡最大努力做到編寫單元測試,因為這是極其重要的事。雖然可能有更緊急的進度功能開發情況,但要事優先,不是嗎?
保持對技術的熱情與學習
如我在編碼之道中反複說的一個點就是:術是不斷變換的,而道則穩定得多。
我們不停的在用不同的術在編寫我們的代碼,年複一年,它們永遠在變化,在更新。雖然我認為學習道是更重要的,但學習道的根本方式就是通過不斷的去使用不同的術來達到的。
是以,不要把自己停在某一個點上,也就是自我限制自己隻能使用某些語言或架構,如果有機會,就去嘗試使用不同的。
這就需要一個前提,你需要保持對技術的熱情與學習。
而一個程式員,如果失去了對技術的熱情,程式設計這件事就注定不可能做好了。
言必行,諾必達
《程式員的職業素養》中有個章節就是在講程式員如何說是,也就是怎麼去做承諾。
我覺得我們的文化有更優雅的詞來形容它,就是言必行,諾必達
程式員需要謹慎的做出承諾,而一旦做出承諾,就要努力做到。
而技術人員與非技術人員之間總是有一道隔閡的一個重要原因也在于,非技術人員不了解技術,而了解技術的我們很多時候做出來的承諾沒有完成。約定時間需要完成的功能沒有按時完成,期望的品質無法達到。于是很多非技術人員在管理上就選擇延長每日工作時間來預防以及解決這些。
是以,如果你期望别人不會以一種門外漢的姿态來幹涉你,我認為你得做到這一點,就是你得很專業,不僅如此,要讓那些不懂技術的也知道你很專業,而且你能說到做到。
這樣,相信外行上司内行的情況就會慢慢變少了。
當然,技術上的東西有些困難或情況我們是壓根沒有辦法預料到的,這是正常的情況,你隻需要及時更新情況,并據此做出新的承諾就好了。
這便是我在自己三十五歲時,從事了十多年的編碼之後,在幾乎完整的參與了後端,移動端,桌面端,前端各個方向的開發後,形成的一些對技術的感悟與了解。
是以,我把它們用文章的形式記錄下來。
我希望自己在四十五,五十五以及六十五時,能夠對編碼有不同的感悟與了解,到那個時候,我會再次重寫編碼之道這個系列。
這也是微言碼道的來源與初衷。
是以微言碼道的口号是:
用我們微小的力量傳播編碼之道
它并不是居高臨下式的傳播與指教。而是在了解到了技術如同大海一樣深不可測,廣不可視之後的自我努力與嘗試。并且希望能有更多程式員一起去不斷的探索程式設計這個事,把程式設計這件事做的更好。
是以,編碼之道這個系列,我與自己許下一個約定:
十年後再見