大學時專業(yè)是機械,工作后來才干了軟件。所以對于軟件我可以說是半路出家。但一路走來還真應(yīng)該感謝幾位導師以及他們的幾句話,這些話讓我在鉆研技術(shù)的同時也在不斷思考。
1 可以理解的才是代碼,無法理解的是垃圾
這是我進入公司后印象深刻的第一句話,這句話也讓我立刻意識到我之前寫過的成千上萬行曾經(jīng)還讓我自信滿滿的代碼很可能就是垃圾,因為自從我寫過后就不想再去看。從那以后,我就開始為不制造垃圾而努力!
2 最難的是命名
那時導師無論對設(shè)計還是代碼都要求很嚴格。代碼檢查的時候會不時地提出一些命名問題。有的是詞不達意,有的是牛頭不對馬嘴。對于命名問題,被指出后可以很快有更改方表明對問題還是有比較深刻的認識,只是命名時沒有太在意。如果很難給出更改方案,那很有可能有更深層次的問題,要么函數(shù)結(jié)構(gòu)不合理,要么根本沒有理解問題域。有時命名不是單純的名字問題,同時還和分析設(shè)計有密切聯(lián)系。
3 對自己放松就是對他人苛刻
無論是做設(shè)計還是寫代碼,很多時候都要和團隊成員交流或者交付給他們使用。如果在這過程中不嚴格要求自己,凡事都差不多就行,到最后可能就會苦了團隊成員,這很有可能還是包括自己。試想下,如果經(jīng)過一段時間后自己要重新面對以前做過的,是不是很有可能會掉進當初自己設(shè)下的陷阱呢?
4 分清事實和假設(shè)
這是遇到問題的時候,導師教給我的一句話。我在一次連續(xù)一周的“抓蟲”行動中對這句話的感受尤為深刻。開始的幾天每天都在懷疑不同的東西,而且不斷地改變方向。這樣下來感覺每天都很忙,但都沒有進展和頭緒。到了后來不得不改變策略,嚴格分清事實和假設(shè)并開始明確方向,隨著更多的假設(shè)被證實,“蟲蟲”也就無處藏身了。
5 這不是在設(shè)計,而是拼湊
再后來加入了一個新的團隊,遇到了新的導師。不過我還是用原來的方式努力設(shè)計編碼。但每每我提交設(shè)計的時候,導師都會告訴我“這不是在設(shè)計,而是拼湊”。開始確實感覺很受打擊,而且有些不服氣,“以前我都這樣的,也沒有人指出什么不是,為什么到你這里就這樣啊。人和人差別咋就怎么大呢?”但隨著一次次被否定后一次次的修改,我開始感受到了不一樣,看到了欣喜的變化。最后我不得不承認當初自己確實在拼湊,而且拼湊得理所當然。
6 程序員應(yīng)該為這樣的代碼感到慚愧!
這是一次代碼檢查中的事。那時為了滿足公司的一個編碼規(guī)約,我把很自然的邏輯反過來寫,不僅代碼多了,而且也更難理解。當被指出問題后,我理直氣壯地說這是編碼規(guī)約規(guī)定的。這時導師就指出了“程序員應(yīng)該為這樣的代碼感到慚愧!編碼規(guī)約是死的,人是活的,認為對的就應(yīng)該堅持和嘗試”。會后我反思了下,其實寫代碼的時候我就很矛盾,但一念之差我還是選擇了編碼規(guī)約。后來在遇到類似的情況,我就更有勇氣聽自己的心,至少嘗試一下。否則感覺對不起這樣一個職業(yè)。
上面的很多話都已經(jīng)過去很久了,但每當想起總還感覺就在耳邊。這也許是因為他們真正觸到了我的心,并讓我的大腦不斷思考。
來源:51CTO