給剛畢業的大學生和剛入門的程式設計師的忠告及圖書推薦
原文作者喬納森·丹尼可(Jonathan Danylko)是一位自由職業的web架構師和程式設計師,程式設計經驗已超過20年,涉足領域有電子商務、生物技術、房地產、醫療、保險和公用事業。正如喬納 森在文中所言,本文適合剛畢業的大學生和剛入門的程式設計師。如果你已是高階開發人員,或許你在本文中看到自己的身影。
從11歲時,我就一直在程式設計,並且一直都很喜歡技術和程式設計。這些年來,我積累了一些艱難又容易的經驗。作為一名程式設計師,你或許還沒這些經驗,但我會把它們獻給那些想從中學到更多的朋友。
我會持續更新這些經驗,我可能還會有更多的感想,但就我這20年來看,我想下面這個列表中基本不需要增添額外的東西了。下面就是我至今最難忘的經驗。
1.估算解決問題所需要的時間。不要怕,承認吧!我曾見過一些程式設計師為了解決一個特殊問題而坐在顯示器前面8小時。為自己定一個時間限制吧,1小時、30分鐘或甚至15分鐘。如果在這期間你不能解決問題,那就去尋求幫助,或到網上找答案,而不是嘗試去做“超級堆碼員”。
- 來讀《番茄工作法圖解:簡單易行的時間管理方法》吧!讓你工作起來更輕鬆。
學會使用《番茄工作法圖解:簡單易行的時間管理方法》你會發現不知不覺工作做完了,瑣事一件件的全都完成了,心情愉悅,生活品質也就有了提高。快來學習吧!
2.程式語言是一種語言,只是一種語言。隨著時光推移,只要你理解了一種語言的原理,你會發現各種語言之間的相似之處 。你所選擇的語言,你應該覺得“舒服”,並且能夠寫出有效(而且簡潔)的程式碼。最重要的,讓語言去適應專案,反之亦然。
- 來讀《七週七語言:理解多種程式設計範型》吧!讓你發現另外的程式設計之美。
《七週七語言》共介紹了七種不同的程式語言。對於每種語言,分別介紹了各自的特性、應用,以及程式設計入門知識和關鍵程式設計範型,還帶領讀者使用能夠代表該語言最重要特性的技術,解決某個不尋常的問題,使其充分掌握每種語言。對開闊視野非常有幫助。
3.不要過於注重程式的“設計模式”。 有時候,寫一個簡單的演算法,要比引入某種模式更容易。在多數情況下,程式程式碼應是簡單易懂,甚至清潔工也能看懂。
來看《面向模式的軟體架構》吧!共5卷,軟體開發從業人員學習和研究設計模式的必讀之作。
4.經常備份程式碼。在我年輕時,我就有過因硬碟故障而丟了大量程式碼的經歷,這經歷很恐怖的。只要你一次沒有備份,就應當像有著嚴格的期限,客戶明天就需要。此時就該原始碼/版本控制軟體大顯身手了。
來讀《精通Puppet配置管理工具》吧!雲端計算時代系統管理員必備圖書。
5.承認自己並不是最頂尖的程式設計師 - 知不足。我常想,我對程式設計瞭解已足夠多,但是總有其他人比你優秀。正所謂,“一山總比一山高”。所以,向他們看齊吧!
來看《一個程式設計師的奮鬥史》吧!笑對程式設計師的喜怒哀樂。
6.學習再學習。正如第5點所說,我經常會在手裡拿一本計算機或程式設計相關的雜誌或書(不信,可以問我的朋友)。誠然,總有很多你不知道的技術,你可以從中學習以保持不落後。如果你有一種靈巧的方式來獲取你需要的新技術,那你每天都應該堅持學習。
- 來看《程式碼的未來》吧,帶你領略程式碼未來的發展史。
《程式碼的未來》作者對雲端計算、大資料時代下的各種程式語言以及相關技術進行了剖析,並對程式語言的未來發展趨勢做出預測,內容涉及Go、VoltDB、node.js、CoffeeScript、Dart、MongoDB、摩爾定律、程式語言、多核、NoSQL 等當今備受關注的話題。
7.永恆的變化。你 對待技術/程式設計知識,就應像你對待股票一樣:多樣化。不要在某一特定技術上自我感覺良好。如果那種技術或語言已經沒有足夠支援,那你還不如現在就開始更新你的簡歷,並啟動培訓新計劃。我能保持前行的主要原則是什麼呢?至少了 解兩到三種語言,所以,如果某種語言過時了,你在學習新技術的時候還可以依靠另一種語言。
來看《自制程式語言》吧,自己強大才是真的強大!
8.提攜新人。協助並且培養初級/入門的開發人員學習優秀的程式設計方法和技巧。也許你還不知道,在幫助他們向更高一層前進時,你自己也在向更高一層提升,你會更加自信。
- 來看《你的燈亮著嗎?發現問題的真正所在》吧!你會開啟另一扇窗。
《你的燈亮著嗎?》溫伯格經典名著,六個主題。每個主題都有若干生動有趣而又有警戒意義的故事作為主線,通過對故事中實際問題的解決,引申出作者對於問題解決領域的重要觀點,為人們思考能力的提高提供了一些啟迪性的幫助。
9.簡化演算法。程式碼如惡魔,在你完成編碼後,應回頭並且優化它。從長遠來看,這裡或那裡一些的改進,會讓後來的支援人員更加輕鬆。
- 來看《迷茫的旅行商:一個無處不在的計算機演算法問題》吧!開啟演算法問題的大門。
《迷茫的旅行商》第二章從圖論、尤拉回路、哥尼斯堡七橋問題,介紹到騎士周遊問題、哈密頓迴路、四元色問題,可以看出旅行商問題演算法果真是無處不在,且影響生活中的方方面面。
10.編寫文件。無論是Web服務的API,還是一個簡單的類,你儘量編寫相應文件。我曾經引以為豪的程式碼註釋,因過度註釋而有人指責。給三行程式碼加一行註釋,只需要你幾秒時間。如果那是一個比較難以理解的技術,千萬別擔心過多註釋。如果你能很好做好自己的工作,大多數架構師、後備程式設計師、支援組都會感激你。
來看《高效程式設計師的45個習慣:敏捷開發修煉之道》吧!幫忙養成好習慣。
11.測試、測試再測試。我是一名黑盒測試粉絲。當你完成編碼後,你“被認可”的時候就開始了。如果你們公司有QA部門,如果你的程式碼中有錯誤,那你得到的評論,會比專案經理還多。如果你不徹底測試自己的程式碼,那恐怕你開發的就不只是程式碼,可能還會聲名狼藉。
- 來看《軟體測試實戰:微軟技術專家經驗總結》吧!測試一步到位。
沒有測試,對釋出者來說,就無法對質量有信心;對開發者來說,就有可能在修改程式碼的時候捅出了大婁子自己還不知道。《軟體測試實戰:微軟技術專家經驗總結》 總結了作者多年從事軟體測試研究與實踐的經驗,旨在幫助測試人員建立正確的觀念,並掌握一批切合實戰的測試技術。
12.慶祝每一次成功。我見過很多程式設計師在解決程式設計技術難題後,會和同伴握手、擊掌或甚至手舞足蹈。每個人在生命中都會碰到“頓悟”。如果一個程式設計師高興地跑來叫你去看他的非凡程式碼,也許你已經看過這樣的程式碼100遍了,但你也應該為了這個傢伙而慶祝第101次。
來讀《達人迷:認知行為療法(第2版)》吧!對行為的認識非常重要。
13.經常檢查程式碼。 在公司,你的程式碼要經常檢查(包括自查和其他同事檢查)。不要把別人的檢查,看成是對程式碼風格的苛求。應該把它們看作是有建設性的批評。對個人來說,經常檢查你的程式碼並且自問,“我怎樣才能寫得更好呢?” 這會讓你加速你的成長,讓你成為一個更優秀的程式設計師。
來讀《差錯:軟體錯誤的致命影響》吧!擁有一個好習慣是走向成功的開始!
14.回顧你的程式碼。在看到自己以前的程式碼時,通常會有兩種方式:“難以至信,這程式碼是我寫的”和“難以至信,這程式碼是我寫的”。第一種往往是厭惡的語氣,並在想如何改進它。你也許會驚歎,舊程式碼也能復活成為一種更好的程式,甚至是一個完整的產品。第二種通常帶著驚奇和成就感。開發人員應該一到兩個自己完成的專案成果,能讓眾人不禁而立並注目而觀的專案。同樣,基於你優越的程式設計能力,你可以把過去的程式或專案拿出來,把它 們更新為更加優秀的產品或想法。
來讀《卓越程式設計師密碼》吧!從普通轉向卓越就是這麼簡單。
15.幽默是不可缺的。在我20年的開發生涯中,我還沒有碰到哪位程式設計師是沒有幽默感的。實際上,幹我們這行,幽默是一項必備品。
- 來讀《每個人都會死,但我總以為自己不會》吧!如果幽默都化解了死亡的恐懼,生活還能不快樂嗎?
《每個人都會死,但我總以為自己不會》卡思卡特、克萊因著。海德格爾、叔本華、尼采、加繆等大哲學家帶你揭開死亡難題,伍迪•艾倫領銜眾幽默大師與你笑侃死亡。讓我們直面生死,笑對人生。
16.謹防那些無所不知的程式設計師,不願分享的程式設計師,還有經驗不足的程式設計師。當你遇到這幾種程式設計師時,你自己要謙虛。無所不知的程式設計師,更想當一個英雄而不是團隊成員;保守的程式設計師則是在編寫著他們獨享的程式碼;而經驗不足的程式設計師則會每十分鐘就來問你一下,當程式碼完成後,程式碼已經是你的,而不是他們。
來讀《程式設計師,你傷不起》吧!各種奇葩經歷讓你大呼過癮。
17.任何專案都不會那麼簡單。朋 友、家人和同事曾請求我倉促做一些事情,倉促做一個程式或者網站。對於這樣的事,應該從雙方做計劃,才能做出令兩方都會滿意的東西。如果某人起初只是需要一個使用Microsoft Access的、只有有3個頁面的網站,但來就很可能變成一個有15個頁面的網站,並使用SQL Server,有一個論壇,還有一個定製的CMS(內容管理系統)。
來讀《持續交付:釋出可靠軟體的系統方法》吧!如何更快、更有效的交付才是硬道理。
18.任何時候不要想當然。假如你承接一個簡單的專案,你可能會認為某個部分可以輕鬆完成。千萬別這樣想!除非你有一個類、元件、或者一段已經寫好的程式碼,並且在現有的專案已經測試通過。不要認為這將是很容易的。
來讀《專案經理應該知道的97件事》吧!未雨綢繆總是好的。
19.沒有已經完成的軟體。曾經有一位程式設計師告訴我,沒有軟體是已經完成的,它只是“暫時完成了”。這是明智的忠告。如果客戶還在使用你寫的程式,並經受了時間的考驗。如果有機會,你仍在更新它,這並不是什麼壞事,這讓你不斷地前行。
- 來讀《軟體開發與創新:ThoughtWorks文集(續集)》吧!Martin Fowler大師的真知灼見一定會對你有所啟發。
《軟體開發與創新:ThoughtWorks文集(續集)》不僅涵蓋了語言、整合和測試等領域的最新變化,而且還包括了Java伺服器端開發的最新動向。文集既對軟體開發新手頗有助益,又能幫助經驗豐富的程式設計師過渡到新的開發領域。
20.耐心是一種美德。當客戶、朋友或家庭成員用電腦的時候,他們也許會受挫,進而想砸電腦,或氣沖沖地離開。我一直在 告訴他們,“是你掌控電腦,不是電腦掌控你。”對於用作程式設計的電腦,你要有一定的耐心。一旦程式設計師知道問題所在後,他們就會站在電腦的角度看問題,並且說 “哦,這就是為什麼它是這樣做。”
- 來讀《諮詢的奧祕:尋求和提出建議的智慧》吧!大智慧都在這裡。
《諮詢的奧祕:尋求和提出建議的智慧》這是溫伯格最睿智的作品,堪比《登山寶訓》,但要好玩多了。不管你做什麼工作,只要需要和人打交道,就應該立即讀讀這本書!
本文出處:伯樂線上
本文連結:http://blog.jobbole.com/322/
原文:Jonathan Danylko 編譯:伯樂線上 – 黃利民
在轉載後每個建議下推薦了一本圖靈圖書。
相關文章
- 獻給剛入職場的草根java程式設計師Java程式設計師
- 一個老程式設計師對剛上大學的學弟學妹的忠告程式設計師
- 碼工成長手冊:剛畢業的程式設計師如何快速提升自己?程式設計師
- 給程式設計師的18個忠告程式設計師
- 春天裡,推薦給程式設計師們的技術書程式設計師
- 圖靈九月書訊 ——金秋時節推薦給程式設計師們的書圖靈程式設計師
- 致剛入職場的你 - 程式設計師的成長筆記程式設計師筆記
- 【黑馬程式設計師西安中心】激動!剛剛人事給我發offer了.......程式設計師
- 剛工作的程式設計師要知道的知識程式設計師
- 技術總監,送給剛畢業的程式設計師們一句話——做好小事,才能成就大事程式設計師
- 推薦給程式設計師的一些書(不止是技術書)程式設計師
- 給各位程式設計師的一些忠告程式設計師
- 我是個程式設計師 大學剛畢業去一家公司面試程式設計師面試
- 推薦給 iOS 設計師的工具和資源iOS
- 程式設計師推薦書單程式設計師
- 給入門Java的小白推薦一本書Java
- 一個剛畢業前端的年度總結前端
- 大學剛畢業,零基礎大資料如何入門?大資料
- 推薦Java程式設計師閱讀的書籍Java程式設計師
- 《圖靈的祕密》—— 推薦給所有想學數學的程式設計師圖靈程式設計師
- 一個十幾年程式設計師給所有新老程式設計師的忠告程式設計師
- 書單推薦:每個程式設計師必看的11本書程式設計師
- 平均年薪70萬?剛剛,這類程式設計師又漲薪了程式設計師
- 國外程式設計師推薦:每個程式設計師都應讀的書程式設計師
- 頂級程式設計師推薦的程式設計開發書籍【整合】程式設計師
- 多疑到剛剛好:防禦性程式設計程式設計
- #給java程式設計師的10條建議,吐血推薦!Java程式設計師
- 剛掙錢的程式設計師同學該如何花錢?程式設計師
- 《程式設計師健康指南》:給程式設計師的健康書程式設計師
- 強烈推薦10本程式設計師在家讀的書程式設計師
- 程式設計師必讀的書,StackOverflow 創始人推薦程式設計師
- 國外程式設計師推薦的免費程式設計書籍資源程式設計師
- 某資深程式設計師寫給後來者的忠告程式設計師
- 大學剛畢業可以學Java嗎?Java
- 國外程式設計師推薦:每個程式設計師都應該讀的非程式設計書程式設計師
- 程式設計師強烈推薦的熱門免費api程式設計師API
- 剛入職場初次面試程式設計師崗,這些情況的公司可別去!面試程式設計師
- 如何不被程式設計師嫌棄——寫給那些血氣方剛的產品經理程式設計師