每個人剛開始的編程技術都不理想,所以我們決定列出一張清單,寫上大家都能接受的理由,還有提高編程能力的建議。 0. 編程適合所有人嗎? 開門見山地說,編程并不適合所有人。它比較適合那些有耐心去解決難題,改變生活的人。 我們就以一個16歲的孩子克里斯蒂安·歐文斯(Christian Owens)為例子吧,他追隨他的英雄史蒂夫·喬布斯,從事自己喜歡的工作。他從7歲開始接觸計算機。3年后,他獲得一臺Mac電腦,隨后開始自學網頁設計。2008年,他建立了自己的公司。 這是一個不少人都知道的小網站Mac Bundle Box。該網站符合蘋果的設計指南和風格,在兩年的時間中賺到了人生的第一個100萬美元。 他成功的唯一要素,就在于他做什么事都有耐心。所以,如果你發覺自己缺乏某些激勵因素,或許那就是你無法取得成功的原因了。我繼續研究并最終發現,金錢推動著很多人勇攀高峰。 克里斯蒂安·歐文斯 像其他東西一樣,編程本身就是一門藝術。是的,你最初可能會遇到麻煩,但是如果你堅持下去,你的編程技術將會得到提高,你會成為一個干勁十足的程序員。很多人被書呆子、白癡、天才兒童,甚至是編程本身嚇到了。不用害怕,無視他們,把精力集中在于你的技術有關的事情上面。我在大學剛開始學習計算機時并不是很了解編程;在我認識編程之前,我是一名敢于提出問題并面對挑戰的程序員。 2. 他們的觀點錯誤 當人們開始抱怨不懂得傳授技術的專家、助教、蹩腳的編譯器、集成開發環境,甚至操作系統的時候,我已經習以為常了。只要你不斷的抱怨,你的編程技術只會原地踏步。所以,請用積極的態度面對問題吧。 你知道“夢幻游樂園”游戲幾乎都是用匯編語言寫程序嗎?想想看吧。有志者,事竟成。 3. 我一點都不理解抽象概念 編程需要你創造性思考(think outside the box)。當你是初學者時,你會遇到算法、數據結構、協議,還有一大堆讓你摸不著頭腦的東西。 慢慢來,無論開始學習什么,都要從點滴做起。如果你不了解維基百科,Google一下,或者問那些知道的人(順便提一下,這是我學習新事物的秘方)。試著弄懂一些例子,直到你完全理解。 如果你連基礎知識都不知道,你又怎么能弄懂更高深的問題呢? 4. 等等,我們可以借助Google 當你在調試代碼時遇到困難,或者不知道如何解決某些問題時,Google是你最好的朋友。由于代碼抄襲的原因,我并不鼓勵借助Google去解決問題。如今我支持這種做法,是因為有很多人也許碰到過相似的問題。你猜怎么著!其他人在Google上面幫助他們解決問題,并提供解決方案。 就這么做吧。每個人都這樣,因為這是最明智的辦法。 所以,如果你忘記怎么去生成一個隨機數,你不理解一個程序錯誤,或者你只不過是解決不了某些問題,那就Google一下吧。如果你想更進一步了解如何掌握搜索技巧,請參見國外開發人員 Andriy Solovey 在他的博文《如何使用搜索技巧來成為一名高效的程序員》。 5. 認真的規劃和設計?對,需要未雨綢繆。 在我幫助他們編程之前,我會先看看他們的算法。如果他們無法提供的話,我會讓他們先把算法寫出來,然后他們就會知道為什么他們的程序不能運行了。 所有的算法都是一個框架,是一個程序的根基。很多初學者都不去設計算法,只是根據他們的想法去編程。當問題發生的時候,他們就迷失了解決問題的方向,程序變得難以調試。 所以下次,省下你自己的時間,把編程的規劃寫在紙上。直到你知道如何去解決問題之后才動手編程。我是這樣做的,這個方法非常奏效。 你不希望你的程序看起來像個蹩腳的家伙吧。所以你在編程之前得好好地規劃一下算法,未雨綢繆。這也是成為一名優秀程序員所需要知道的15件事之一。 6. 我的程序有一大堆錯誤!我該怎么辦?? 冷靜下來,放松點。錯誤是難免的,而且出現的頻率比你想象的還要多。錯誤發生的時候,往往伴隨著有行數、簡單的說明,有時候還有一條建議。返回去盡力弄明白哪里出錯了。如果還弄不明白,那就把出錯信息拷貝復制粘貼到Google中。大多數時候都能找到相應解決方案。 另外我們可以試試以簡短片段的方式編碼和頻繁地編譯。這個方法可以保證你不用關注所有你不理解的錯誤提示信息,并且將提高你的編程速度。 7. 我不理解編程語言、語法、或者編程環境 好吧,如果你不理解這些東西,那確實是一個大問題。在我的高級設計培訓班,我們正在用Ogre3D語言設計一個視頻游戲。我跟你說吧,這不是最好的經歷,因為我們從課程一開始我們一直在編程,從來就沒有很好地認識編譯環境。我們終止開始了8周的項目,不得不花費兩個星期,平均每天8小時的時間去做這件事。最后幾天我們花了超過14個小時的時間,同時上了3-4節其他課程…… 這段經歷教導我們在開始編程之前,要預先花時間去真正理解與編程語言相關的所有細節,語法、概念和編譯環境有關的所有東西。這樣做,節省的不僅是小時數,而且是天數。 8. 但這個問題好難! 看看我是如何解決這些難題的!! 你有程序算法嗎?這是你的第一個問題。如果你還沒有解決,那就休息一下吧。人們在離開電腦時,往往會想出怎樣去解決問題。我試過很多次在睡夢中制定出問題的解決方案。很多時候一個程序員需要的全部東西,只是一些新鮮的空氣,甚至一種娛樂而已。這能讓你的思維煥然一新,可能會讓你看到之前你所看不到的東西。 甚至有時候,解決問題的最好辦法需要一個優雅的環境。所以下次你在嘗試為一個IPhone游戲提供費解的主意時,試試Doodle Jump這款游戲吧。你所需要做的只是跳躍運動,別人會設法賣出五百萬張這款游戲光盤。 9. 我在等我的朋友來解決這個問題 為什么一些人編程不怎么樣,這也許是上面所提到的之外的頭號原因了。如果你所做的就是等你的伙伴來幫你解決問題,那么你將學不到任何東西。很明確的說,他們花了時間去試著解決問題,不過最終,經驗才是解決問題的關鍵。 所以停止去依賴別人,以及學習如何獨立做事。如果你無法這樣做,或許就是你為什么不能成為一個大人物的原因了。(也許你有幸成為像Mark Zuckerberg那樣的人)。 感謝Tony、Jay、 Chris、 William、Miguel、 Al、 Roby、Joseph、 Felicia、Benjamin、Jesse、 Pierre和Erick給出的建議。 |