學習是一件艱苦的事情。很多人想要成為程序員,在學習編程的過程中,面對各種bug和源源不斷的問題,有時會對自己是否適合編程這一問題產生困擾。
編程是人類的基本技能,就像閱讀、寫作和算術一樣。任何人都可以通過時間和努力學會編程。
下面將幫助你了解你是否喜歡編程,以及如果你想做出一些改變,你可以做些什么。
1、缺乏好奇心
如果你對計算機是如何工作的缺乏好奇心,那么,作為一個程序員,你將永遠不會成功。
學習的一個基本要求是對你所學的東西有積極的興趣。
如果你沒有一個對技術好奇的頭腦,你就沒有精力去堅持學習要成為一個成功的程序員所需要的廣博而深入的知識。
相比之下,技術的世界就像一個巨大的海洋,里面充滿了各種有趣的領域、相互聯系的思想和各種可能,它們可以激發(fā)人們的想象力。
想要潛入這片海洋并發(fā)現你所能發(fā)現的一切,需要內在的動力。
找到你的好奇心:問問你自己,編程是否真的讓你感興趣?
如果沒有興趣,去找你感興趣的東西,以節(jié)省時間和精力
但是如果你的答案是感興趣,那么就強迫自己去發(fā)現一些你以前沒有注意到的新事物,認識到浩瀚的技術海洋,再往下潛一點。
2、缺乏自主性
如果你不培養(yǎng)自己解決問題的能力,你就永遠不會成為一個成功的程序員。
毫無疑問,要成為一個成功的開發(fā)人員,你必須對自己的學習能力充滿信心。
這實際上是一項基本的生活技能,如果你年滿 18 歲,沒有人有義務教你任何東西。這就是現實。
當你想學習技術所需的技能時,首先要學會的是,在谷歌中輸入你想要的任何東西并獲取你需要的信息。
除此之外,所有編程語言都有文檔和規(guī)范,這些文檔和規(guī)范對語言的工作方式解釋的非常清楚,它們就像字典一樣。
作為一個程序員,最快速、最可靠的學習方法就是簡單地閱讀這些文檔。
當你有問題的時候,在問別人答案和查閱官方文檔之前,強迫自己先搜索一下,節(jié)省別人的時間。
3、面對問題缺乏毅力
如果你在遇到問題時輕易放棄,作為一個程序員,你將永遠不會成功。
編程的本質是解決問題,這也是計算機產生的全部原因。
每當你開始編寫一個程序時,你總是會遇到一大堆問題。一旦你解決了一個問題,那么幾乎總是有另一個問題在后面等著你。你在進步,但總是會有新的問題要面對。
這堆問題會讓人望而生畏,令人感到沮喪。
如果你覺得程序應該「能用就好」,那么你就沒有精力堅持下去,因為問題還在繼續(xù)出現,它們會一點一點地擊潰你的情緒和決心。從字面上來說,你的工作就是找出程序為什么不能跑起來。
從我在課堂上的經驗來看,通常每個班都有一兩個學生,和其他學生相比,他們似乎更容易遇到更多的問題——通常是非常隨機和模糊的問題。
我提醒學生,他們面對的問題越多,學習越深入、越徹底的可能性就越大。
如果他們能通過這些問題獲得深刻的理解,他們會很快發(fā)現他們變得更加自信了,因為他們面對和解決的問題比普通學生多。
你需要認識到,問題不僅僅只是問題,它實際上也是挑戰(zhàn)。你所面臨和克服的每一個挑戰(zhàn)都能讓你更深入地理解技術,更好地面對新的挑戰(zhàn),并迅速解決舊的挑戰(zhàn)。
4、解決問題之后沒有成就感
如果你在解決一個問題后沒有興奮感和成就感,作為一個程序員,你將永遠不會成功。
與上一個問題相關的是,你成功地解決了一個問題,卻缺乏「良好的感覺」。
當修復 bug 和問題變成了一個永遠不會結束的事情時,你會失去與克服問題的動力。
當你解決一個問題時,你需要的是多巴胺的釋放。
這類似于在電子游戲中完成了一個關卡,或者解決了一個像縱橫字謎或數獨這樣的挑戰(zhàn)。
我們都知道,堅持通過一項挑戰(zhàn),然后最終贏得比賽,一般都會有成就感和興奮感。
但是如果你失去了感受這些快樂的能力,或者從一開始就沒有真正有過這些感受,你將無法體驗到編程帶來的快樂。
如果你把編程看作是一種磨礪,你只想盡可能容易地得到結果,那么你永遠不會真正成為一個成功的程序員。
無論何時,當你解決了一個一直在努力解決的問題時,無論這個問題多么微小,你總是為你的成就感到驕傲。
你需要休息一下,祝賀你自己完成了一項出色的工作,讓成功的感覺滲透進你的心里,為你即將面臨的下一個問題注入活力。
5、對學習和理解感到不耐煩
如果你對學習感到不耐煩,并且希望快速、輕松地掌握所有東西,那么你將永遠不會真正成功地學會編程。
作為人類,我們是在能力上有極限的生物。
我們的世界變化得越來越快,計算機是造成這一現象的一大原因,而我們也只能盡我們的能力跟上這些變化。我們的大腦以一定的速度工作,并且,這個速度取決于我們的過去、信仰、情緒狀態(tài)、健康……我們都將以不同的速度學習和整合信息。
科技的世界就像一片廣闊的海洋。你永遠不會到達終點,你永遠不會到達一個沒有其他東西可學的大師的地步。
如果你讓自己感到不知所措,你總是會受到一種要去「追趕」的壓力,并且會覺得你永遠都知道的不夠多。
如果你不能接受你所知道的,然后再多學一點,你會覺得自己一事無成,然后放棄。
相反,你需要享受為自己學習的旅程。
你所獲得的每一點新知識或新技能都需要讓你感到興奮。就像解決問題一樣,你需要讓自己感到自豪,因為你認識到自己已經向前邁出了一步,即使這是只是很小的一步。
承認你的進步。
你還有很多東西要學,編程之旅永遠不會結束。
但是,知識是累積的,所以你要為你所知道的感到自豪,并且相信你在學習中所做的每一份努力都將為你的職業(yè)生涯的創(chuàng)造一個堅實的知識基礎。
6、因思考而感到無聊或疲倦
如果你懶于思考,并把集中注意力進行思考看成是一件微不足道的小事,你將永遠不會真正成為成功的程序員。
編程是一種思考活動。
作為人類,我們確實擅長思考,但事實是,即使我們一整天都很自然地在思考一些事情,我們也懶得去思考
。如果你不習慣思考,那么,在一段時間內集中精力去解決一個問題對你來說是很困難的。
這種情況的癥狀包括茫然地盯著屏幕,感覺一團云落在你的思想上,拖延著一個又一個問題,在瀏覽器標簽之間來回移動,眼睛拼命地掃描 StackOverflow 尋找「答案」。
這些跡象表明,你在精神上已經達到了上限,需要找到一條突破口。
在編程的時候,你會感到疲倦,思考就像鍛煉身體一樣消耗體力。當你不習慣利用精神能量時,你就很難集中注意力。但這就像去健身房一樣,你練得越多,你就會變得越強壯。
你的大腦是一塊肌肉。你要相信,你的大腦就像一塊肌肉一樣,當你堅持使用它時,它會變得越來越會有效地思考。
7、無法獨立思考
如果你期望別人為你著想,并且主動看到你自己所在的處境的細節(jié),你將永遠不會成為一個真正成功的程序員。
當你在學習新的東西時,很容易感到缺乏知識和經驗,并沒有自己的觀點。主動做事或者說錯話似乎是有風險的。
對于錯誤,我們的內心都有一種恐懼感。
當對錯誤的恐懼抑制了你的探索和好奇心時,你會扼殺開發(fā)真正知識、從經驗中獲得的知識和「失敗」的能力。當你需要依靠「權威」的觀點、一個受歡迎的博客、一個最佳實踐或「教科書」的答案時,那么你就沒有真正地整合編程的知識。
你需要對什么有效,什么無效形成自己的觀點。
你需要理解為什么你認為你的解決方案有效,以及使用這個方案有什么好處。你需要建立一個微妙的視角,超越那些顯而易見的東西。你需要能夠「證實」你的立場。
為自己著想。通過你的經驗和批判性思維技巧,發(fā)展出你自己的思想體系。做出合理的猜測,堅定立場,并愿意隨著新信息的出現而改變立場。
8、僵化、狹隘、混亂的思維
如果你的思維僵化,并且難以保持代碼的條理化,那么你將永遠無法成為一名真正成功的程序員。
我有時在學生中看到兩個極端。
第一種是僵化和狹隘的思維方式。擁有這種態(tài)度的人拒絕幫助,盡管會有反饋,但不會有改變。他們看事情只從一個角度看,別人給的建議被忽略。
我看到的第二個極端是思維混亂。學生們似乎使事情變得更加復雜,他們的代碼雜亂無章,難以理解。他們過度思考問題,寫 100 行代碼,而其中只有 10 行 是有用的。
當這兩種心態(tài)結合在一起時,結果就是一種用蠻力的方法去設計程序。
我們需要的是回顧解決方案,重新評估它,放棄最初的方法,并重新組織方法。無法看到其他可能性或無法反思反饋會抑制成長的能力。思維雜亂無章會減慢你的成長速度,阻止你看到那些原本顯而易見的模式。你的工作質量也會下降。
自我反省。你需要退后一步,看看你是接觸的事物的大局是什么樣子的。你要怎樣才能做得更好?你能做些什么讓你的生活更輕松嗎?你需要什么來幫助你?
9、需要正確的答案
如果你認為編程的最終目標是找到正確的解決方案,而不是一系列解決方案,那么作為一個程序員,你將永遠不會真正成功。
當開始學習技能或編程時,學生往往想知道他們所做的是否「正確」,而答案總是「視情況而定」。
計算機科學是一門評估權衡的科學。在不同的環(huán)境下,哪條路更好,這完全取決于所處的環(huán)境和目標。
當你把編程看作是一個有正確答案或錯誤答案的測試時,你就失去了對全局的認識,放棄了你的創(chuàng)造力。任何答案都可以是「正確的」,前提是你能根據具體情況證明這一點。
現實情況是,編程更像是寫詩或寫短篇小說(如果程序很大,則可能是小說)。
在你的代碼中可以看到一種美學和美麗,這些東西有時只有你和其他程序員能夠識別出來。你決定解決方案的原因,以及你對答案的設想,比「正確的方式」或「錯誤的方式」更重要。
擁有一個藝術家的頭腦可以讓你編的程序具有選擇和可能性,而不是認為只有一種處理方式。這就是編程的美——有很多方法可以解決問題,考慮不同的可能性,然后決定哪種方法最適合當前的情況。
創(chuàng)造性很重要。
你要認識到,解決問題的方法有很多種,通過經驗和積累,你會對哪些解決方案比其他解決方案感覺更好產生細微的理解。
縱觀全局,想象不同的可能性,相信你的直覺,你會得到更滿意、更好的解決方案。
10、不注意細節(jié)
如果你掩蓋細節(jié),忽略一些小事情,你將永遠不會成為一個真正成功的程序員。
計算機是精密的機器。當涉及到計算機編程時,你需要以計算機期望的方式精確地提供必要的命令。如果你不這樣做,什么都不會奏效。這里面沒有一個中間地帶,要么是有用的,要么是沒有用的。
這意味著當你在編程時,你必須注意細節(jié)。
每個空格、括號或分號都要注意。一旦有任何問題,那么什么都不會起作用。當計算機彈出一條錯誤信息時,你必須能夠查看該信息并準確理解它告訴你的內容。
事實是,如果你錯過了這樣的細節(jié),你可能需要花幾個小時來追蹤一個問題,而它實際上是只是一個打字錯誤造成的。
正如人們所說,細節(jié)是魔鬼。這句話對于編程來說是絕對正確的。注意細節(jié)。
細節(jié)很重要,你必須接受這一點。在你編程的時候,你需要瀏覽你的代碼,找出任何不合適的地方。你可以使用幫助你快速識別問題的工具。
總結
其實我注意到,有些學生特別注重商業(yè),他們經常關注結果而不是過程。
他們希望得到一個能夠推動他們的商業(yè)理念發(fā)展的應用程序,他們認為學習曲線是阻礙他們實現業(yè)務發(fā)展目標的障礙。
在回顧那些很難真正成長為程序員的學生時,我發(fā)現對于這個過程的不耐煩抑制了他們真正理解技術所需的學習。他們傾向于將技術視為達到目的的一種手段,而不是探索和享受的一個知識領域。
作為這一點的自然延伸,我發(fā)現有些學生更傾向于做生意,他們學習困難。
一般情況下,他們會爭先恐后地尋找資源/模板,讓項目為客戶工作,或者將工作外包給其他人。他們真的很喜歡編程,但人們付錢給他們編程卻讓他們更加興奮!
因此,我要補充的是,那些渴望創(chuàng)業(yè)、擅長銷售、網絡和業(yè)務開發(fā)的學生可能比其他人更難以學習編程技能。他們天生渴望創(chuàng)造經濟機會并將人們與解決方案聯系起來,這使他們對編程中涉及的繁瑣細節(jié)感到不耐煩。
雖然編程是一項很難學習的技能,但它肯定是大多數人都能學習的技能。上面的列表包含了阻礙我們前進的態(tài)度和心態(tài),大多數人都可以克服這些態(tài)度和心態(tài)。如果不精通編程的話,他們就不能在編程領域發(fā)展出自己的能力。
如果你對學習編程感興趣,我鼓勵你開始這段旅程。
只有跟隨真正身處這個行業(yè)的人,才能看到這個行業(yè)的真相,才能走上正確的學習道路,真正的拿高薪。
(責任編輯:代碼如詩) |