Guide 哥:有哪些程序員受用一生的好習慣?

本文來自 Guide 哥開源的 Github 倉庫 programmer-advancement:https://github.com/Snailclimb/programmer-advancement (程序員應該有的一些好習慣)。如果覺得文中的內容對你有幫助的話,不妨去點個 Star!

程序員修煉之路

學習/編程好習慣

養成一個學習習慣和編程習慣真的太重要了,一個好習慣的養成真的對後面的學習有很大幫助。說實話我自己當初在這方面吃了不少虧,很多比較好的習慣我也是後面自己才慢慢發現,所以這裡想著重給大家說一下有哪些好的學習和編程習慣。

正確提問

我們平時任何時候都離不開提問特別是初學的時候,但是真正知道如何正確的提問的人很少。問別人問題前不要來一句“在嗎”,你說你問了在嗎我是回覆好還是不回覆好呢 ?不要讓別人給你發 32 位的 JDK,除非你是喜歡那個人。

更多關於如何提問的內容,詳見 github 上開源版『提問的智慧』 https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md,抽時間看一下,我想看完之後應該會有很多收穫。

更多內容可以查看我的這篇原創文章:如何提問

健康生活

我一直覺得這一方面是最重要的,我想很多人和我一樣會無意識間忽略它,等到真的身體不舒服了,你才開始意識到健康生活的重要性。

  1. 除非萬不得已,不要熬夜了。熬夜的危害就不用多說了,禿頭加內分泌失調,你懂得!
  2. 看電腦 45 分鐘之後,起來走 5 分鐘,看看遠方放鬆一下。不要覺得這 5 分鐘浪費時間,相反,這 5 分鐘可能為你帶來更大的效率提升。
  3. 可以考慮買一個電腦架子,保護好自己脊椎的同時,辦公體驗也會提升很多。
  4. 可以下載一個護眼寶,感覺可以護眼模式挺棒的,非常適合我們這種需要經常盯著電腦的人使用,強烈安利。

高效搜索

儘量用 google 查找技術資料以及自己在學習中遇到的一些問題。

解決 bug

程序遇到問題先在 stackoverflow 找找,大部分別人已經遇到過了。如果上面沒有的話,再考慮其他解決辦法。實在解決不了的話,再去問你覺得有能力幫你解決的人(注意描述好自己的問題,不要隨便截一個 Bug 圖)。

善於總結

學習完任何一門知識後,你可能當時看視頻感覺老師講的挺容易懂的。但是,過幾天后你發現你忘的一乾二淨,別人問你一個類似的問題,你一點思路都沒有。所以,我推薦你學完一門知識後不光要及時複習,還要做好總結,讓知識形成一個體系。另外,你可以假想自己要給別人講這個知識點,你能不能把這個知識點講清楚呢?如果不能,說明你對這個知識點還沒有徹底瞭解。這也就是人們經常說的費曼學習技巧。

總結的方式:

  1. 有道雲筆記、OneNote......這類專門用來記錄筆記的軟件上;
  2. 思維導圖;
  3. 通過寫博客輸出。可以考慮自己搭建一個博客(hexo+GithubPages 非常簡單),你也可以在簡書、掘金......等等技術交流社區寫博客。Markdown 格式參考:https://github.com/sparanoid/chinese-copywriting-guidelines 中文文案排版指北:https://github.com/sparanoid/chinese-copywriting-guidelines

寫博客

寫博客有哪些好處:

  1. 對知識有更加深的認識,讓自己的知識體系更加完整;
  2. 督促自己學習;
  3. 可能會帶來不錯的經濟收入;
  4. 提升個人影響力;
  5. 擁有更多機會;
  6. ......

總的來說,寫博客是一件利己利彼的事情。你可能會從中收穫到很多東西,你寫的東西也可能對別人也有很大的幫助。但是,寫博客還是比較耗費自己時間的,你需要和工作做好權衡。

分享是一種美德,任何行業都不是靠單打獨鬥的,寫博客、寫好博客是一個程序員很好的習慣。我為人人,人人為我!

更多內容可以查看我的這篇原創文章:我為什麼推薦你寫博客?

多用 Github

沒事多去 Github 轉轉,如果有能力可以參與到一些開源項目中。多看看別人開源的優秀項目,看看別人的代碼和設計思路,看的多了,你的編程思想也會慢慢得到提升。除了這些優秀的開源項目之外,Github 上面還有很多不錯的開源文檔、開源資料什麼的,我覺得對我們平時學習都挺有幫助。Github 用得好還能裝一下,畢竟人家還是一個全英文網站,咳咳咳。

實踐

多去實踐,將學到的東西運用到實際項目中去。很多人都找我抱怨過沒有實際項目讓自己去做,怎麼能有項目經驗呢?如果實在沒有實際項目讓你去做,我覺得你可以通過下面幾種方式:

  1. 在網上找一個符合自己能力與找工作需求的實戰項目視頻或者博客跟著老師一起做。做的過程中,你要有自己的思考,不要淺嘗輒止,對於很多知識點,別人的講解可能只是滿足項目就夠了,你自己想多點知識的話,對於重要的知識點就要自己學會去往深出學。
  2. Github 或者碼雲上面有很多實戰類別項目,你可以選擇一個來研究,為了讓自己對這個項目更加理解,在理解原有代碼的基礎上,你可以對原有項目進行改進或者增加功能。
  3. 自己動手去做一個自己想完成的東西,遇到不會的東西就臨時去學,現學現賣。

注意代碼規範

從學習編程的第一天起就要養成不錯的編碼習慣,包、類、方法的命名這些是最基本的。

  • 阿里巴巴 Java 開發手冊(詳盡版)https://github.com/alibaba/p3c/blob/master/阿里巴巴 Java 開發手冊(詳盡版).pdf
  • Google Java 編程風格指南:http://www.hawstein.com/posts/google-java-style.html
  • Effective Java 第三版中文版: https://legacy.gitbook.com/book/jiapengcai/effective-java

其他

  • 別死寫代碼,這 25 條比漲工資都重要

溝通能力

程序員也離不開溝通。你可能需要與客戶交流需求,還要和同事交流項目問題,還有可能定期需要向領導彙報項目進展情況。所以,我覺得不錯的溝通能力也是一個優秀的程序員應該有的基本素質。

如何提升個人影響力

  1. 寫博客;
  2. 參與開源項目;
  3. 寫書;
  4. ......

面試必知

如何獲取大廠面試機會?

在講如何獲取大廠面試機會之前,先來給大家科普/對比一下兩個校招非常常見的概念——春招和秋招。

  1. 招聘人數 :秋招多於春招 ;
  2. 招聘時間 : 秋招一般 7 月左右開始,大概一直持續到 10 月底。但是大廠(如 BAT)都會早開始早結束,所以一定要把握好時間。春招最佳時間為 3 月,次佳時間為 4 月,進入 5 月基本就不會再有春招了(金三銀四)。
  3. 應聘難度 :秋招略大於春招;
  4. 招聘公司: 秋招數量多,而春招數量較少,一般為秋招的補充。

綜上,一般來說,秋招的含金量明顯是高於春招的。

下面我就說一下我自己知道的一些方法,不過應該也涵蓋了大部分獲取面試機會的方法。

  1. 關注大廠官網,隨時投遞簡歷(走流程的網申);
  2. 線下參加宣講會,直接投遞簡歷(相比於線上投遞成功的幾率會高很多!);
  3. 找到師兄師姐/認識的人,幫忙內推(能夠讓你避開網申簡歷篩選,筆試篩選,還是挺不錯的,不過也還是需要你的簡歷夠棒);
  4. 博客發文被看中/Github 優秀開源項目作者,大廠內部人員邀請你面試;
  5. 求職類網站投遞簡歷(不是太推薦,適合海投)。

面試的時候應該穿什麼?

穿西裝、打領帶、小皮鞋?NO!NO!NO!這是互聯網公司面試又不是去走紅毯,所以你只需要穿的簡單大方就好,不需要太正式。

面試前有哪些需要注意的地方?

  1. 提前準備好自我介紹;
  2. 隨身帶上自己的成績單和簡歷(有的公司在面試前都會讓你交一份成績單和簡歷當做面試中的參考);
  3. 如果需要筆試就提前刷一些筆試題;
  4. 花時間做一些邏輯題和智力題(面試中發現有些公司都有邏輯題或者智力題測試環節,並且都把邏輯提或者智力題成績作為很重要的一個參考);
  5. 準備好自己的項目介紹;
  6. 面試之前做好定向複習(所謂定向複習就是專門針對你要面試的公司來複習。比如你在面試之前可以在網上找找有沒有你要面試的公司的面經);

怎麼自我介紹比較好?

從 HR 面、技術面到高管面/部門主管面,面試官一般會讓你先自我介紹一下,所以好好準備自己的自我介紹真的非常重要。網上一般建議的是準備好兩份自我介紹:一份對 hr 說的,主要講能突出自己的經歷,會的編程技術一語帶過;另一份對技術面試官說的,主要講自己會的技術細節,項目經驗,經歷那些就一語帶過。

我這裡簡單分享一下我自己的自我介紹的一個簡單的模板吧:

面試官,您好!我叫某某。大學時間我主要利用課外時間學習某某。在校期間參與過一個某某系統的開發,另外,自己學習過程中也寫過很多系統比如某某系統。在學習之餘,我比較喜歡通過博客整理分享自己所學知識。我現在是某某社區的認證作者,寫過某某很不錯的文章。另外,我獲得過某某獎,我的 Github 上開源的某個項目已經有多少 Star 了。

如何介紹自己的項目?

如果有項目的話,技術面試第一步,面試官一般都是讓你自己介紹一下你的項目。你可以從下面幾個方向來考慮:

  1. 對項目整體設計的一個感受(面試官可能會讓你畫系統的架構圖)
  2. 在這個項目中你負責了什麼、做了什麼、擔任了什麼角色
  3. 從這個項目中你學會了那些東西,使用到了那些技術,學會了那些新技術的使用
  4. 另外項目描述中,最好可以體現自己的綜合素質,比如你是如何協調項目組成員協同開發的或者在遇到某一個棘手的問題的時候你是如何解決的又或者說你在這個項目用了什麼技術實現了什麼功能比如:用 redis 做緩存提高訪問速度和併發量、使用消息隊列削峰和降流等等。

如果面試官問"你有什麼問題問我嗎?"時,你該如何回答

[如果面試官問"你有什麼問題問我嗎?"時,你該如何回答](docs/如果面試官問你“你有什麼問題問我嗎”時%2C 你該如何回答.md "如果面試官問"你有什麼問題問我嗎?"時,你該如何回答")

幾乎每一場面試,特別是 HR 面和高管面的時候,面試官總是會在結尾問我:“問了你這麼多問題了,你有什麼問題問我嗎?”。不管是技術面試還是非技術面試,如果你想贏得公司的青睞和尊重,我覺得我們都應該重視這個問題。

網上提供了很多問題模板,我覺得回答這個問題重要要的就是:真誠一點,不要問太 Low 的問題。

面試官問你的優點是什麼,應該如何回答?

回答這樣的問題,最好能夠結合你要應聘的職位來做針對性回答。一般面試官問這個問題的時候,很可能會只讓你說幾個你覺得最能體現你能力的優點,為了避免自己在面試過程中不知道該說自己的那些優點,你可以在面試之前好好準備一下。 面試的時候最好可以說幾個你要應聘的職位所做的事情需要的優點或者說你要應聘的公司比較看重的優點(企業文化)。

面試官問你的缺點是什麼,應該如何回答?

缺點肯定不能是目標崗位需要的關鍵能力!!!

總之,記住一點,面試官問你這個問題的話,你可以說一些不影響你這個職位工作需要的一些缺點。比如你面試後端工程師,面試官問你的缺點是什麼的話,你可以這樣說:自己比較內向,平時不太愛與人交流,但是考慮到以後可能要和客戶溝通,自己正在努力改。

如何寫出更優秀的代碼

Java

  1. 使用 IntelliJ IDEA 作為您的集成開發環境 (IDE)
  2. 使用 JDK 8 或更高版本
  3. 使用 Maven/Gradle
  4. 使用 Lombok
  5. 編寫單元測試
  6. 重構:常見,但也很慢
  7. 注意代碼規範
  8. 定期聯絡客戶,以獲取他們的反饋


分享到:


相關文章: