我想選一個詞來形容我們要如何對待編程這件事,或是我們要成為一個什么樣的程式員,
當然,可選的詞匯其實挺多的,比如技術能力強,思維敏捷,對技術有熱情,學習能力強等,這些都算得上很好的詞匯,
但我認為,如果需要用一個詞來做為我們的職業上想要達到的境界,我更喜歡專業這個詞,
它幾乎能包含一切其它詞語,
本周,編碼之道的最終章,做專業的程式員,本系列的其它文章為:
- 編碼之道(一):程式員的"圣經"
- 編碼之道(二):軟體的價值
- 編碼之道(三):編碼的困境,失衡的價值
- 編碼之道(四):編碼有術,術中有道
- 編碼之道(五):變化的術,及永恒的道
- 編碼之道(六):程式員的修練之道
- 編碼之道(終):做專業的程式員
編碼的初心
你還記得你為什么會選擇編程這個事?
也許你是因為這個行業的待遇還算不錯,也許是因為對技術比較喜好,也許是對自己一行一行代碼能撰寫出有價值的軟體這種成就感更著迷,不論目的如何,終有一個問題,是你需要詢問自己:
我要做一個怎么樣的程式員
這個問題我給自己的答案是:
待人以誠,處事以專
這是我給自己職業上的座右銘,它大致的意思是:
對待同事,客戶或領導等任何人,用最真誠的態度與他們相處,無論我個人是否喜好他們,而對待作業上的事情,則力求做到專業性,用一種專業的態度對對待作業中的事情,
所以,這就是為什么我在編程的程序,我會寫單元測驗,努力做到以TDD的方式去編碼,對待后端的開發,我通常會自己使用JMeter做性能測驗,因為我想知道我寫的東西性能上是否足夠滿足需求,而我幾乎毫不落下的認真去撰寫每一個檔案,而在需要我設計一個原型時,我會購買墨刀的服務去做這個事,因為我覺得這是最基本的專業性的要求,雖然我并不是一個產品經理也不需要做到這個程度,
我在做這些事的程序中,沒有任何人要求過我這樣,它們大多是自我要求的產物,因為我希望自己是一個專業的程式員,
你做為一個程式員的自我要求呢,有沒有思考過這個問題?
那以我不多的經歷來看,做為一個專業的程式員,要怎么才能做到?
我總結了一些原則,我試著解釋下它們,我希望這些原則能引發你的思考,
專業的程式員的幾大原則
原則一:編程的最高使命是:維護軟體的業務價值與技術價值
我覺得這是最重要的原則,編程這個事的目的是什么,就是為了維護軟體的業務價值與技術價值,做為程式員,這個原則要時刻牢記在心,我們所有的努力都是為了這個目標,
而關于業務價值與技術價值,我在編碼之道的前面的文章中已詳細闡述過我的思考了,
原則二:好才是快,效率至上
是的,我知道我們行業的一些情況并不能盡如人意,一些門外漢總是希望通過無止境的延長作業時間來達到他們設定的一些目標,他們的價值觀是:通過延長每日作業時間來做到更快,
這也我們的行業存在大量的垃圾代碼的原因所在,
但我始終告訴自己的一個信念是:想要做的快,唯一的方式是把它做好,
在我的經歷中,遇見很多次類似的經歷,那種一開始通過過度加班來達到短期目標,而在后期卻發現需要付出越來越多的時間來保持可維護性的例子挺多的,
我確實深刻的理解到了一個事實就是:
沒有好,想要快就如同鏡中花,水中月
做正確的事
Google最開始的口號是"不做惡",后面在某一年開始,他們把它改成了"做正確的事",
做正確的事當然比不做惡的要求更高,
那對于我們編程來說,什么叫做正確的事?這是需要你去思考的,
在Robert C.Martin的《程式員的職業素養》這本書中,有兩個章節我覺得非常契合這個理念,其中一個是說不,另外一個是承諾,
也就是:
該說不的時候要說不,該做承諾的時候要承諾并做到
要事優先
這其實是時間管理中的一個理念,我們的所有事,可以按照緊急程度與重要程式進行切分,這樣就會有重要且緊急的事,重要但不緊急的事,不重要但非常緊急的事,不重要且不緊急的事四個象限,
你要學著對自己的任務進行分類,并且你會隨時隨地面臨一個選擇:
究竟是緊急的事做先處理,還是重要的事優先處理?
要事做先,這是標準答案,
但我遇到情況是:講要事優先的人多,真正這樣做的人卻不多,
舉個例,知道要事優先的人,無論在什么樣的處境下,都能盡最大努力做到撰寫單元測驗,因為這是極其重要的事,雖然可能有更緊急的進度功能開發情況,但要事優先,不是嗎?
保持對技術的熱情與學習
如我在編碼之道中反復說的一個點就是:術是不斷變換的,而道則穩定得多,
我們不停的在用不同的術在撰寫我們的代碼,年復一年,它們永遠在變化,在更新,雖然我認為學習道是更重要的,但學習道的根本方式就是通過不斷的去使用不同的術來達到的,
所以,不要把自己停在某一個點上,也就是自我限制自己只能使用某些語言或框架,如果有機會,就去嘗試使用不同的,
這就需要一個前提,你需要保持對技術的熱情與學習,
而一個程式員,如果失去了對技術的熱情,編程這件事就注定不可能做好了,
言必行,諾必達
《程式員的職業素養》中有個章節就是在講程式員如何說是,也就是怎么去做承諾,
我覺得我們的文化有更優雅的詞來形容它,就是言必行,諾必達
程式員需要謹慎的做出承諾,而一旦做出承諾,就要努力做到,
而技術人員與非技術人員之間總是有一道隔閡的一個重要原因也在于,非技術人員不理解技術,而理解技術的我們很多時候做出來的承諾沒有完成,約定時間需要完成的功能沒有按時完成,期望的質量無法達到,于是很多非技術人員在管理上就選擇延長每日作業時間來預防以及解決這些,
所以,如果你期望別人不會以一種門外漢的姿態來干涉你,我認為你得做到這一點,就是你得很專業,不僅如此,要讓那些不懂技術的也知道你很專業,而且你能說到做到,
這樣,相信外行領導內行的情況就會慢慢變少了,
當然,技術上的東西有些困難或情況我們是壓根沒有辦法預料到的,這是正常的情況,你只需要及時更新情況,并據此做出新的承諾就好了,
十年之約
這便是我在從事了十多年的編碼之后,在幾乎完整的參與了后端,移動端,桌面端,前端各個方向的開發后,形成的一些對技術的感悟與理解,
所以,我把它們用文章的形式記錄下來,
我希望自己十年后,二十年后,能夠對編碼有不同的感悟與理解,到那個時候,我會再次重寫編碼之道這個系列,
這也是微言碼道的來源與初衷,
所以微言碼道的口號是:
用我們微小的力量傳播編碼之道
它并不是居高臨下式的傳播與指教,而是在理解到了技術如同大海一樣深不可測,廣不可視之后的自我努力與嘗試,并且希望能有更多程式員一起去不斷的探索編程這個事,把編程這件事做的更好,
所以,編碼之道這個系列,我與自己許下一個約定:
十年后再見
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/302182.html
標籤:其他
上一篇:好家伙!Java程式員開發了一套系統,賣了800萬,成都買了6套房!屬實是走上人生巔峰了!
下一篇:資料庫里的小知識??
