我姐和我女友這樣學編程:堅守五個原則

來源:互聯網
上載者:User

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

  在你的整個編程曆程中,以下原則要牢牢記住:

  1)傳播:

  在伊娃和方開始之前,我為她們建立了個部落格。我告訴她們,記錄下她們的編程之旅和她們所學到的。在開始的時候是很難的,你可以問她們。我花了一個星期的嘮叨,她們才寫一次部落格。但現在,如果不寫寫她們花了大把時間去做的那些項目,則像是錯的了。

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

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

  2)完成:

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

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

  3)思考:

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

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

  4)再思考:

  現在你可能想通了,思考在一個程式員的生活裡地位重要。請一定不要——特別是如果你正在學習如何寫代碼時——複製粘貼代碼。如果你想學習如何怎麼寫代碼,複製粘貼—— “你看,它成了!”——不會讓你有任何突破的。相反,當你看到代碼,你必須理解了它在做什麼,再去嘗試調試它。當你越來越能駕輕就熟理解別人的代碼時,把它簡化到恰好滿足你的需要,然後再寫出來。如果你從初學階段就習慣這麼做,在幾個月裡你就可以成為一個非凡的開發人員。

  5)Google:

  學習如何自己解決問題。除非你被卡住了至少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(可延伸標記語言 (XML)),你就有了可以與網路控制卡匹敵的Java代碼。模型-視圖-控制!通過使用Ruby和JavaScript,芳和伊娃開始尋找程式設計語言的相似之處,讓她們與特定語言脫離關係。對她們來說,程式設計語言有不同的文法和相同的工作方式(並非事實,但我們會稍晚些區別,以避免混淆)。

  結論:

  1)女孩在編程方面天賦驚人

  2)沒有電腦科學的學位也不是借口。

  3)寫代碼很有趣,每個人都能學會。勇往直前吧!

  如果您想知道

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.