国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何成為一個優秀的程序員

wuyangchun / 1313人閱讀

摘要:我開始去關注一個問題的最終目的是什么,得益于喬治波利亞的書如何解決這個問題。在此基礎上,我也會制定了計劃,這也是喬治波利亞的另一個建議。明白為什么讓我對前后關系理解更深刻,幫助我成為一個見多識廣的程序員。

原文鏈接: https://medium.com/free-code-camp...  
譯者:前端技術小哥
是什么讓真正優秀的程序員與眾不同?

眾所周知的是,優秀的程序員可以構建令人贊嘆的功能、網站、應用程序等等。但是他們有什么共同點呢?
經過我的研究,這不僅僅只是熟練掌握一門編程語言或有特定的教育背景。真正有才華的程序員已經掌握了基礎要素。這些基礎要素使他們能夠建立偉大事物,并提出突破性的想法。
想像一下金字塔,金字塔有一個很大的底座,然后越往上越小越薄。學習編程的基礎知識就像建造金字塔的底部,一切都從底部開始。
那么這些基礎要素都有些什么呢?根據我的經驗以及我研究過的一些優秀的程序員,我認為編程基礎要素主要有以下兩部分。

解決問題的能力


首先,你必須做到能夠高效的解決問題。這是一個關鍵的起點因為編程就是為了解決問題的。
雖然覺得問題的方法可以有很多,但過程中有幾個部分讓我印象深刻。擁有出色的解決問題的能力的程序員會先將問題的本質提煉出來,以便于確定總體目標并帶著這個目標著手解決問題。然后他們將每個問題分解成容易處理的小問題,依次處理每個小問題,有時還可以通過繪制導圖使其實現可視化。
這個過程做起來遠比聽起來難得多。當我開始學習編程的時候,我也會遇到瓶頸:和大多數人一樣,我從未在學校學會如何解決問題,這也不是一項容易傳授的技能,曾經,老師在數學課上布置了一組習題,我便一頭栽了進去,正如我剛剛開始編程的時候。毋庸置疑,我這是在做無用功并且在最簡單的問題就遇到了障礙。
當我開始學習如何解決問題甚至是高效的解決問題,情況開始發生變化。我開始去關注一個問題的最終目的是什么,得益于喬治·波利亞的書《如何解決這個問題》。
我把波利亞的一些想法運用到編程里,比如如何去理解問題。“這個問題必須被理解,”波利亞寫道。這包括能夠“指出問題的主要部分、未知、數據和條件?!睂τ诿恳粋€問題,我都拿出一張紙,然后寫下這些問題的答案:我在解決什么問題,或者我在試圖尋找什么?(未知);我現在有什么已知?(數據);我需要注意哪些限制條件或細節?(條件)。
理解這個問題對我們來說似乎是顯而易見的,但顯而易見的問題很容易被忽視。我不止一次在一個問題上投入了數小時但是毫無收獲,過了一會才意識到這個問題,我錯過了問題陳述中一個小而關鍵的細節。寫下問題的細節雖然會讓我的思維變慢,但是同時這幫助我準確地思考我需要做什么,這就已經成功的一半。
在此基礎上,我也會制定了計劃,這也是喬治·波利亞的另一個建議。我會在寫文章之前先寫提綱,畫家在正式作畫之前會先畫一幅草圖,建筑商用圖紙和藍圖來建造房屋,編程也一樣。與其急著去做,我還不如先想好我要做什么,然后制定一個計劃。
具體的實施方法有很多種。有時我用數字的順序列出我需要采取的步驟:第一件事做這個,第二件事做那個。有時候我也可以把問題可視化,當我學習for loops的時候,我拿出一把杏仁,在這堆杏仁中進行物理循環。這個例子聽起來很幼稚,但它能很好的幫助我思考了這個問題。
我也會畫一些示意圖。對于遞歸問題,我會繪制圖表來說明每次遞歸調用時發生的情況,直到遞歸完成為止。我會想辦法如何去簡化問題,使其更易于處理,并幫助我發現一個合適的解決方法。最重要的是,我是帶著目的性去進入一個問題,并在解決問題的過程中始終保持著這種目的明確的感覺。
有時盡管制定了最好的計劃,問題仍然很難被解決,我還是有可能沒有思路。成為一個高效的問題解決者需要時間;我仍在努力的學習這個技能,這是絕對值得的。
當我閱讀由一個優秀程序員編寫的代碼時,最直觀的感覺就是它很干凈,很容易理解。變量被很好的命名,函數簡單明了,每一行代碼都有特定的用途。代碼的清晰性度反映了程序員的思考過程:我可以從頭到尾閱讀程序,并確切地知道發生了什么。這是很棒的解決問題的方法,也是我所追求的。

掌握計算機科學


學習計算機科學是編程基礎的第二部分。我最近開始學習計算機科學,并且喜歡它,因為學會了這些就能站到比別人更高的地方去看問題。比如我開始從幕后的角度去了解使用內置函數時會發生什么。我還學習了內存和運行時間等許多其他主題。簡而言之,我正在學習計算機為什么要做它所做的事情。
明白“為什么”讓我對前后關系理解更深刻,幫助我成為一個見多識廣的程序員。因此我在編寫代碼時更加深思熟慮?,F在我對時間復雜度有了一些了解,舉個例子,我更傾向于使用二分查找,而不是遍歷列表中的每個元素。
這也豐富了我對于核心編程概念如何運作的理解。打個比方,曾經我在研究一個遞歸問題,但沒有得到我預期的結果。經過仔細審視,我明白了原因:這與調用堆棧的執行有關,幾個月前的我并不知道這個。
學習計算機知識也幫助我去使用類。對于類,我苦苦掙扎了很長一段時間,也不敢使用它。我知道如何編寫類,但不確定什么時候用,為什么用。當我了解到當我的計算機中創建實例和調用方法時實際發生的事情時,情況就發生了變化。當我有了一些相關知識之后,我就敢使用類了。對于遞歸和類,計算機科學填補了我知識上的空白。
所有這些基礎要素往往都被拋到一邊。進步是緩慢的因為人們往往傾向于選擇有趣的工作當他們有選擇的余地的時候。這太可惜了。而掌握基本要素的程序員似乎對編程充滿信心:他們清楚的知道他們的編程時的“如何”和“為什么”,這改進了他們的工作并增強了他們在其他人的面前的可信度。
另外,扎實的基礎知識使學習新的編程語言和技術沒那么困難。例如,花時間真正理解一種編程語言的核心概念像迭代、遞歸和抽象這樣的核心概念有助于學習另一種語言。簡單地說,掌握了基本知識,將會獲益匪淺,幾乎沒有什么損失。

?? 看之后

點贊,讓更多的人也能看到這篇內容(收藏不點贊,都是耍流氓 -_-)

關注公眾號「新前端社區」,號享受文章首發體驗!每周重點攻克一個前端技術難點。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/106231.html

相關文章

  • 如何成為一名優秀序員

    摘要:前言羅子雄如何成為一名優秀設計師董明偉工程師的入門和進階董明偉基于自己實踐講的知乎為新人提供了很多實用建議,他推薦的羅子雄如何成為一名優秀設計師的演講講的非常好,總結了設計師從入門到提高的優秀實踐。 前言 羅子雄:如何成為一名優秀設計師 董明偉:Python 工程師的入門和進階 董明偉基于自己實踐講的知乎live為Python新人提供了很多實用建議,他推薦的羅子雄:如何成為一名優秀...

    keelii 評論0 收藏0
  • 如何成為一名優秀web前端工程師(前端攻城師)?

    摘要:我從沒有聽到有人問如何做一名優秀甚至卓越的前端工程師。作為一個優秀的前端工程師還需要深入了解以及學會處理的這些缺陷。再者,優秀的前端工程師需要具備良好的溝通能力,因為前端工程師至少都要滿足四類客戶的需求。   我所遇到的前端程序員分兩種:   第一種一直在問:如何學習前端?   第二種總說:前端很簡單,就那么一點東西。   我從沒有聽到有人問:如何做一名優秀、甚至卓越的WEB前端工程師...

    Turbo 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<