學習程式設計的5大支柱

2021-10-03 05:04:05 字數 3514 閱讀 7908

原文:5 pillars of learning programming

對於初學者來說,通常入門的程式設計課程和培訓班的學習內容都很深入,採取本文的步驟進行學習.

如何學習程式設計是困難的,我經常發現大學課程和培訓班錯過了程式設計的重要方面,並且在教授初學者的時候採取了差勁的方法.

我想分享我認為成功的程式設計課程應該包含的5個基本支柱。與往常一樣,我正在解決主流web應用程式的問題.

新手的目標是掌握程式設計的基礎知識,並了解庫和框架的重要性.

雲,一般操作或構建工具等高階主題不應該成為課程的一部分。對於設計模式,我也表示懷疑。他們認為這是初學者從未有過的經驗.

tdd帶來了很多好處.不幸的是,這是乙個高階主題,初學者還沒有完全做好準備.

初學者不應該編寫測試。對於他們的基本技能水平來說,這太難了。相反,他們應該學習如何使用和操作(執行)測試.

每個程式設計課程都應圍繞練習進行。我將單元測試擴充套件到練習中,並為學生提供乙個已經準備好執行這些測試的環境.

所有學生所需要做的就是編寫他們的**,然後看著測試執行程式的指示燈從紅色變為綠色。產生的視覺化結果是乙個很好的促進作用.

例如,如果選擇的技術是spring,那麼我將在spring專案中提供練習和測試。學生不需要了解spring。他們只需要知道練習的位置和觸發測試的按鈕即可.

此外,學生必須知道如何使用debug偵錯程式並準備好repl。在tdd中,執行時分析**的能力以及可以進行測試的地方至關重要.

重點是確保學生在掌握核心程式設計技能後不必學習基本的tdd行為。在學生職業生涯的後期改變習慣要比現在學習這些習慣困難得多。這就是為什麼他們從一開始就應該全面學習單元測試的原因.

在職業生涯的後期,他們應該對沒有寫單元測試的專案產生反感。他們應該直觀地將缺少單元測試視為反模式.

我經常聽到初學者應該立即從框架開始。這就像教人們如何將他們放在拉力賽車上並要求他們避免過度轉向一樣。這只是忽略了乙個事實,他們仍然會將剎車誤認為是油門.

當我們以angular之類的框架開始學習時,事實也是如此。初學者需要首先了解程式設計的基礎知識。他們需要熟悉基本要素以及所編寫**的含義,然後才使用別人的框架.

函式,變數,條件和迴圈的概念對於初學者來說是完全陌生的。這四個要素為程式設計奠定了基礎。程式所構成的一切都依賴於它們.

學生們是第一次聽到這些概念,但是最重要的是,學生要精通它們。如果學生不掌握基礎知識,那麼接下來的一切看起來就像是魔術,並且會使他們感到混亂和挫敗.

教師應該在這些基礎知識上花費更多的時間,但遺憾的是,步伐太快了。問題是老師努力讓自己扮演學生的角色。他們已經程式設計了很長時間了,卻忘記了初學者必須處理哪些型別的問題。它與職業拉力賽車手非常相似。他無法想象有人在剎車之前需要思考。他只是自動執行。

我將這四種主要要素結合在一起,設計出一種具有挑戰性但可以在合理時間內解決的學習方式.

乙個很好的例子是羅馬數字和阿拉伯數字的轉換器。這個挑戰需要學生的耐心。一旦他們成功地運用這四個要素來解決挑戰,他們的學習動機也會大大增強.

基本原理很重要。在沒有解決之前不要繼續前進.

在學生花費大量時間進行編碼之後,他們必須了解大多數**已經以庫或框架的形式存在。這更是一種思維模式,而不是一種模式.

正如我之前所寫:現代開發人員知道並選擇合適的庫。他們無需花費數小時自行編寫錯誤的版本.

為了使這種思維方式成功過渡,應該使用moment.js,jackson,lodash或apache commons等著名的庫解決「基礎階段」中的示例.

這樣,學生將立即了解庫的價值。他們為那些複雜的問題嗤之以鼻。現在,學生發現庫可以立即解決該練習.

與tdd類似,當同事吹噓自己的自製狀態管理庫而使redux不必要時,學生應該變得可疑.

談到框架時,一旦學生了解了庫的有用性,他們便會毫無疑問地理解其重要性。

根據課程的時間框架,可能很難花時間在框架上。但是正如我已經指出的那樣,最重要的方面是使學生的思維方式從程式設計的所有內容轉移到從頭開始學習和使用庫.

我沒有在此支柱上新增工具,因為它們僅對有經驗的開發人員有用。在此早期階段,學生無需學習如何整合和配置工具.

在20多歲的初期,我想學習彈鋼琴。我不想要老師,以為自己可以學習。 5年後,我諮詢了一名專業導師。好吧,我能說什麼?我在1個月內比在過去5年中學到了更多.

我的鋼琴老師指出了我聽不到的演奏中的錯誤,並使我意識到了我從未想過的解釋性內容。畢竟,她向我灌輸了**和藝術的思維方式,這對我作為技術人員來說都是遙不可及的.在程式設計中是相同的。如果沒有程式設計經驗,那麼自學是個壞主意。儘管有很多成功的故事,但我對單獨執行的效率表示懷疑.

取而代之的是應該有乙個「導師與學徒」的關係。剛開始時,**盲目地規定了學徒必須遵循的規則!導師可能會解釋規則,但通常情況下,原因是學徒無法理解的.

這些內部化的規則形成了一種安全網。如果迷路了,總會有一些安全的理由可以返回.

教學不應該是獨白。導師必須單獨對待每個學生。他應檢查學生的工作方式,提供建議並根據學徒的課程進度調整課程速度.

一旦學徒達到一定的掌握水平,應鼓勵他們探索新的領域。導師演變為共享「智慧型」的導師,並公開討論.

「讓我們建立乙個facebook副本」這並不是來自一群由高階軟體開發人員和數百萬歐元預算支援的首席執行官。這是程式設計師入門課程的練習。這樣的承諾是不可能的。更糟糕的是,學生被放進了仙境,以為他們相信自己擁有真正超出自己能力的技能。

毫無疑問,老師知道這一點,但是出於動機的原因而進行此類練習。

練習的主要目的不是娛樂。它應圍繞特定技術建立,並應幫助學生理解該技術。

動機是好的,但不能犧牲內容。程式設計並不容易。如果學生沒有內在動力,那麼編碼可能就不可行了。

初學者應該體驗成為專業開發人員的意義。他們應該花很多時間才能知道他們在等什麼.

例如,許多業務應用程式都圍繞複雜的表單和網格。創造這些是練習可以傳授的重要技能。與facebook&co.類似的應用程式可能不是學生學習的最佳課程。

同樣,非程式設計師可能會對開發人員每天編寫的**行數感到驚訝。甚至有時候我們刪除**或一無所獲.

為什麼?因為事情總是出錯。我們花了無盡的時間來修復一些極其奇怪的錯誤,這些錯誤原來是乙個簡單的錯字。 某些工具可能僅由於庫進行了次要版本公升級而無法使用.有的系統崩潰,因為有人忘記了向git新增檔案。等等.

學生應該享受這些經歷。在時間壓力下針對未知庫的練習可能是正確的選擇.

在現實生活中,太陽並不總是照耀著。初學者應該為程式設計的實際情況做好充分的準備.

最重要的是:乙個人不能在2周,2個月甚至一年內成為一名專業程式設計師。這需要時間和耐心.

培訓老師不應著急或做出虛假的承諾。他們應該關注學生是否理解概念,而不要太快。

Python學習 物件導向的三大支柱

隱藏複雜的實現細節,暴露簡單的呼叫介面 從已有類的基礎上,建立新類的過程,提供繼承資訊的稱為父類 超類 基類 得到繼承資訊的類稱為子類 1.在建立類時,通過指定metaclass abcmeta,乙個類宣告為抽象類 2.所謂的抽象類,就是不能建立物件的類,它存在的價值是留給它的子類去繼承 3.經驗 ...

雲計算的三大支柱

如今,雲計算已經成為it歷史上最熱門的流行語之一。然而,雲計算經常被誤解或歪曲。雲計算不僅僅是乙個it基礎架構解決方案。更是一種想法,一種思維方式。在許多方面,雲計算運營模式的概念類似於信用卡。你只要刷雲信用卡,就可以立即購買乙個虛擬的it基礎設施。就這麼簡單。由於具有敏捷,有彈性,隨收隨付的特點,...

什麼是Scrum的三大支柱?

scrum使用經驗方法 或有時稱為經驗主義 以適應客戶不斷變化的需求。經驗主義是根據實際經歷的內容做出決策的行為。經驗方法意味著以事實為基礎,以經驗為基礎,以證據為基礎的方式開展工作,特別是,進展是基於對現實的觀察,而不是基於大量前期要求的虛構計畫。簡而言之,我們可以學習和改進過去的錯誤和經驗。sc...