如果有這10個跡象,你可能是個糟糕的碼農
我經常在Reddit或Quora上看到類似"我如何知道自己是否會成為一名成功的程序員?"這樣的問題(實際上,這篇文章是基于我對Quora的回答而擴展的。) 職業變化,或者對軟件開發感興趣并且對需要的軟件感到好奇,不可避免地會出現編程問題。
實際上,我認為這是人們在沒有經過任何計算機正式培訓的情況下進入其頭腦的主要障礙。 很自然地認為,如果您不擅長編程,那么您的愿望就不會成為初學者。 有點像您是否想當演員,想知道自己是否會擅長演戲。
作為教授全棧Web開發的教育者,我曾教過許多"初學者"。 好消息是,我很少找到無法學習編程的學生。 我將其視為基本的人類技能,就像閱讀,寫作和算術一樣。 任何人都可以做到,這是我們人類能力的一部分,但確實需要學習。
在過去的兩年教學中,我目睹了各種學生在此過程中的掙扎,以及他們掙扎中出現的一些共同主題。 如果您查看此列表并親自查看它們,請放心,您將真正精通編程,并且可能會發現與您的時間有關的其他事情。 但是,如果您仍然致力于成為開發人員的目標,則可以輕松面對這些問題并進行改變。
編程是一項基本的人類技能,就像閱讀,寫作和算術一樣。 任何人都可以花費時間和精力來學習編程。
1、缺乏好奇心
如果您對計算機以及技術的運行方式缺乏好奇心,那么您將永遠無法成為一名程序員。
學習的基本要求是對所學事物的積極興趣。 如果您沒有對技術感到好奇的頭腦,那么您將沒有精力去堅持學習成為一名成功的程序員所需要的廣泛而深入的知識。
相反,技術世界就像是一個巨大的海洋,充滿了有趣的領域,相互聯系的思想以及激發想象力的可能性。 想要潛入并發現所有可能的一切,需要一種內在的內在動力。
找到您的好奇心:問問自己編程是否真正讓您感興趣。 如果您的誠實答案不是,請去尋找您感興趣的東西。節省時間和精力。 但是,如果您的答案是"是",那么就讓自己找到從未見過的新事物,認清廣闊的海洋,然后再潛入更深的地方。
2、缺乏自治和機智
如果您不具備為自己解決問題的能力,那么您將永遠無法成為一名程序員。
毫無疑問,要成為成功的開發人員,您必須對自己的學習能力充滿信心。 這實際上是一項基本的生活技能-如果您超過18歲,則沒有人有義務教您任何內容。 那是現實。 由您來查找信息和幫助,以了解對您而言重要的信息。
在發展的世界中,您需要的所有信息都在那個神奇的地方找到,該地方以前被稱為信息超級高速公路。 這個龐大的圖書館有一個巨大的門戶:Google。 當您想學習技術方面的技能時,首先要克服的障礙就是,您可以輕松地將任何內容輸入Google并獲取所需的信息。
除了成為優秀的googler之外,所有編程語言都具有明確說明該語言工作原理的文檔和規范。 就像使用字典一樣,當您看到一個不認識的單詞時,便會查找它。 建立程序員技能的最快,最可靠的方法就是簡單地閱讀文檔。 實際上就在那里。
使用資源:認識到您真正需要的所有答案都在那里。 如果您有問題,請在詢問其他人答案之前,先強迫自己在Google上進行搜索并查看文檔。 當您嘗試并確實未能找到所需的答案時,可以節省其他人的時間。
3、面對問題缺乏毅力
如果您在遇到問題時輕易放棄,您將永遠不會成為一名程序員。
編程的本質是解決問題。 這就是發明計算機的全部原因! 每當您開始編寫程序時,都會遇到整個問題。 解決問題后,幾乎總會遇到另一個問題。 您正在取得進步,但是總是要面對新的問題。
面對一堆問題可能令人生畏和沮喪。 如果您覺得事情應該"正常運轉",那么隨著問題繼續存在,您將沒有持續的精力,并且一點一點地破壞了您的情感決心。 從字面上看,這是您的工作,找出為什么事情不起作用。
根據我在課堂上的經驗,通常每班有一兩個學生似乎比其他學生有更多的問題遇到麻煩的訣竅,這些問題通常是相當隨機且難以理解的問題。 我提醒學生,他們面對的問題越多,學習得越深入和透徹的可能性就越大。 如果他們能夠通過這些問題獲得理解,他們會很快發現自己比以前的普通學生更有信心,因為他們面對并解決了更多的問題。
患者接受度:您需要認識到問題與領土相關,不是問題,而是挑戰。 您面臨和克服的每一個挑戰都使您有更深刻的理解,并具有更好的能力來應對新挑戰并迅速解決舊挑戰。
4、解決問題沒有成功的感覺
如果您在解決問題后沒有感到興奮和成就感,那么您將永遠無法成為一名程序員。
成功解決問題后,與先前的問題太容易放棄有關的是缺乏"良好感覺"。 當修復bug和問題變成永無止境的跑步機時,您會失去克服問題所帶來的興奮。
解決問題時,實際上需要多巴胺。 這類似于完成視頻游戲中的關卡,或解決諸如填字游戲或數獨游戲之類的挑戰的經驗。 我們都知道,有一種良好的感覺來自于堅持不懈的挑戰并最終贏得勝利。 但是,如果您喪失了感受這些感覺的能力,或者一開始就從未真正關心過,那么您將無法體驗編程帶來的快樂。 如果您將編程視為一種磨礪,而您只是想盡可能輕松地獲得結果,那么您將永遠無法真正成為一名成功的程序員。
慶祝您的勝利:每當您解決自己遇到的難題時,無論規模多么小,都應該為自己的成就感到自豪,稍事休息,并為自己所做的出色工作表示祝賀。 讓成功感沉浸在其中,并為您面臨的下一個問題激發您的精力。
5、對學習和理解不耐煩
如果您對學習沒有耐心并且期望快速而輕松地掌握所有內容,那么您將永遠無法真正成功地編程。
作為人類,我們是有限的生物。 即使我們的世界運轉得越來越快,并且計算機是造成這種情況的主要原因,但我們只能盡我們所能地加快步伐。 我們的大腦以一定的速度運轉,并取決于我們的過去,信念,情緒狀態,健康狀況……我們將以不同的速度學習和整合信息。
技術世界就像一片廣闊的海洋。 您將永遠不會走到盡頭,也永遠不會到達一個您無所不能學習的主人的地步。 如果讓自己不知所措,您將總是感到要"追趕"的壓力,并感到自己永遠不夠了解。 如果您不接受所知道的知識,然后學到更多知識,您會覺得自己無所適從,放棄了。
相反,您需要享受自我學習的旅程。 您獲得的每一點知識或新技能都需要使您興奮。 像解決問題一樣,您需要讓自己感到自豪,即使您邁出了很小的一步,也意識到自己已經邁出了一步。
確認您的進步:有很多東西要學習,編程的旅程永遠不會結束。 但是知識是累積性的,因此以您所了解的知識為榮,并相信您在學習中所做的一切努力都會為您的職業帶給您堅實的知識基礎。
6、變得無聊/厭倦了思考
如果您懶于思考并且將集中注意力集中在瑣事上,那么您將永遠不會真正地成功編程。
編程是一種思考活動。 作為人類,我們確實善于思考,但是現實是,即使我們自然地整天都在思考,但我們的思維卻很懶惰。 如果您不習慣,很難在一段時間內集中精力專注于單個問題。
其癥狀包括茫然地盯著屏幕,感覺到云層在您的思想中落下,拖延問題,在瀏覽器選項卡之間切換以及拼命掃描StackOverflow以尋找"答案"。 這些跡象表明您已經遇到了精神上的限制,需要找到解決方法。
在編程時,您會感到疲倦,而思考實際上會消耗身體的能量,就像鍛煉我們的身體一樣。 當您不習慣發揮所需的精神能量時,很難集中精力。 但這就像去健身房一樣,您做的越多,就會越堅強。
您的心靈就像一塊肌肉:相信您的大腦就像一塊肌肉,使用它的時候,思維會變得更好,更有效。 當您將各個部分放在一起并發展出思維概念時,發現解決方案變得容易得多。
7、無法為自己思考
如果您希望別人為您考慮,而又不愿考慮自己情況的細節,那么您將永遠不是真正的成功程序員。
當您學習新事物時,很容易感覺到您自己缺乏知識和經驗。 主動做或說錯事似乎有風險。
我們所有人都有一種內在的恐懼,那就是錯誤。 當對錯誤的恐懼限制了您的探索和好奇心時,您就會抑制發展真正知識的能力,即從經驗和"失敗"中獲得的知識。 當您需要依靠"專家"的意見,流行的博客作者,最佳實踐或"教科書"的答案時,您并沒有真正整合編程方面的實用知識。
您需要就什么可行,和什么無效提出自己的看法。 您需要了解為什么,您認為您的解決方案有效,以及有什么好處。 您需要開發一個細微的視角,超越明顯的視角。 您需要能夠"支持"您的立場,然后如果您進行更改,則可以擁有自己所獲得的新觀點。
自己思考:通過您的經驗和批判性思維技能,發展自己的觀點。 做出合理的猜測,采取立場,并愿意隨著新信息的出現而發生變化。
8、僵硬,狹隘和/或混亂的思維
如果您思維僵化,并且很難使代碼井井有條,并且通過擴展思路使您的思想井井有條,那么您將永遠不會成功編程。
我有時在學生中看到兩個極端。 首先是僵化而狹隘的思維方式。 這種態度拒絕幫助,盡管有反饋,但這種態度不會改變。 僅從一個角度看事情,而忽略建議。
我看到的第二個極端是思維混亂。 學生似乎使事情變得不必要的復雜,他們的代碼混亂而且難以遵循。 他們認為問題太多了,原本10行代碼可以解決的問題,就寫了一百行代碼。
當將這兩種思維方式結合在一起時,結果便是一種笨拙的編程方法,例如蠻力方法導致層層修復和"Hack"。 所需要的是能夠回顧解決方案,重新評估解決方案,放棄最初的方法并進行重組的能力。
無法看到其他可能性,或無法收到反饋,這會抑制其成長和提高的能力。 雜亂無章的速度會使您放慢腳步,并阻止您看到原本顯而易見的模式。 并且您的工作的整體質量下降。
自我反思:您需要退后一步,并從更大的角度看待您如何對待事物。 您如何更好地做到這一點? 有什么可以做的使您的生活更輕松? 您缺少什么可以幫助您的?
9、需要"正確"答案,而不是認識到一系列"好"和"壞"答案
如果您將編程的最終目標看作是找到合適的解決方案,而不是找到各種解決方案,那么您將永遠無法真正成為一名程序員。
在開始學習技能或編程時,學生經常想知道他們所做的是否"正確"。 答案始終是"取決于情況"。
計算機科學是評估權衡的科學。 在不同情況下,哪條路更好? 這完全取決于環境和目標。 當您將編程視為正確答案或錯誤答案的測試時,您將失去整體視野,而放棄自己的創造力。 如果您可以根據情況證明其正確性,那么任何答案都可能是"正確"的。
現實情況是,編程更像是寫詩或短篇小說(如果程序很大,則可能是小說)。 在您的代碼中可以看到一種美感和美感,有時只有您和其他程序員才能識別出它。 您決定解決方案的原因以及答案的構想比"正確的方法"或"錯誤的方法"更為重要。 擁有藝術家的思想使您可以選擇和嘗試,而不是僅僅想辦法。 那就是編程的美,有很多方法可以解決問題,而對各種可能性的考慮會導致人們感覺哪種方法最適合這種情況。
發揮創意:認識到有很多方法可以解決問題,并且通過經驗和暴露,您將逐漸加深對哪些解決方案比其他解決方案感覺更好的理解。 放眼大局,想象不同的可能性,并相信自己的直覺會帶來更令人滿意的,更好的解決方案。
10、不注意細節
如果您掩飾細節,卻忽略了一些小事情,那么您將永遠不是真正的成功程序員。
計算機是精密的機器。 在對計算機進行編程時,您需要按照計算機期望的方式準確地提供必要的命令。 如果您不這樣做,將無濟于事。 在大多數情況下,沒有中間的事情可以起作用,要么起作用,要么不起作用。
這意味著在編程時,您必須注意細節。 每個空格,方括號或分號都重要。 不合適時,將無任何作用。 當計算機發回錯誤消息時,您必須能夠查看該消息并準確了解它在告訴您什么。 現實情況是,如果您錯過了這樣的細節,您可能會花費數小時來查找實際上是拼寫錯誤導致的問題。
正如他們所說,細節決定成敗。 對于編程絕對是正確的。
注意細節:細節很重要,您必須接受。 完成后,您可以開始始終在代碼中掃描任何不適當的內容。 您可以組織代碼并使用可幫助您快速發現問題的工具。
獎勵:具有商業頭腦
我注意到這是一個旁觀者,尤其是具有商業頭腦的學生,通常專注于結果而不是過程。 他們希望獲得一個"可運行的應用程序",以使他們的經營理念向前發展,他們希望"首先進入市場",并且他們將學習曲線視為實現其業務發展目標的障礙。
在反思那些難以真正幫助他們成長為程序員的學生時,我發現這種過程不耐煩,阻礙了真正理解技術所需的學習。 他們傾向于將技術視為達到目的的手段,而不是要探索和享受的知識領域。
作為一種自然的延伸,我發現某些學生更傾向于業務,并且學習困難,常常很快讓自由職業者簽約,他們實際上沒有技能自己做的工作! 他們會爭先恐后地尋找資源/模板來使項目為客戶服務,或者將工作外包給其他人。 他們確實很喜歡編程,但是付錢找別人編程更為便捷!
因此,我要補充的是,那些渴望創業的學生,擅長銷售,網絡和業務發展,他們可能比其他人更難以學習編程技能。 他們天生渴望創造財務機會并將人們與解決方案聯系起來,這使他們對編程中涉及的繁瑣細節不耐煩。
結論
盡管編程可能是一種很難學習的技能,但肯定是大多數人可以學習的技能。 上面的列表中包含了妨礙您前進的態度和心態,但是大多數人都可以克服它們,并在編程領域發展你的能力(如果不是精通的話)。
如果您有興趣學習編程,我鼓勵您開始旅程。 請牢記上面的清單,并開始探索許多在線可用資源,這些資源可以使您快速前進。 您不會后悔的。