日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
編程初學者必須建造的幾根“支柱”

  英文原文:The main pillars of learning programming?—?and why beginners should master them.

成都創(chuàng)新互聯公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網站設計制作、網站建設、企業(yè)官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的山南網站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!

  編者按:隨著眾多傳統(tǒng)工作面臨失業(yè)風險,編程成為 21 世紀必備的技能。網上有許多編程的資料,也有各種各樣的培訓班,但是很多都沒有抓住編程的重點方面,其教菜鳥的辦法很糟糕。為此,有 20 多年編程經驗的 Rainer Hahnekamp 總結了新手學習編程的 5 大支柱,希望初學者能夠從中掌握到學習的方法。

  我編程都已經超過 20 年了。在這段時間內,很高興能跟很多人一起工作,我從他們身上學到了很多。同時我也接觸了很多的學生,他們都是剛剛大學畢業(yè)的新人,這時候我就得擔負起老師或者導師的角色。

  最近,我作為培訓師參與到一項教完全的初學者學編程的計劃當中。

  學習如何編程是很難的。我經常發(fā)現大學課程和新手訓練營沒有抓住編程的重點方面,其教菜鳥的辦法很糟糕。

  為此,我愿將我所認為的一門成功的編程課程必備的 5 大支柱分享給大家。一如以往地,我會將介紹放在主流 web 應用的背景下。

  菜鳥的目標是掌握編程的基礎并且理解庫和框架的重要性。

  像云、一般運營或者開發(fā)工具這樣的高級主題不應該成為課程的一部分。說到設計模式我也持懷疑態(tài)度。這需要的經驗是初學者所不具備的。

  那么我們就來看看程序員新手應該從何開始。

  測試驅動開發(fā)(TDD)

  TDD 帶來了很多好處。不幸的是,這是一個高級主題,初學者恐怕還沒有完全準備好。

  初學者不應該寫測試。對于他們的基礎技能水平來說這要求太高了。相反,他們應該學習如何使用測試以及配合測試。

  每一門編程課程都應該以練習為核心。我把練習拓展到單元測試,給學生一個已經為運行那些測試做好設置的環(huán)境。

  學生需要做的就只是寫他們的代碼然后看著 testrunner 的燈從紅色變成綠色。結果的游戲化是一個很好的副效應。

  比方說:如果選定技術是 Spring,我在一個 Spring 項目內會提供練習和測試。學生不需要知道 Spring 的任何事情。他們所需要做的就是知道練習和觸發(fā)測試的按鈕在什么位置。

  此外,學生必須知道如何使用調試器并且要有一個讀取﹣求值﹣輸出循環(huán)(REPL)環(huán)境。在運行時分析代碼的能力以及有一個進行小型實驗的場地對于 TDD 要說是必不可少的。

  要點是要確保學生在習得核心變成技能之后不需要學習基本的 TDD 行為。在學生職業(yè)生涯后期改變習慣要比現在學習這些習慣困難得多。這就是為什么他們應該從一開始就感受單元測試的原因。

  在其以后的職業(yè)生涯里,他們應該會對沒有進行單元測試的項目感到厭惡。他們應該本能的將缺少單元測試視為反模式。

  基礎優(yōu)先

  我經常聽說菜鳥應該馬上從框架開始學習。這就好比把人放到賽車上讓對方避免轉向過度一樣教人如何開車。這根本是忽視了他們仍然會把剎車誤認成油門的事實。

  一開始讓學生學 Angular 這樣的框架也是同理。初學者首先需要理解編程的基礎。在使用別人的代碼之前,的他們需要熟悉基本要素以及寫代碼意味著什么。

  函數、變量、條件、循環(huán)這些改變對于新手來說完全就是陌生的。這四個要素構成了編程的基礎。程序構成的一切都要靠它們。

  學生都是第一次聽說這些概念,但是他們最終精通這些概念是極其重要的。如果學生沒掌握這些基礎,后續(xù)的一切看起來就像是魔術一樣,會導致迷惑和沮喪。

  教師應該在這些基礎上花更多的時間。不過,悲哀的是,很多人向前推進得太快了。問題在于很多教師沒能從學生的角度去考慮問題。他們編程有些年頭了,已經忘了初學者必須應對的問題類型是什么了。這相當類似于專業(yè)賽車手。賽車手是無法想象某人剎車前還要想一下的。他的動作都是自動的。

  我設計練習會利用這四種要素的結合,一方面要具有挑戰(zhàn)性,同時在合理的時間范圍內又是可以解決的。

  一個很好的例子是羅馬與阿拉伯數字的轉換。這個挑戰(zhàn)需要學生有耐心。一旦他們成功應用了 4 個要素解決了這個問題,其積極性就會得到很大的促進。

  基礎很重要。在學會基礎之前不要貿然前進。

  庫和框架

  在學生花費了大量時間去編程后,他們必須知道大多數代碼已經以庫或者框架的形式存在了。這與其說是一種模式不如說是一種理念。

  就像我之前寫過那樣:現代開發(fā)者了解并選擇合適的庫。他們不會浪費時間自己去寫一個充滿 bug 的版本。

  要想讓這種理念轉變成功,“基礎階段”的例子應該用 Moment.js、Jackson、Lodash 或者 Apache Commons 等知名的庫來解決。

這樣一來,學生馬上就能理解庫的價值了。之前他們曾經絞盡腦汁去解決這些復雜問題?,F在他們發(fā)現庫一下子就把那些練習給搞定了。

  跟 TDD 類似,學生應該對同時吹噓自己編寫的狀態(tài)管理庫秒殺 Redux 保持懷疑態(tài)度。

  說到框架,一旦理解了庫的用處之后學生理解其重要性就會毫無問題。

  取決于課程的時間長短,專門開辟時間將框架也許會比較困難。但是正如我已經指出那樣,最重要的方面是心態(tài)的轉變——從一切都白手起家自己寫轉到使用庫來實現。

  我沒有給這根支柱添加工具,因為工具只對有經驗的開發(fā)者有用。在現在這個早期階段,學生不需要了解如何集成和配置工具。

  師傅與徒弟

  我 20 出頭的時候曾想學鋼琴。我不想找老師,以為我自己就能學。5 年后,我咨詢了一位專業(yè)家教。怎么說呢。那 1 個月內我學到的東西就比我 5 年時間學到的還要多。

  我的鋼琴老師指出了我在演奏過程中出現的錯誤,那些是我自己聽不到的,這讓我意識到一些我從未想象過的東西。畢竟,她給我灌輸了音樂和藝術的理念,這些都不是我這個搞技術的人能了解的。

  編程也一樣。如果某人對編程毫無經驗,則自學就是個糟糕想法。盡管有很多成功故事,但我質疑其效率。

  相反,應該有一種“師徒”關系。一開始時,師傅給出規(guī)則讓徒弟遵守——盲從!師傅可能會解釋一下規(guī)則,但通常推理會超出徒弟的理解范圍。

這些內化的規(guī)則會形成一道安全網。如果一個人迷路了,能保證有一些安全地帶可以返回。

  教學不應該是獨白。師傅必須因材施教。應該看看學生是怎么做的,然后給出建議,根據他們的進展情況調整課程速度。

  挑戰(zhàn)與激勵

  “我們來做個 Facebook 克隆版吧!”這話不是出自有一群資深開發(fā)者和數百萬歐元預算撐腰的 CEO。而是來自一門針對程序員的介紹性課程的練習。這樣一項任務幾乎是不可能的。甚至更糟的是,學生被放到仙境里面被哄騙以為自己有做超出自身能力的技能。

  教師無疑是意識到這點的,但出于激勵的原因還是設立這樣的練習。

  練習的主要目標不是娛樂。練習應該圍繞著特定技術設立,同時應該幫助學生理解那項技術。

  激勵是好的,但不要犧牲掉內容:編程不易。如果學生缺乏內在動機,編碼這條路也許不合適。

  新手應該體會到成為職業(yè)開發(fā)者意味著什么。在投入大量時間之前他們應該知道等待他們的是什么。

  比方說,很多商業(yè)應用圍繞著復雜表格進行處理。創(chuàng)建表格是練習可以賦予的一項重要技能。開發(fā)類似 Facebook 那樣的應用也許不是學生馬上就能學習的最佳課程。

  類似地,非程序員可能會對開發(fā)者每天寫的代碼行數至少感到驚訝。甚至有時候我們還刪除代碼或者一事無成。

  為什么?因為總有狀況發(fā)生。我們花費了無數時間去修復一些極其怪異的 bug,結果最后發(fā)現只是拼寫錯誤而已。一些工具工作不了可能僅僅因為一個庫進行了小型的版本升級?;蛘咭驗槟橙送洶岩粋€文件添加到 git 而系統(tǒng)崩潰。這樣的事情可以一直列下去。

  學生應該享受這些練習。在時間壓力下面向一個未知庫的練習未必合適。

  現實生活中不是每天都充滿陽光。初學者應該對編程的現實做好充分準備。

  最后建議

  最后但并非最不重要的一點:一個人無法在 2 周、2 月或甚至 2 年之內成為職業(yè)程序員。這需要時間和耐心。

  培訓師不應該趕時間或者做出虛假承諾。他們應該聚焦在學生是否理解了概念上面,而不是趕得太快。


標題名稱:編程初學者必須建造的幾根“支柱”
地址分享:http://www.5511xx.com/article/cdgcsoc.html