普通程式設計師走向“專業”的燈塔

袁野發表於2012-11-14

看完此書第一個感覺就是:大叔也是跌跌撞撞一路走來,什麼時候才能成為大叔這種級別的高手呢!

   兩週前拿到這本書,在地鐵、程式編譯間隙把書看完了。“編譯間隙”,正如作者在“練習”一章的注裡講的“這是悲劇”,事實上我們可以等待很少的時間或者不需要等待,只要足夠仔細,我知道等待程式編譯不好,但是卻沒能去修改。我們的程式每次更新程式碼都必須重新編譯連結,否則就會出現莫名其妙的錯誤,而我們使用的機器又很老舊。沒有人知道怎麼修改工程,公司沒給我們配備夠用的機器,我也沒掏錢去買機器。知易行難。

   第一章的簡述,基本把後面的內容都總結了一遍,看看目錄,再看看第一章就能有不少收穫了。    書寫得很通俗,關於非技術層面的職業素養,很多地方能產生共鳴,看到這些地方是對自己的一次次鼓勵。這裡邊很多知識點其它書籍也有涉及。

   關於拒絕。很多非技術性書籍都提到這點,之前也在部落格上看到些深刻分析的好文章(如:http://blog.liancheng.info/denial-of-service/#.UJ8vJW9ENIF)。現在又從作者這裡看到一次完整的剖析,以我的經驗來看,作者也許有點過於理想化了。如果遇上的是一個沒有團隊精神的leader,或者leader能力不濟,那麼說“不”可能導致受排擠。如果自身能力不足,不能做好評估,那麼不會有說“不”的底氣,更多的是“試試看”。更多的時候是如書中所說的,業務人員(更多的時候是leader)向客戶(更多的時候是leader的leader)承諾某某天要完成某某產品,然後壓著底層技術人員拼命的加班,這是很無奈又很普遍的事情,這是國情所致吧。一週工作40小時,自己學習20小時,這是很理想的境界,能做到的恐怕不多,特別是那些寫程式碼的程式設計師。作者以他的經歷,告訴了我什麼是對的,什麼是不對的,但我也僅能做到知道而已。一天能純粹幹活8小時嗎?一週能上班5天嗎?能每天學習3小時嗎?專業人士能做到,現在我還不專業。

   關於承諾。拒絕跟承諾是相對應的,拒絕就是為了堅守承諾,不懂拒絕的人慢慢的就會淪為不守承諾的人,當然也有可能他從來就不曾把信守承諾當回事,這些年的計算機大熱,讓不少非專業人士也混進來了。跟拒絕一樣,專業人士能做到。我現在做不到,嘗試過這麼做,但實際上行不通。他們會要求你2天干完3天的活,假如你不敢說“是”,那麼這工作就沒你份了,他們會尋找說“是”的人幹活,結果說“是”的人3天或者更長的時間才幹完,這不重要,因為他們已經習慣了延期。有些書籍裡批評了這種先應承下來,然後再延期完成的做法,但很不幸這是生存之道。作者的文字,立了標杆,我一直都是在向專業人士靠近,Yeah!什麼時候才能勇敢的說“是”和“不”呢?在一個信守承諾的環境下,足夠專業的時間評估,有足夠的團隊精神的團體。

   關於程式設計。最讓我感到詫異的是,居然要避免進入流態區,我之前可是感覺良好,有時候寫到凌晨,感覺幹了很多活。當然也冒出了很多錯誤,但我以為這是熬夜寫程式碼導致的錯誤。熬夜寫程式碼是很不好的事情,但是像我這樣的小碼農避免需要更大的勇氣。看到關於“衝刺”、“加班加點”部分的時候,會感慨那些程式設計師真幸福。我們還處在作者一週幹70、80小時的那個時代。

   關於測試驅動開發。看起來真是個好方法,我也能體會到,但沒在專案中實踐過。現在看到爛程式碼,都不敢動了,沒有“防墜網”,重構是很危險的事情,就我瞭解的情況,沒防墜網的重構都失敗了,當然,他們不會認為這就是失敗,他們會認為重構後出現的退化是正常的情況。最近遇到了沒文件的程式碼,需要自己除錯驗證某些功能的輸入輸出引數,很自然的寫了測試程式碼,而這些測試程式碼又很自然的可以當作使用說明文件,如果最初寫程式碼的人有重視測試,那麼這些完全可以當作文件留下來,後來者也就不用花時間了,節約公司成本。

   關於練習。回想我短暫的程式設計師日子,練習做的太少,每次都是需要才去學,用完就丟,缺少積累。程式設計師應該像運動員一樣,日復一日的練習,才能成為專家。

   關於完成。這是一個可以大力吐槽的話題。非專業的程式設計師會讓QA代替自測,非專業的程式設計師會把截止日期當作功能完成,聽起來很驚訝,但這是真的,背後可能有各種各樣的原因,可能是程式設計師太嫩,可能是排期太不合理,但理由不重要,專業的程式設計師首先必須是負責任的。我的目標正如作者所說,測試人員應該一個bug也找不出來。這要做到很有難度,你需要清楚的知道這是在做什麼,遇到不聰明的業務人員,要不斷的諮詢,他們到底要什麼,有時候還得跟測試人員解釋,這就是他們想要的,它不是bug。零bug程式是一個標杆。

   關於時間管理。番茄工作法是個不錯的方法,在不少書籍上看到這建議。拒絕不必要的會議,之前也在一些地方看到過。最怕的是遇到尋求存在感的leader,在會議上幫你浪費時間,而不是幫你節省時間。

   關於工作預估。這是個很難的工作,首先必須清楚的知道你的能力,工作的難度,如果一頭霧水,那一切方法都沒用。預估時間時,千萬不要以為週六日、晚上可以加班完成,很少有人能做到7*12一如既往高效率的工作,如果你算上了,那是準備讓別人說你不守承諾。

   關於壓力。在壓力下堅守規律,專業人士的方向。在工期壓力下,能寫漂亮程式碼嗎?能不熬夜嗎?能不加班嗎?不能,那麼工期為什麼會有壓力?有時候,問題本身就不該存在。

   關於程式設計師的培養。程式設計師職業也應該像其它成熟工種一樣平凡,但現實不是這樣子的,即便是作者所在的國度也不是。我們這兒很多人才剛會寫程式碼,還屬於很普通的熟練工,就開始不寫程式碼做管理工作了,然後剛畢業的小朋友都不用培訓就直接上崗大幹,所以我們的情況是——從來就沒有大師,是我們不把程式設計當作職業,而只是臨時工種。從學徒走到現在(大概可以算作初初級熟練工),有些自生自滅的痛苦,作者的理想世界真的不錯,很多時候我太急躁了。

   這本不厚的書,給了普通程式設計師走向“專業”的燈塔。知易行難,“專業”的路上總有各種各樣的攔路虎,也許我會再走作者標明瞭的錯路,我也並不孤單,但心裡知道這是錯誤的,不要走遠。每看到這種書,低沉的士氣會再次振奮。

本文轉自豆瓣網友: 邊緣雛鳥
原文地址:http://book.douban.com/review/5650194/

相關文章