學習程式設計需要克服的10種壞現象 - Jonathan Bluks
我常常在Reddit或Quora上看到有關“我怎麼知道我適合做一個程式設計師?”的問題。(事實上這篇文章擴充套件了我在Quora 上給出的答案 。)當有人在考慮時職業轉變,或者對軟體開發感興趣並對所需的內容感到好奇,不可避免地會出現程式設計問題。
事實上,當人們沒有接受任何正式的計算培訓時,這個問題是人們心中的主要疑問。
人們一般很自然地認為,這有點像你想成為一名演員,首先看你是否善於表演一樣。
作為一名教授Full-Stack Web開發的教育工作者,我教過很多“初學程式設計師”。好訊息是我很少找到一個無法學習程式設計的學生。
我認為它是一種基本的人類技能,就像閱讀,寫作和算術一樣。任何人都可以做到,這是我們人類能力的一部分,但確實需要學習。
在過去兩年的教學中,我目睹了很多學生在這個過程中的掙扎,以及他們鬥爭中出現的一些共同主題。如果你看一下這個列表並親自檢查一下,請放心,你會真正厭倦程式設計,並且可能會發現其他與你的時間有關的東西。但是,如果您仍然致力於成為開發人員的目標,那麼您可以輕鬆地面對這些問題並進行更改。
程式設計是一項基本的人類技能,就像閱讀,寫作和算術一樣。任何人都可以通過時間和精力學習程式設計。
以下列表將幫助您瞭解您是否會厭倦程式設計 - 以及如果您想要更改,您可以採取哪些措施。
1 . 缺乏好奇心
如果您對計算機以及技術如何運作缺乏好奇心,那麼作為一名程式設計師,您永遠不會成功。
學習的基本要求是對你正在學習的東西的積極興趣。如果你沒有對技術感到好奇的頭腦,你就沒有足夠的精力來堅持學習成為一名成功的程式設計師所需的廣泛而深刻的知識。
相比之下,技術世界就像一個巨大的海洋,有趣的領域,相互聯絡的想法,以及可以激發想象力的可能性。想要潛入並發現所有可能的東西需要一種內在的內在動力。
找到你的好奇心:問問自己,程式設計是否真的讓你感興趣。如果你的誠實答案是沒有,那麼去尋找你感興趣的東西。節省你自己的時間和精力。但是,如果你的回答是“是”,那麼請你自己找一些你之前沒有注意到的新東西,認識到浩瀚的海洋並深入潛水。
2 . 缺乏自主權和足智多謀
如果你沒有培養為自己解決問題的能力,那麼作為一名程式設計師,你永遠不會成功。
毫無疑問,要成為一名成功的開發人員,您必須對自己的學習能力充滿信心。這實際上是一項基本的生活技能 - 如果你年滿18歲,沒有人有義務教你什麼。這是現實。您可以自行查詢資訊,並幫助您瞭解對您來說重要的資訊。
在開發的世界裡,您需要的所有資訊都可以在這個神奇的地方找到,這個地方以前被稱為資訊高速公路。這個龐大的圖書館有一個巨大的門戶:谷歌 。瞭解您只需在谷歌中輸入您想要的任何內容,並獲得所需的資訊,這是您想要學習技術所需技能時遇到的第一個障礙。
除了是一名優秀的googler之外,所有程式語言都有文件和規範,非常明確地說明了語言的工作原理。這就像使用字典 - 當你看到一個你不認識的單詞時,你會查詢它。作為程式設計師建立技能的最快,最可靠的方法是閱讀文件。它實際上就在那裡。
使用資源:認識到你需要的所有答案都在那裡。當您有問題時,強迫自己谷歌,然後再向其他人尋求答案並檢視文件。在您嘗試並真正找不到您需要的答案時,節省他人的時間。
3. 面對問題時缺乏堅持
如果你在面對問題時輕易放棄,那麼作為一名程式設計師,你永遠不會成功。
程式設計的本質是解決問題。這就是計算機發明的全部原因!每當你開始編寫程式時,你都會遇到一堆問題。一旦你解決了問題,它背後幾乎總會有另一個問題。你正在取得進步,但總會面臨新的問題。
面對這一堆問題可能是令人生畏和令人沮喪的。如果你覺得事情應該“正常工作”,那麼你就不會有能量繼續存在,因為問題會持續下去,一點一點地打倒你的情感決心。確切地說,為什麼事情不起作用,這確實是你的工作。
根據我的課堂經驗,每班通常有一到兩名學生,他們似乎比其他學生遇到更多問題 - 通常是相當隨意和模糊的問題。我提醒學生,他們面臨的問題越多,學習更深入,更徹底的可能性就越大。如果他們能夠通過這些問題獲得理解,他們會很快發現他們更自信,因為他們面對並解決了比普通學生更多的問題。
患者接受:您需要認識到問題來自於領域而不是問題,但實際上是挑戰。您面臨和克服的每一項挑戰都會讓您更深入地瞭解並更好地應對新挑戰,並迅速解決舊挑戰。
4 . 克服問題沒有成功的感覺
如果你在解決問題後沒有感到興奮和成就感,那麼你將永遠不會成為一名程式設計師。
與前一個輕鬆放棄的問題相關的是,一旦您成功解決了問題,就會缺乏“好感”。當修復錯誤和問題成為一個似乎永遠不會結束的跑步機時,你會因克服問題而產生的興奮失去聯絡。
當你克服一個問題時,實際上你需要打多巴胺。這類似於完成視訊遊戲中的關卡或解決填字遊戲或數獨遊戲等挑戰的體驗。我們都知道,有一種良好的感覺來自堅持挑戰,然後最終贏得最後。但如果你失去了感受這些感受的能力,或者從一開始就沒有真正關心過,那麼你將無法體驗到程式設計帶來的快樂。如果你認為程式設計只是想要儘可能輕鬆地獲得結果,那麼你將永遠不會真正成為一名成功的程式設計師。
慶祝你的勝利:每當你解決你遇到的問題時,無論多麼小,總是為你的成就感到自豪,請休息一下,祝賀自己做得好。讓成功的感覺沉入其中並激勵您面對下一個問題。
5 . 對學習和理解不耐煩
如果你對學習感到不耐煩並希望能夠快速而輕鬆地掌握所有內容,那麼你將無法真正成功地進行程式設計。
作為人類,我們是有限的生物。即使我們的世界變得越來越快,而計算機是其中的一個重要原因,我們只能儘可能快地移動。我們的大腦以一定的速度工作,並且取決於我們的過去,我們的信念,我們的情緒狀態,我們的健康......我們都將以不同的速度學習和整合資訊。
技術世界就像一片廣闊的海洋。你將永遠不會走到盡頭,你永遠不會達到一個你沒有其他東西可以學習的高手。如果你讓自己不堪重負,你總會感受到“趕上”並感到自己永遠不夠了解的壓力。如果你不能接受你所知道的東西然後再學習一點,你就會覺得自己無處可去,並且放棄了。
相反,你需要享受自己學習的旅程。你獲得的每一點知識,或者你獲得的新技能都需要讓你興奮。就像解決問題一樣,你需要讓自己感到驕傲,認識到你向前邁出了一步,即使它是一個小問題。
承認你的進步:有很多東西需要學習,程式設計之旅永無止境。但是這些知識是累積的,所以要為自己所知道的事情感到自豪,並相信你在學習中所付出的一切努力都將為你的職業生涯帶來無處不在的知識奠定堅實的基礎。
6 . 厭倦思考
如果你對自己的思維很懶惰,並且看到集中,專注的思考作為一項苦差事,你就永遠不會真正成功地進行程式設計。
程式設計是一種思考活動。作為人類,我們真的善於思考,但現實是,儘管我們自然而然地花了一整天時間,但我們的思維卻很懶散。如果您不習慣,在一段時間內保持集中,專注於單個問題的能力是很困難的。
這種症狀包括茫然地盯著螢幕,感覺到雲在你的思緒下降,拖延問題,在瀏覽器標籤之間翻轉,拼命掃描StackOverflow的“答案”。這些跡象表明您已經受到精神限制,需要找到解決方法。
在程式設計的過程中,你會感到疲倦,並且在鍛鍊身體能量就像鍛鍊身體一樣。當你不習慣發揮所需的精神能量時,會感到很難保持專注。但就像去健身房一樣,你做的越多,你就越強大。
你的心靈是一個肌肉:相信你的大腦就像一塊肌肉 - 當你使用它時,它會在思考中變得更好,更有效率。當您將各個部分放在一起並開發心理概念時,發現解決方案變得更加容易。
7 . 無法自己思考
如果您希望別人為您考慮,並且不願意檢視您自己情況的細節,那麼您將永遠不會成為真正成功的程式設計師。
當你學習新東西時,很容易覺得你缺乏知識和經驗來掌握自己的觀點。採取主動或做/說錯話似乎有風險。
我們都有一種固有的恐懼感。當那種對錯誤的恐懼會抑制你的探索和好奇心時,你就會扼殺發展真正知識的能力,從經驗和“失敗”中獲得的知識。當你需要依賴“大師”的觀點,流行的博主,最佳實踐或“教科書”答案時,你就沒有真正整合程式設計的工作知識。
你需要發展自己的意見,瞭解哪些有效,哪些無效。您需要了解為什麼您認為您的解決方案有效,以及有哪些好處。你需要建立一個超越顯而易見的細微差別。你需要能夠“爭辯”你的一面,然後如果你改變了,你就可以擁有你所獲得的新視角。
自己思考:通過您的經驗和批判性思維技能,發展自己的觀點。做出合理的猜測,採取立場,並隨著新資訊的曝光而願意改變。
8 . 僵硬,狹隘和/或無組織的思維
如果你的思維僵硬,並且你很難保持你的程式碼組織 - 並且通過擴充套件你的思想組織和集中,你將永遠不會成功程式設計。
我有時會在學生身上看到兩個極端。第一種是嚴格而狹隘的思維方式。這種態度拒絕幫助,儘管有反饋,但不會改變。事物只從一個角度看待,建議被忽略了。
我看到的第二個極端是思維混亂。學生似乎把事情變得比必要的複雜,他們的程式碼很亂,很難遵循。他們過度思考問題並編寫100行程式碼,當10代表足夠時。
當這兩種思維模式相結合時,結果就是一種緊密的程式設計方法,比如一種蠻力的方法,它會導致層次和層次的修復和“黑客攻擊”。所需要的是能夠回顧解決方案,重新評估它,放棄初始方法並重新組織。
無法看到其他可能性或收到反饋會抑制成長和改善的能力。混亂會減慢你的速度,使你無法看到本來很明顯的模式。而且你工作的整體質量會降低。
自我反思:你需要退後一步,看看你如何接近事物的大局。你怎麼能做得更好?你有什麼辦法可以讓你的生活更輕鬆嗎?你錯過了什麼可以幫到你?
9 . 需要“正確”的答案,而不是認識到一系列“好”和“壞”的答案
如果您認為程式設計的最終目標是找到正確的解決方案,而不是一系列解決方案,那麼作為程式設計師,您永遠不會真正成功。
在開始學習技能或程式設計時,學生通常想知道他們所做的是“正確”。答案總是“取決於”。
電腦科學是一種評估權衡的科學。鑑於不同的情況,哪條路會更好?這一切都取決於具體情況和目標。如果您將程式設計看作是一個正確答案或錯誤答案的測試,那麼您將忽視大局,放棄您的創造力。如果你能根據具體情況證明合理,那麼任何答案都可以是“正確的”。
現實情況是,程式設計更像是寫詩或短篇小說(如果節目很大,則可能是小說)。在您的程式碼中可以看到美學和美感,有時它只能由您和其他程式設計師識別。您決定解決方案的原因以及您構思答案的方式比“正確的方式”或“錯誤的方式”更重要。擁有藝術家的頭腦可以讓你玩選擇和可能性,而不是認為只有一種方式。這就是程式設計之美,有很多方法可以解決問題,並且考慮不同的可能性會讓人感覺哪種方式最適合這種情況。
獲得創意:認識到有很多方法可以解決問題,並且通過經驗和曝光,您將在加時賽中形成一種細緻入微的理解,瞭解哪種解決方案比其他解決方案更好。縱觀全域性,想象不同的可能性並信任您的直覺將導致更好的解決方案更令人滿意。
10 . 不仔細注意細節
如果你掩蓋細節,忽視一些小事情,你永遠不會成為一個真正成功的程式設計師。
電腦是精密機器。在程式設計計算機時,您需要以計算機期望的方式精確地提供必要的命令。如果你不這樣做,什麼都行不通。沒有一箇中間立場,事情大多數工作 - 它要麼做,要麼不做。
這意味著當你程式設計時,你必須注意細節。每個空格,括號或分號都算。當不合適時,什麼都行不通。當計算機回顯錯誤訊息時,您必須能夠檢視該訊息並準確理解它告訴您的內容。而現實情況是,如果你錯過這樣的細節,你可能花費數小時追蹤一個問題,而這個問題實際上是一個錯字的結果。
正如他們所說,魔鬼在於細節。對於程式設計來說,這絕對是正確的。
注意細節:細節很重要,你必須接受。完成後,您可以開始一直掃描程式碼以查詢不合適的地方。您可以組織程式碼並使用可幫助您快速識別問題的工具。
獎金:有商業頭腦
這是我注意到的一個側面觀察 - 特別注重商業頭腦的學生往往關注結果而不是過程。他們希望得到一個“工作應用程式”,將他們的商業理念推向前進,他們希望“首先進入市場”,他們認為學習曲線是他們實現業務目標的障礙。
在回顧那些難以真正幫助成長為程式設計師的學生時,我發現對這個過程的不耐煩,這個過程抑制了真正理解技術所需的學習。他們傾向於將技術視為達到目的的手段,而不是要探索和享受的合法知識領域。
作為對此的自然延伸,我發現某些學生更傾向於商業,並且在學習上掙扎,通常很快就會讓自由職業客戶報名參加他們自己沒有技能的自己做的工作!他們會爭先恐後地找到資源/模板以使專案為客戶工作,或者將工作外包給其他人。他們真的很喜歡程式設計,但讓人們付錢給他們程式設計真是太棒了!
所以我要補充的是,那些希望創業,優秀銷售,網路和業務發展的學生可能比其他人更難學習程式設計技巧。他們創造金融機會並將人們聯絡到解決方案的自然願望使他們對程式設計中涉及的繁瑣細節感到不耐煩。
結論
雖然程式設計可能是一項難以學習的技能,但它肯定是大多數人可以學習的技能。上面的列表包含了妨礙他們的態度和心態,但是大多數人都可以克服它們並培養程式設計領域的能力 - 如果不是掌握的話。
如果您有興趣學習程式設計,我鼓勵您開始這個旅程。記住上面的列表,並開始探索線上可用的許多資源,這些資源可以幫助您快速前進。你不會後悔的。