一名新晉程序員的自述:個人編程自學之路

Photo by Jantine Doornbos

我相信每一個程序員都具有自學的能力,由於若是沒有自身的努力,咱們不會成爲一名優秀的程序員。java

大概交代一下故事背景

2016年,我被計算機科學專業錄取。計算機科學家須要研究如何使用計算機解決普遍問題及其應用數學,但我不太擅長數學,此外也不太瞭解計算機科學專業到底是什麼,一直覺得這大概是關於如何操做計算機的方法——我甚至沒有想過去 google 一下。程序員

小時候,我一直夢想成爲一名計算機科學家,作 APP 或者其餘我認爲很高大上的項目。終於我被夢想的專業錄取了,就此開啓了我成爲計算機科學家、程序員的夢想之旅。可是做爲一個初學者,我發現學習編程的過程並不簡單輕鬆。我不知道如何去開始,在好不容易掌握基礎以後又不知道如何去進階。編程

老實說,一開始我並不知道何謂編程,直到我用 Visual Studio 上的 VB.net 編寫並運行了個人第一個程序 「Hello World」。在學習計算機科學的第二年,我用 C++ 編寫並運行了另外一個項目。第三年,我用 HTML 和 CSS 編寫搭建了一個簡單的我的博客。後端

我什麼都不懂,只知道本身想開發能夠在手機或網頁上使用查看的 APP。我最初的幾個月耗費在了毫無頭緒的雜亂學習上。從網絡編程到 A + 到 Java 再到 Scratch、Python 甚至圖形編程、HTML、CSS 和數字營銷,各類不一樣方向的信息向我涌來。幾個月下來,我依舊毫無頭緒,夢想之路彷佛也毫無進展,對此,我感到十分沮喪。我聽取他人建議,明白了心急吃不了熱豆腐,決定一步一個腳印,慢慢來。瀏覽器

真正的問題是,我沒有找到我願意花時間和精力在上面,而不是將其標記爲「工做」的東西。最後,我在 Java 上找到了個人成功之路。我決定將精力集中在研究我打算用一輩子去作的事情:編程。服務器

我告訴本身要專心並開始編寫代碼,我須要:網絡

  • 從第一個步開始,直到我學到足夠的知識後,才邁下一步。
  • 想明白我想要怎樣去學習編碼。例如,我最終想得到什麼樣的技能?我爲何想學習編碼?我能夠爲此花多少時間和金錢?
  • 選擇正確的、適合個人語言。
  • 選取合適的資源以幫助我學習(例如線上的編程課程、教材、各類平臺上的視頻文檔等)。
  • 下載對應語言的編程軟件。
  • 練習編寫程序。
  • 加入一個線上的學習社區或社羣。
  • 不要中止學習。

當我明確這些需求以後,我明白了我要去往何處,以及接下來我該怎麼作。學習

這是你能夠從個人故事中學到的第一點:大數據

始終關注你的實際夢想或目標,以及你真正想要的是什麼——而不是你認爲可能使你成爲本身的目標的東西。你可能不知道如何實現本身的目標,但你可使用互聯網,並對你的目標進行思考,就能夠作到。google


我爲何選擇 Java

我由於知道它能夠幫我實現成爲移動應用程序開發人員的夢想,而愛上 Java。我發現,當我熟練掌握 Java 以後,學習任何其餘語言對我來講,也很輕鬆。Java 的課程不只僅是教 Java,也教編程概念。Java 的應用很普遍,後端開發、大數據、Android 開發等。

就像 Code Institute 的這篇文章所說:

「Java 使開發人員可以:

  • 在一個平臺上編寫出的軟件,幾乎能夠在任意一個其餘平臺上運行。
  • 建立能夠在 Web 瀏覽器運行並訪問可用 Web 服務的程序。
  • 開發用於在線論壇,商店,民意調查,HTML 表單處理等的服務器端應用程序。
  • 用 Java 語言組合應用程序或服務,以建立高度定製的應用程序或服務。
  • 爲移動電話,遠程處理器,微控制器,無線模塊,傳感器,網關,消費產品以及幾乎任何其餘電子設備編寫功能強大且高效的應用程序。
    ……
    從筆記本電腦到數據中心,從遊戲機到科學超級計算機,從手機到互聯網,Java 無處不在。」

是的,Java 無處不在。它能夠在臺式機、企業臺式機、電視設備、手機等多種設備上運行。

我還記得我實習時的第一堂計算機編程課,甚至大學的也還記得,那天老師給咱們佈置了幾道關於 Java 的簡單基礎題。

問題1:什麼是 println,printf 和 print?
問題2:如何存儲變量?
問題3:什麼是 Java?

我班有一半的人都有 IT 背景。所以,他們輕鬆編寫出了答案,而另外一半人(包括我在內)卻大腦一片空白。我對班上發生的事情一無所知。

在此以前,我從未有過如此尷尬的經歷。

或許你也會在編碼生涯中遇到相似的狀況:當有一天,你忽然發現別人知道你不知道的事情,這可能會讓你以爲傷自尊,可能會使你失去晉升機會,甚至是你的工做。但你在明白本身與別人的差距以後如何行動,遠比你看到差距這件事自己重要得多。

後來我接觸到了 Udemy 和 SoloLearn,我瞬間明白了本身要學的東西還有不少,且我有能力掌握它們。我並不明確本身將來的方向,但冥冥之中我有一種感受:世界上最有意思的事情就是可以學習一些東西,充分掌握它,並用它來建立我想象建立的東西。過去我經常在碰到一些挫折和失誤時,選擇逃避它們,並讓個人朋友們來幫忙解決,但如今我能夠自信地本身解決這些問題。

我收集了許多資料,許多關於 Java 編程的 YouTube 視頻,選修了 Udemy 的課程,並花了好些天的時間額外學習基礎知識。好不誇張的說,這並不容易。之前的我從未了解過這些,這是我那個階段必須作的。個人同窗比我有優點,我還有很長的路要走,事實上,同窗的優點也成爲了我加倍努力學習的動力。

整個學習過程當中,我不斷遇到使我沮喪和煩惱的錯誤,我只能儘量地保持鎮定、專一、努力,始終如一。我建議每一個人都儘早選擇本身的道路和目標,並專一於它,由於你必定會以某種方式到達那裏——即便不是立刻。

個人痛苦來源於我犯的錯誤:懷疑本身、缺少自信、拖延、易放棄、膽小。這些錯誤,可讓人反思和自省——不管是咱們本身仍是他人,這也是爲何我決定分享故事的緣由。

「你必須從別人的錯誤中學習。你的有生之年不可能有足夠長的時間使本身成爲全部人。」——山姆·萊文森


編程如何改變了個人生活

編程使我相信我能夠解決問題、處理錯誤,它給了我人生目標。有時,遺漏了一個簡單的語法錯誤會讓我感到沮喪,同時,每一次的進步都會讓我欣喜。

全部語句都變爲布爾值…… True or False。個人計數從零開始,而不是一。

如今的我才知道,訓練計算機以執行特定任務比訓練人類要難。


最後我再叨叨幾句

我花了幾個月的時間找到本身的道路,做爲一名開發人員,我慢慢接受本身的錯誤和恐懼,開始享受這種自在,並開發了一個小型桌面 APP。

展望將來,我渴望學習更多,成爲一名優秀程序員,並在不久後以程序員的身份擁有個人第一份有薪工做。

我想告訴你們,若是覺得僅僅學習了計算機科學課程就能夠成爲程序員的話,就大錯特錯了。即使是你已經擁有了計算機科學的學位,你仍然必須作到如下這些:

  • 對編程充滿熱情;
  • 常練習;
  • 多看書多學習;
  • 嘗試不一樣的語言;
  • 讀寫代碼;
  • 以能夠識別或表示變量和子例程的方式命名它們;
  • 學會盲打(這將改善你的姿式和肌肉記憶,而且你會在打字時更明顯注意到速度上的差別);
  • 用可識別或強表明性的方式來命名變量和子程序;
  • 學習並進行實操;
  • 把編寫代碼做爲平常;
  • 編寫你感興趣的軟件;
  • 從下往上讀取堆棧跟蹤;
  • 盡你所能的簡化程序;
  • 不會的地方就 google 一下;
  • 保持專一,一次只寫一個程序;
  • 大括號始終保持配對;
  • 正確設計代碼;
  • ……

每一個故事均可以成爲咱們從新考慮優先事項或從新集中精力的靈感。

發現一個錯誤的尷尬僅持續幾秒鐘,但從錯誤中學習倒是永遠的。相信我,這是值得的。

我但願這篇文章能激勵你們永不鬆懈。你能夠作到,必定能夠,只要對你想作的事始終充滿激情並渴望學習,再找到一位出色的導師。

藉此,我要向鼓勵我分享故事的 Charles Best 致意。十分感謝您的教誨和指導。

請堅信,你的夢想一定會變爲現實。


本文系實驗樓翻譯,如轉載請註明,原文連接:My Journey as a Self-Taught Programmer

千里之行,始於足下。任何夢想的實現,都須要腳踏實地的去進行!

7月,實驗樓開展了第四期的30天百樓挑戰活動,詳情點擊連接,30天累計在實驗樓學滿50個小時,即算挑戰成功!

給本身一個挑戰自個人機會吧!

相關文章
相關標籤/搜索