小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

為什么你寫的代碼糟透了?

 非著名問天 2019-03-19

我經(jīng)常在 Reddit 或 Quora 上看到有人問“怎么知道自己是否可以成為一名成功的程序員”?。當(dāng)有人在考慮職業(yè)轉(zhuǎn)型,或者對軟件開發(fā)感興趣,并且對軟件開發(fā)所涉及的內(nèi)容感到好奇時,就不可避免地會問這樣的問題。

事實上,對于那些沒有正式接受過計算機(jī)培訓(xùn)的人來說,這個問題會成為他們腦子里的一個主要障礙。他們會很自然地認(rèn)為,如果自己不擅長編程,是否可以往這方面想?就好像你想成為一名演員,但又懷疑自己是否擅長表演。

作為一名教授全棧 Web 開發(fā)的教育工作者,我教過很多“初次進(jìn)入這個領(lǐng)域的程序員”。好消息是,我很少會遇到無法學(xué)會編程的學(xué)生。我認(rèn)為編程是人類的一項基本技能,就像閱讀、寫作和算術(shù)一樣。任何人都可以做到,它是人類能力的一部分,但確實需要進(jìn)行有意識的學(xué)習(xí)。

在過去兩年中,我目睹了各種各樣的學(xué)生在這個過程中的掙扎,以及他們在掙扎過程中出現(xiàn)的一些問題。看一下下面的清單,如果你在自己身上看到了這些問題,說明你可能在編程方面糟透了,你可以考慮去做一些更適合你的事情。但是,如果你仍然極力想成為一名程序員,那就可以輕松面對這些問題,并做出改變。

下面的清單將幫你了解你是否在編程方面糟透了,并且如果你想要做出改變,可以做些什么。

1.缺乏好奇心

如果你對計算機(jī)和技術(shù)原理缺乏好奇心,那就永遠(yuǎn)不會成為一名成功的程序員。

對學(xué)習(xí)的東西感興趣是學(xué)好東西的基礎(chǔ)。如果你對技術(shù)沒有好奇心,就不具備足夠的能量堅持下去,因為要成為一名成功的程序員,需要進(jìn)行廣泛而深入的學(xué)習(xí)。

技術(shù)世界就像一片浩瀚的海洋,充斥著有趣的領(lǐng)域知識、相互連接的想法,以及可以激發(fā)想象力的無窮可能性。它需要內(nèi)在的動力去潛心研究并發(fā)現(xiàn)你所能發(fā)現(xiàn)的一切。

找到你的好奇心:問問自己是否真的對編程感興趣。如果你的答案是“否”,那么去尋找你感興趣的東西吧,請省下你的時間和精力。但是,如果你的答案是“是”,那么就去尋找你之前沒有注意到的東西,潛入那個浩瀚的海洋中去吧。

2.缺乏自主性和智慧

如果你不去培養(yǎng)解決問題的能力,那就永遠(yuǎn)不會成為一名成功的程序員。

毫無疑問,想要成為一名成功的程序員,你必須對自己的學(xué)習(xí)能力充滿信心。這實際上是一項基本的生活技能——如果你年滿 18 歲,沒有人有義務(wù)教你什么。這就是現(xiàn)實。你要自己去探索對你來說最重要的東西。

在軟件開發(fā)的世界里,你需要的信息都可以在一個神奇的地方找到,這個地方以前被稱為信息高速公路。而這個龐大的圖書館有一個巨大的入口:搜索引擎。你首先要學(xué)會在搜索引擎中輸入任何你想要的內(nèi)容,并獲得所需的信息,這是學(xué)習(xí)技術(shù)的第一道障礙。

除了成為一個優(yōu)秀的搜索引擎用戶之外,所有編程語言都提供了文檔和規(guī)范,它們非常明確地說明了編程語言的工作原理。這就像使用字典一樣——當(dāng)你看到一個不認(rèn)識的單詞時,就開始查字典。對于程序員來說,閱讀文檔是提升技能最快,最可靠的方法。

利用資源:你需要的所有答案都已經(jīng)在那里。當(dāng)你遇到問題時,先使用搜索引擎,然后再向其他人尋求答案或查看文檔。

3.面對問題時無法堅持

如果你在面對問題時很容易就放棄,那就永遠(yuǎn)不會成為一名成功的程序員。

編程的本質(zhì)是解決問題。這就是為什么人類要發(fā)明計算機(jī)!當(dāng)你開始寫代碼時,會遇到一堆問題。在你解決了一個問題之后,通常會有另一個問題在等著你。解決問題的過程就是你取得進(jìn)步的過程,但總有新的問題需要面對。

總是要面對一堆問題可能會讓人望而生畏和沮喪。如果你認(rèn)為事情做到“差不多”就行了,那么你就不會有足夠的能量堅持下去,因為問題會持續(xù)出現(xiàn),它們會一點一點消磨掉你僅有的熱情。

根據(jù)我的教學(xué)經(jīng)驗,通常每個班級都會有一到兩名學(xué)生,他們似乎會比其他學(xué)生遇到更多的問題——通常都是很隨意和模糊的問題。我提醒學(xué)生,他們遇到的問題越多,學(xué)習(xí)就會更深入、更徹底。如果他們能夠通過解決這些問題理解到更多東西,他們就會變得更加自信,因為他們比普通學(xué)生面臨并解決了更多的問題。

耐心接受:你需要認(rèn)識到,問題實際上就是挑戰(zhàn)。你面臨和克服的每一個挑戰(zhàn)都會讓你更深刻地理解和更好地面對新挑戰(zhàn),并迅速解決舊挑戰(zhàn)。

4.解決問題沒有成就感

如果你在解決問題后不會感到興奮或沒有成就感,那就永遠(yuǎn)不會成為一名成功的程序員。

在成功解決問題后缺乏一種“良好的感覺”,這與前面的太容易放棄其實是有關(guān)系的。當(dāng)修 bug 變成一種似乎永無止境的任務(wù)時,從克服問題中獲得的興奮感會離你而去。

在應(yīng)對挑戰(zhàn)時,實際上需要多巴胺的刺激。這種體驗有點像視頻游戲中的升級或玩填字或數(shù)獨(dú)游戲。我們都知道,堅持完成一個挑戰(zhàn)并最終取得勝利,這樣會獲得一種良好的感覺。但如果你失去了感受這些感覺的能力,或者從一開始就沒有真正關(guān)心過,那么你將無法體驗到編程帶來的快樂。如果你認(rèn)為編程是一種苦差事,只想盡可能輕松地獲得結(jié)果,那么你就永遠(yuǎn)不會成為一名成功的程序員。

慶祝你的勝利:每當(dāng)解決了一個困擾你已久的問題,無論是多么小的問題,都要為你的成就感到自豪。休息一下,給自己慶祝一下,讓成功的感覺進(jìn)入你的身體,并讓它激勵你面對下一個問題。

5.缺乏耐心

如果你對學(xué)習(xí)感到不耐煩并希望能夠快速而輕松地掌握所有東西,那就永遠(yuǎn)不會成為一名成功的程序員。

人類的能力是有限的。即使我們的世界發(fā)展得越來越快,而計算機(jī)是促成這種發(fā)展的一個重要動力,但我們也只能盡可能快地跟上世界發(fā)展的腳步。我們的大腦以一定的速度運(yùn)轉(zhuǎn),并且取決于我們的過去、信念、情緒、健康……我們學(xué)習(xí)和整合信息的速度是不一樣的。

技術(shù)世界就像浩瀚的海洋,你永遠(yuǎn)無法走到盡頭,無法成為一個不再需要學(xué)習(xí)任何東西的高手。如果你讓自己不知所措,就會有一種想要“迎頭趕上”的壓力,你會覺得自己知道的永遠(yuǎn)不夠多。如果你不能接受你所知道的,然后再多學(xué)一點,你會覺得自己沒有進(jìn)步,然后就會放棄。

相反,你要享受自己的學(xué)習(xí)之旅。你掌握的每一點知識,或者獲得的每一項新技能都應(yīng)該讓你感到興奮。就像解決問題一樣,你需要讓自己感到自豪,因為你已經(jīng)向前邁出了一步,即使是很小的一步。

承認(rèn)你的進(jìn)步:有很多東西需要學(xué)習(xí),編程之旅永無止境。但這些知識是可以累積的,所以要為自己所知道的事情感到自豪,并相信你在學(xué)習(xí)中所付出的一切努力都將為你的職業(yè)生涯打下定堅實的基礎(chǔ)。

6.厭倦了思考

如果你懶于思考,把集中、專注的思考看成是一件苦差事,那就永遠(yuǎn)不會成為一名成功的程序員。

編程是一項思考活動。作為人類,我們非常擅長思考,但現(xiàn)實情況是,即使我們很自然地花了一整天去做這件事,我們在思考上仍然是懶惰的。如果你還不習(xí)慣,那么要想在一段時間內(nèi)集中精力解決一個問題是很困難的。

這種情況的癥狀包括茫然地盯著屏幕、感覺腦袋上籠罩著烏云、拖延、在瀏覽器標(biāo)簽之間切來切去,以及拼命在 StackOverflow 上尋找“答案”。這些跡象表明你已經(jīng)達(dá)到了思考極限。

在編程過程中,你會感到疲倦,思考就像鍛煉身體一樣會消耗你的能量。當(dāng)你不習(xí)慣運(yùn)用所需的精神能量時,會感到很難保持專注。但就像去健身房一樣,你做的越多,就越強(qiáng)大。

你的大腦就像一塊肌肉:你的大腦就像一塊肌肉——當(dāng)你使用它時,它會在思考過程中變得更好,更有效率。當(dāng)你把各個部分放在一起形成思維概念時,尋找解決方案就會變得容易得多。

7.無法自己思考

如果你希望別人為你考慮,并且不愿意自己去探究細(xì)節(jié),那就永遠(yuǎn)不會成為一名成功的程序員。

當(dāng)你在學(xué)習(xí)新東西時,會覺得自己缺乏知識和經(jīng)驗,無法擁有自己的觀點。太過主動或者做錯或說錯某些東西似乎是有風(fēng)險的。

我們都會有一種固有的恐懼感。當(dāng)對犯錯的恐懼抑制了探索欲和好奇心時,你就會扼殺掌握知識的能力,而這些知識需要從經(jīng)驗和“失敗”中獲得。當(dāng)你需要依賴“權(quán)威”、受歡迎的博主、最佳實踐或“教科書”給出的答案時,你就沒有真正整合編程的實用知識。

你需要發(fā)展自己的觀點,了解哪些東西是有效的,哪些是無效的。你需要了解為什么你的解決方案是有效的,以及它的好處是什么。你需要發(fā)展一種超越顯而易見的事物的微妙視角。你需要能夠為你的立場“爭辯”,如果你的看法變了,就可以獲得新的視角。

自己去思考:通過你的經(jīng)驗和批判性思維技能來發(fā)展自己的觀點。做出合理的猜測,表明立場,并愿意隨著新信息的出現(xiàn)而做出改變。

8.僵化、狹隘和紊亂的思維

如果你的思維僵化,并且很難保持代碼的條理性,那就永遠(yuǎn)不會成為一名成功的程序員。

有時候,我會在學(xué)生身上看到兩個極端。第一種學(xué)生擁有僵化而狹隘的思維方式,他們拒絕幫助,盡管收到了反饋,也不會做出改變。他們只從一個角度看待事物,建議通常會被他們忽略。

第二個極端是思維混亂。這種學(xué)生似乎喜歡把事情復(fù)雜化,他們的代碼很亂,難以理解。他們過度思考問題,10 行代碼就可以解決的問題他們要寫 100 行。

當(dāng)這兩種思維模式結(jié)合在一起,就會形成一種嚴(yán)密的編程方式,就像使用蠻力一樣,會導(dǎo)致一層又一層的修復(fù)和“hack”。這個時候需要回顧解決方案,重新評估它,并放棄最初的方法,然后重新組織解決方案。

看不到其他可能性或無法收到其他反饋會抑制成長和進(jìn)步的能力。沒有條理性會減慢你的速度,阻止你看到原本顯而易見的模式。你的整體學(xué)習(xí)質(zhì)量就會下降。

自我反思:你需要退后一步,從更廣的角度看待你是如何處理事情的。怎樣才能做得更好?可以做些什么讓你的生活變得更輕松?你錯過了哪些可以幫助你獲得提升的東西?

9.只在意“正確”的答案,不想去找出一系列“好”和“壞”的答案

如果你認(rèn)為編程的最終目標(biāo)是找到正確的解決方案,而不是一系列解決方案,那就永遠(yuǎn)不會成為一名成功的程序員。

在開始學(xué)習(xí)技能或編程時,學(xué)生通常想知道他們所做的是不是“正確”的。但答案總是“取決于”。

計算機(jī)科學(xué)是一門評估權(quán)衡的科學(xué)。對于不同的情況,采取哪條路經(jīng)會更好?這一切都取決于具體的情況和目標(biāo)。如果你將編程看作是一個正確答案或錯誤答案的測試,那么你就會忽視大局,創(chuàng)造力會與你擦肩而過。任何答案都可以是“正確”的,只要你能在特定情況下證明它。

現(xiàn)實情況是,編程更像是寫詩或短篇小說(大型程序就像是小說)。在你的代碼中可以看到一種美感,有時只有你和其他程序員可以看得出來。你做出決策的原因和你構(gòu)思答案的方式比“正確的方式”或“錯誤的方式”更加重要。擁有藝術(shù)家的頭腦會讓你擁有更多的選擇和可能性,而不是認(rèn)為只有一種答案。這就是編程之美,解決問題的方法有很多,思考不同的可能性會讓人產(chǎn)生一種感覺,知道哪個解決方案是最適合的。

變得有創(chuàng)意:要意識到解決問題的方法有很多,通過經(jīng)驗和接觸,隨著時間的推移,在選擇解決方案時你會形成一種微妙的理解能力。從大局出發(fā),想象不同的可能性,相信自己的直覺,你會找到更好的、更令人滿意的解決方案。

10.不注意細(xì)節(jié)

如果你忽略細(xì)節(jié),忽視小事情,那就永遠(yuǎn)不會成為一名成功的程序員。

計算機(jī)是精密的機(jī)器。在進(jìn)行計算機(jī)編程時,你需要以計算機(jī)期望的方式精確地提供必要的命令。如果你不這么做,就什么都不會發(fā)生。一個程序要么可以運(yùn)行,要么不能運(yùn)行,不存在所謂的中間地帶。

所以,在編程時,你必須注意細(xì)節(jié)。每個空格、括號或分號都很重要。出了一點問題都不行。當(dāng)計算機(jī)返回錯誤消息時,你必須能夠準(zhǔn)確理解它告訴你的信息。而現(xiàn)實情況是,如果你錯過這樣的細(xì)節(jié),可能需要再花費(fèi)數(shù)小時追查一個問題,而這個問題實際上可能是由一個錯別字導(dǎo)致的。

細(xì)節(jié)決定成敗。對于編程來說,這絕對是至理名言。

注意細(xì)節(jié):細(xì)節(jié)很重要,你必須接受這個事實。如果你可以做到,那就從一開始就掃描代碼,找出任何不恰當(dāng)?shù)牡胤?。你可以借助一些可以幫助你快速識別問題的工具。

11.Tips:掌握商業(yè)思維

這是我觀察到的另一個結(jié)果——注重商業(yè)思維的學(xué)生往往更關(guān)注結(jié)果而不是過程。他們希望得到一個“可運(yùn)行的應(yīng)用程序”,幫助他們將商業(yè)理念向前推進(jìn),他們希望“先進(jìn)入市場”,認(rèn)為學(xué)習(xí)曲線是他們實現(xiàn)業(yè)務(wù)目標(biāo)的障礙。

在反思那些難以幫助他們成長為程序員的學(xué)生時,我發(fā)現(xiàn)了他們對這個過程缺乏耐心,缺乏耐心給他們理解技術(shù)帶來了阻礙。他們往往把技術(shù)視為一種達(dá)成目的的手段,而不是一個可以探索和享受的領(lǐng)域知識。

作為這一觀點的延伸,我發(fā)現(xiàn)有些學(xué)生很有商業(yè)頭腦,他們在學(xué)習(xí)中會遇到困難,但往往很快就有客戶與他們簽約,從事自己實際上并不擅長的工作!他們會爭先恐后地尋找資源或模板讓項目跑起來,或者把工作外包給其他人。他們在編程方面確實很爛,但在讓人們付錢給他們編程方面卻很有一套!

所以我想要補(bǔ)充的是,那些渴望創(chuàng)業(yè)的學(xué)生,在銷售、網(wǎng)絡(luò)和業(yè)務(wù)發(fā)展方面都很優(yōu)秀,他們可能比其他人更難以學(xué)會編程。他們天生希望創(chuàng)造經(jīng)濟(jì)機(jī)會,并將人們與解決方案聯(lián)系起來,這導(dǎo)致他們對編程中涉及的繁瑣細(xì)節(jié)感到不耐煩。

12.結(jié)論

雖然編程可能是一項難以掌握的技能,但大多數(shù)人肯定都能學(xué)會。上面的清單列出了妨礙我們?nèi)〉眠M(jìn)步的態(tài)度和思維方式,但大多數(shù)人都可以克服它們,并培養(yǎng)出編程能力(不一定要精通)。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多