如何在兩個月內快速教會女朋友編程

如何在兩個月內快速教會女朋友編程

做者: Song Zheng  來源: 譯言網  發佈時間: 2013-06-25 22:49  閱讀: 332 次  推薦: 0   原文連接   [收藏]  

  英文原文:How my sister n my girlfriend learned to code前端

  就像我前面日誌裏提到的,伊娃和芳來舊金山跟我學編程。在這篇博客中,我會介紹我是怎麼教她們的,我構建教她們的方式的理由,以及這種方法是怎麼起做用的。按時間順序去列明她們所學到、作到的那些事兒很簡單,可是,這沒什麼幫助,並且你也容易錯太重點。重要的是要了解詳情,以及爲何它管用,因此我將從基本原則來開始。作好準備,文章比較長。程序員

  在你的整個編程歷程中,如下原則要緊緊記住:web

  1)傳播:數據庫

  在伊娃和方開始以前,我爲她們建立了個博客。我告訴她們,記錄下她們的編程之旅和她們所學到的。在開始的時候是很難的,你能夠問她們。我花了一個星期的嘮叨,她們才寫一次博客。但如今,若是不寫寫她們花了大把時間去作的那些項目,則像是錯的了。編程

  若是你在你的項目裏用的是API(應用程序編程接口),發微博或者郵件給那公司,告訴他們你對他們的API的想法。當你在你的編程馬拉松裏得到了一個獎勵,寫條好微博@他們以示感謝,或者發篇日誌。讓這日誌空前美好,而後推薦到黑客新聞欄目,就像它必將登上首頁同樣(儘管大多數是不會的)。數組

  給你的編程之旅一個健康的傳播過程的最大好處是,它讓你對你的項目負責任,這也就引入了個人下一條原則。前端框架

  2)完成:網絡

  芳和伊娃都知道,完成一個項目是很難的,但也是很重要的。我說得很清楚,除非她們寫一篇日誌,在twitter上@那API公司,或是在黑客新聞版上發這項目完成的消息,咱們都不會啓動一個新的項目。儘管第一個項目只是一個井字棋遊戲,但這是她們作得最好的井字棋遊戲。你歷來都不想寫一個蹩腳的程序,因此多麼簡單的或不相干都不重要。若是你要寫一個項目,那它必須是你能寫出的最好的程序。我已經見過太多的程序員在一些看不到黎明的非正式項目上費時耗力。若是你正在學習編程,你必須從一開始就學習,珍惜你的時間和精力,完成您的項目來證實它。數據結構

  最後的20%須要80%的努力。開發人員能夠一兩天就能把「點子」變成具體可執行的。而要發佈一個「完美」的產品,須要兩倍的時間來完成每一種狀況下的測試,解決每一種臨界問題。把80%的精力都花你項目最後的20%,這將在許多許多訪問中成就傳奇。框架

  3)思考:

  若是你被卡住了,請不要直視你的代碼。出去散散步,呼吸一下新鮮空氣,並考慮一下吧。你被卡住了,是由於你的邏輯出了錯,而解決的最佳辦法就是在腦海或者紙上一步一步地理清楚。程序員得到高額的酬勞是由於他們在思考。問題解決是依靠你的思考,編寫代碼就是這麼可惡的工做。優秀的項目經理一般有一個豐厚的程序背景,而且在思考和解決問題方面訓練有素。

  根據這種說法,若是你被卡住了20多分鐘,並且你也沒法突破,那就問別人吧。若是你20分鐘都沒有獲得任何線索,那麼接下來的一個小時你不會有更多進展。信託伊娃。她有一天浪費了5個小時,就由於一個愚蠢的錯誤,實打實的教訓啊。散個步,去幹點兒別的事兒。而後再回來搞它。可以脫離出本身的問題,轉移注意力是一個技巧。

  4)再思考:

  如今你可能想通了,思考在一個程序員的生活裏地位重要。請必定不要——特別是若是你正在學習如何寫代碼時——複製粘貼代碼。若是你想學習如何怎麼寫代碼,複製粘貼—— 「你看,它成了!」——不會讓你有任何突破的。相反,當你看到代碼,你必須理解了它在作什麼,再去嘗試調試它。當你愈來愈能得心應手理解別人的代碼時,把它簡化到剛好知足你的須要,而後再寫出來。若是你從初學階段就習慣這麼作,在幾個月裏你就能夠成爲一個非凡的開發者。

  5)谷歌:

  學習如何本身解決問題。除非你被卡住了至少20分鐘,不要詢問編寫代碼的問題。程序員必須獨立。他們是偉大的思想者和偉大的傳播者。要成爲其中一員,你必須有邏輯地思考,並找出問題發生的緣由。不少年輕的開發人員所面臨的一個問題是,他們很難寫出他們真正須要的東西。咱們不少人都經歷過這個過程,你知道問題是什麼,可是你不知道怎麼去找到它。你必須從初學階段就學會正確地開發程序,這是個技巧,它很好地回扣了第一點裏說的傳播。

  如今,記住了這5個點,來看看伊娃和方學習的時間表:

  第1-3天:經過Ruby學習編程的基礎知識。

  我選擇了Ruby,由於用來上手編程它是最簡便的。Ruby的語法限制不多(空格與製表符,類型聲明等),所以伊娃和方可以專一於編程的思想過程,而不是去攻克語法規則。她們學會了if語句,循環,數據結構,並解決一些編程題目,如FizzBuzz(譯者注:當知足必定的條件時打印Fizz或者Buzz或者FizzBuzz,是初級編程訓練題目),替換字符串中的字符,轉換一個數組,找出最大值。重要的是要了解類和對象。

  *注意*我不教她們Ruby的特定語法。我告訴她們對參數要始終使用括號,並且每一個函數結束時必定記得返回。這樣一來,當她們學習其餘語言時,上手更快。

  第4天:HTML

  HTML和CSS嚴格說都不算一種語言,因此沒有必要花太多的時間在這上邊。伊娃和芳花了一天時間在HTML上,而且玩了一些標籤,還研究了表單、信息頁,等。我確信,她們用HTML標籤。這將創建起用CSS的興奮。在這裏須要重點學習的是區分塊HTML與內聯HTML,區分標識與分類。

  第5天:CSS

  在玩了HTML後,「你怎麼把這個放那兒,你怎樣讓這個醜陋的HTML頁面更漂亮?」的問題來了。CSS是一個完美的答案。今天就開心地讓你的網頁更有型吧(全部的HTML頁面都是前一天作的)。這裏學習的重點是相對/絕對/固定定位,HTML元素流,絕對和固定定位如何控制元素,以及正常的浮動。

  第6-7天:用jQuery來作JavaScript

  jQuery須要一點點努力來習慣,由於有的程序涉及到jQuery的框架,這須要一點兒時間。花了幾天時間,讓她們的HTML頁面有交互性。

  第8-15天:第一個項目——井字棋遊戲

  在這一點上,芳和伊娃瞭解了HTML/ CSS/ Javascript,但尚未很好地適應之。這是啓動她們第一個項目(井字棋遊戲)的最佳時間。儘管她們在2天內完成了這個項目,優化它又花了好幾天。最後的20%須要80%的努力,這是事實。做爲初學者來講,重要的是學習來完成你的項目。

  第16-20天:Sinatra

  在那個像是歷來不能完結的井字棋遊戲以後,學新的東西對芳和伊娃來講不能更激動人心了。學習服務終端代碼對於她們一直在作的事兒來講是全新的體驗。我選擇sinatra由於它是我所用過的最乾淨、簡單的web框架語言了,而這種簡潔性讓解釋web的運做變成小菜一碟。

  第20-22天:Photoshop

  Photoshop對於絕妙的設計很是重要。對那些歷來沒有用過它的人來講,它足夠唬人(至少一度對我是的),可是藉助Photoshop創立的網站,比起那些傳統的前端框架網站要高一個檔次的。並且事實上你只用知道混合選項就夠了。任何一個至關成功的開發者都會須要Photoshop,因此學會用它很重要,而且要用它服務你全部的項目。

  第20-27天:第二個項目—— 「拖圖片」

  項目大量涉及JavaScript的運用。該項目涉及使用Ajax請求,Facebook的API,和Cookies。這是一項聯結其全部web編程基礎的大工程。這個項目涉及的範圍大於第一個項目,我以爲這是向更復雜項目邁進的一大步。在此期間,他們經過GIT合做。這是一個開源項目!

  第28-30天:RSpec

  至此,芳和伊娃已經適應了構建Web應用程序。也是到這個關頭,她們已經意識到代碼多麼容易打破,而一個改變又如何摧毀一切。如今,測試驅動開發適時引入。咱們在RSpec上花了幾天時間,伊娃和芳用寫測試案例當天天早上的編程練習。我有沒有提到她們天天早上都要解決一項技術問題?從第28天開始,她們不得不在她們開始寫代碼也寫些RSpec。

  第30-35天:BackboneJS

  着手與一個涉及較普遍的項目(好比「拖圖片」),你能夠學到不少東西,而且遇到一些你但願有更好解決辦法的問題。只有這樣,你才真正欣賞那些幫助過你的的框架的意義。我尚未找到很好的BackboneJS的教程,全部教程都一會兒提供了多的信息。我是這麼教的:

  首先,瞭解模型。建立一個模型,並且僅供一條數據庫條目所用。學習如何修改它,將它保存。

  其次,學習視圖。爲你以前一直在作的那個模型建立一個視圖。添加事件偵聽器,領會視圖如何如此貼切地綁定模型,以及這一切又是如何彼此貼合。

  第三,如今就能夠說清楚集合的意義了。你不能手動鍵入每個的模型,特別是若是你不知道有多少模型時。

  咱們歷來沒有學路由的課程。我還不以爲路由重要。

  第35-40天:Android

  若是你尚未徹底注意到沒有,咱們已經在很短的時間裏涵蓋了不少東西。好程序員須要時刻適應變化,因此咱們的最後一個項目是學習Android。在編程中,你不能忽視移動終端,它過重要了。我教了她們Android編程。這不是很辛苦,Android編程和web編程是很是類似的。你有了視圖的XML(可擴展標記語言),你就有了能夠與網絡控制器匹敵的Java代碼。模型-視圖-控制!經過使用Ruby和JavaScript,芳和伊娃開始尋找編程語言的類似之處,讓她們與特定語言脫離關係。對她們來講,編程語言有不一樣的語法和相同的工做方式(並不是事實,但咱們會稍晚些區別,以免混淆)。

相關文章
相關標籤/搜索