當開始編程時我希望知道的30件事
本文作者Jun Wu 有著編程和統計學背景,她在15 年前就是一名程序員。近日,她分享了給程序員的30 條心得建議,如果你想成為一名程序員,這個建議可以幫助你走上正確的道路。
程序員不是一個容易的職業,每年都有許多人從國內頂尖院校的計算機科學專業畢業,這是任何人都能從事的競爭最大的職業之一。同時,編程也是令人興奮的。隨著技術的進步,工業界每天都有創新。編程對於熱愛它的人來說是一項充滿激情的事業。
當我15 年前開始做程序員的時候,我希望有人能告訴我下面清單上的一切建議。這個清單可以為所有新手程序員節省大量的時間和精力,並且,你可以在編程職業發展的整個過程中都參考這些建議。即使這裡面有些觀點現在可能與你無關,但總有一天你會看到其中的智慧。
作為一名程序員,你正處在偉大的頂點。
你只要對自己要走的道路稍有了解就可以開始冒險了。
1.你不需要學位,但你需要知識
我和許多沒有計算機科學碩士學位或計算機科學本科學位的程序員一起工作。編程是少數不依賴學位的職業之一。然而,編程是一項知識密集型的職業。如果你想開始編程生涯,這是本基礎書籍你必讀的。這十本書將涵蓋計算機科學的基本概念以及如何在項目團隊中工作。它們可以為你的技術打下堅實的基礎,讓你對基本概念有一個深刻的理解,並且讓你有能力去編寫功能性的代碼,順利進行技術面試並與同事交流。
2.創造性是提高解決編程問題能力的重要因素
大多數人都有這樣的先入之見:編程都是關於分析和解決問題的技能。這個觀點並不是完全正確的,編程也非常需要創造力。通常,你可以用很多方法編寫給定的代碼。當你擁有了創造力,就能設計出最簡單、最有效的代碼時。
3.不要什麼都學,精通一部分知識
編程語言有數百種。有一些編程領域有著明確的職業道路:Web 開發人員、前端開發人員、後端開發人員、軟件工程師、數據庫開發人員等。你需要決定要成為哪種開發人員,然後學習該職位所需的所有技術和技能。
4.你不需要活的像機器人
記住,你首先是一個人,其次才是程序員。當您第一次開始編程時,很容易在代碼中迷失方向。有時我在完成項目的所有里任務之前都不離開電腦。但是你是一個人,你需要笑,哭,減壓,和人交談。管理好你的生活,最大限度地提高工作之外的興趣愛好,這將程序員的工作帶來更多的創造力。
5.編程就是應用知識而不是為了記憶
與研究不同,在研究中,你會發明和創造新的知識領域,但編程就是應用現有的知識。書籍、研究論文、在線文章和學習視頻成為您經常使用的資源。不需要記住任何東西。你總是可以搜索資源來找到答案。隨著你處理的項目越來越多,這些記憶會自動自然地出現。
6.你每天都要克服自己是“冒牌貨”的心態
編程似乎是所有“聰明”人都傾向於做的一種職業。除非你是個天才,否則你會像我一樣,每天都會懷疑自己是個冒牌貨。當你每天都經歷這些的時候,你往往會想出一個辦法來解決這個問題。對我來說,我一直把它當做學習新事物的動力。我已經學會了站在正確的角度看待這個問題,並且滿足於每天都有的一點點進步。
7.你必須有程序員以外的生活,否則你只會沉迷於編程
有時你會在宅在家裡。然而,要成為一個快樂的程序員,你必須主動地在電腦屏幕之外尋找生活。你事業的成功往往取決於你遇到的人。當你是一個程序員時,社交網絡是必不可少的。擁有程序員以外的生活對於防止自己沉溺於編程是至關重要的。當你編程是因為激情而不是被迫的時候,你就能做出最好的工作。
8.如果你和其他人共同完成一個項目,你會更快地學會編程
在你的職業生涯剛開始的時候,你會試圖把自己封閉起來,閱讀關於編程的書來建立你的計算機科學基礎。你猜怎麼著?如果你找到一個朋友一起合作,你會學習得更快。我在和其他小伙伴合作完成一個項目的過程中看完了編程書籍。當你和其他人一起合作時,你所有的程序缺點就會暴露出來,你的代碼將受到批評。你將學會編寫有效的代碼,因為有人在監視你。你會想找出最好的方法去做事情,因為你的朋友也在學習。當你做程序員時,總有人在審查你的代碼。你永遠不會獨自編程,所以你需要習慣這些。
9.你不需要擅長數學和科學
在科技行業,你會遇到各種超級程序員,他們在接受了一輩子的文科教育後發現編程的邏輯思維很有吸引力。有很多畫家和作家在一邊追求藝術,一邊做著程序員。編程是一項艱苦的工作,做一個好的程序員所需要的只是堅持,任何人都可以通過編程書籍學習基礎知識。很多人在這個行業工作了一段時間後就開始學數學了。最終,這些人甚至可以理解和實現複雜的算法,儘管他們並沒有接受任何形式的正式數學教育。
10.你需要成為一個全明星的“學習者”
程序員是一個熟練的學習者。現在你可能不是一個大師級的學習者,但你會到達那一步的。有時候你的工作會要求你在六個月內學會三種編程語言,這就是技術創新的現狀。作為程序員,我們每天都在學習。對我們來說,學習就像呼吸一樣自然。如果你對每天的學習感到不耐煩,你必須強迫自己去習慣這一點。
11.專注於完成你的項目
編碼是真的會上癮。在你的編程生涯中的某個時刻,你將經歷一整晚的通宵編程。在完成裡目標之前,你不會想睡覺的。你會忘記吃飯、喝酒,甚至忘記從辦公桌上起來,因為你的大腦處理了太多的信息。沒關係,在做完後,到外面散散步,度個假吧。
12.你會花費整天找一個小Bug
大多數時候,在一個項目中,許多部分是相互依賴的。通常,你會發現除非你修復了一個潛伏在你係統中的小Bug,否則你無法繼續前進。作為一個程序員,除非你發現這個錯誤,否則你會對整個項目感到有壓力,你將整天坐在電腦前尋找它,再找到它之前你將在晚上夢見代碼。
13.你將花大部分時間搜索沒有人能告訴你的答案
如果你用一種流行的語言編程,你將能夠找到你在網上遇到的大多數問題的答案。但是,也有例外。有時,沒有人遇到過你碰到的問題。在這種情況下,參考編程書籍和在四處詢問通常會為您指明正確的方向。
14.你會讀一本設計模式書
你是否畢業於最好的計算機院校關係不大。在每一個程序員的職業生涯中,總有一段時間你會坐下來,從頭到尾地閱讀Head First Design Patterns。對於一個新手程序員來說,這可能是閱讀得最多的書之一。那麼,你還在等什麼?把它撿起來,從頭讀到尾。
15.你將學會專注於準確的拼寫
在每一個程序員的職業生涯中的某個時刻,您將用您最喜歡的語言編寫了足夠的代碼,以便按照自己想要的方式來做事情。這包括為變量、類甚至數據庫中的表按照你自己的命名約定進行準確的編寫。你將對此進行徹底的審查。你最不想看到的是一些因為你拼寫錯誤而出現的Bug。記住,如果理由足夠,那麼請專注於一件事情。但當你沒有很好的理由而去做某件事,這可能只是重複性的行為。
16.你會放棄
我放棄了多少次?我已經數不清了。有時你會碰到你無法解決的問題,有時候會你會因為困難而想停止,有時候工作環境會讓你想辭職。你的激情取決於你的堅持,這些正是考驗你的時候。是留下還是離開?我每次都留下來了。有時,在幾年沒有寫一行代碼之後,我會作為一個準備好完成一個項目的新人回來。當你知道你熱愛你的工作時,它會變成一個家,你會願意為之冒險。
17.重啟你自己
如果你相信更高的力量,你可能會需要這個建議。我看到過很多人重新開始編程,通常他們都是因為熱愛,與錢無關。當你看到一個人像你以前一樣對編程樂在其中時,你是嫉妒的,你覺得你也不能放棄編碼。然後,突然間,你又回到了一個項目中。你知道,在你的內心深處,你的生活和呼吸都離不開代碼。這就是你知道自己是一個真正程序員的時刻。
18.你將回到某種形式的“學校”學習“正確”的做事方式
即使是從精英計算機科學專業碩士畢業的最好的程序員也會在工作後繼續他們的學習。事實上,在職培訓是在大型科技公司工作的最佳福利之一。公司會給你提供“昂貴”的課程和研討會,讓你了解他們希望你使用的最新技術。如果可能,你在工作中學到的知識是不夠的,你將參加許多在線編碼學院,查看YouTube 視頻來提高你的技能。
19.你將被一個你不想為之工作的人僱用
即使你是一個平庸的程序員,某些公司也會需要你的技能。當他們面試你時,請記住你也在面試他們。由於公司的文化,你可能會發現自己想對一個輕鬆的offer 說“不”。作為一名程序員,你將工作很長時間,因此,找到一個文化和你契合的公司文化至關重要。愉快的心情能讓你更好地工作。如果你的技能合適,其他公司也會來敲你的門,除非有必要,請不要隨意跳槽。
20.你會在技術面試中失敗
技術面試不是開玩笑。高級程序員經常為了好玩而編造技術面試問題。通常,由於某種原因,這些問題是非常困難的。如果你沒有通過技術面試,那並不是世界末日,它並不能證明你沒有編程能力,它只是在測試你的知識庫,試著往好的方面看。如果你的人際交往能力出眾,經理們會記住你的。如果他們喜歡你,而你不適合這個職位,他們可能還會打電話給你另一個職位。
21.你會被告知你很棒
在你的職業生涯中,有時你會覺得自己是明星。依賴於你完成項目的經理會為了激勵你,會告訴你你特別偉大。你會覺得自己在世界的頂端。記住,保持腳踏實地。總是有新技術需要學習,總是有比你更好的新程序員。
22.你會被告知你什麼都不知道
在你的職業生涯中,有時你會覺得自己什麼都不知道。對某個項目感到沮喪的人會告訴你你什麼都不知道。也許他們這樣做是為了讓你安頓下來。但是,你完全不應該否定自己。因為你知道的可能比你想像的要多得多。每過一天,你就會知道得比前一天多一點。一年後,人們會尊敬你的。請繼續努力,一段時間之後,你甚至可能得到那個告訴你你什麼都不知道的人的尊重。
23.你會想和其他你欽佩的程序員競爭
編程最棒的方面之一就是競爭。我喜歡和我崇拜的人一起編程。當你能編寫一段讓你欣賞的程序員肯定的代碼時,你會像剛剛中了彩票一樣開心。編程中的競爭是很有趣的,它並不是比誰最好,更多的是互相學習。
24.你不明白你的同事剛剛說的話
在最開始,這可能每週或每月發生一次。在你的新編程工作中,你會不理解你的同事剛剛說的話。這可能有兩個原因。一個可能的原因是,你就是無法理解他們的口音。在這種情況下,可以請另一個同事翻譯。不能聽懂別人的話並不羞恥,很可能其他同事也花了很多年才習慣這種口音。另一個原因是,你的同事剛剛說的話完全超出了你的想像。但這也沒關係,畢竟,你的同事是專家。擺好椅子,請你的同事以圖片的形式解釋這一切。很可能,你需要一段時間去適應。
25.看到去年寫的亂七八糟的代碼你會感到羞愧
這也是經常發生的。在最開始,我也因為代碼不規範受到過批評。當時,設計很好且有著良好文檔,但我是用一種難以閱讀的語言寫的。但直到現在,不管我多麼努力,每年我仍然會找到一些亂七八糟的代碼,這通常都是因為我想很快地完成工作。實際上這就是程序員的工作,我們不停地完善和修改各種代碼。這並不羞恥。當你意識到它們是你寫的的時候,後退一步,如果可以的話,好好地修改它。
26.當你虛弱得不能看一行代碼時,你將在你的數據庫項目中找到庇護
當你在進行一次愉快的編程之旅時,可能會發生這種情況。你已經連續工作兩個月了,你需要休息一下。但你喜歡這種當時的狀態,所以你繼續前進。然後您會發現SQL 很有趣。你不明白為什麼你看不進去一行代碼。但不知何故,將數據放入數據庫並將其取出,是一件令人愉快的事情。你陶醉於這種完全符合邏輯的簡單語言。
27.你對黑客又愛又恨
黑客攻擊現在很常見。程序員在團隊中互相競爭,在這個過程中,好幾個小時你都在高度緊張地學習。此時的黑客攻擊就想調味劑一樣,你可能會非常喜歡。但有時,你會討厭在高速敲鍵盤時被打斷。你也會討厭擁擠的辦公室和喧囂的活動。
28.在閱讀研究論文時,你會認為你一個單詞都看不懂
你會說英語嗎?好吧,大多數人的回答都是肯定的。但是,我向你保證,有時你會一遍又一遍地讀一些研究論文,並意識到自己完全無法理解它們。對我來說,在我學會大學數學的課程之前,大多數關於算法的研究論文都像是沒有意義的森林。然後,突然某一天,一切似乎都有了意義。
29.你要買耳機
在你的職業生涯中的某個時刻,當你全神貫注於你的代碼時,你會意識到任何一種噪音都會阻礙你的感官。一個好的耳機可以消除外部噪音,這樣在擁擠的辦公室裡你也會隔絕外部干擾。在某些時候,你也會發現聽音樂可以幫助你編碼。在我編碼生涯的早期,我發現音樂的節奏有助於我流暢地編碼。即使現在,我也會藉助一些音樂來提高自己的生產力。
30.你將去一個新的地方,如果幸運的話,它將是拉斯維加斯
在你的職業生涯中的某個階段,你會成為對公司非常重要的核心開發人員。這時,你可能會被邀請到異地,和其它技術人員進行交流。高層管理人員可能會利用這個機會了解你。請別誤會,這並不代表著你可以無憂無慮地喝醉酒了,而是你和你的同齡人交往和交流的好機會。如果你幸運的話,活動將會在拉斯維加斯。有時,還會有其他公司的技術專家來參加這些活動。