最近經常有親戚朋友甚至陌生人問我,軟體工程師的工作是什麼樣子的。在這一行,我們有很高的聲譽,薪資高,工作中的樂趣很多——至少外人是這麼想的。雖然這一行的薪水沒有電影明星那麼高(一些人甚至也將我們看做明星),但是因為不錯的收入和聲譽,依然很吸引人。
在我的學生生涯中,我們班的退學率是最高的,其中的主要原因是對軟體工程師這項工作的誤解。一些人退學是因為他們只想玩,不喜歡學習,無論選擇什麼專業都會退學;另一些則認為他們將來會整天地玩電腦。當然,我們的工作確實是“玩”電腦,只是比打遊戲多費一些腦細胞。
親戚朋友們經常問我:你到底在做什麼呢?接下來經常是這個問題:哇,真了不起,怎麼才能成為一個工程師?第一個問題的答案,取決於跟我說話的人。如果跟毫無技術背景的人談,我就不會用像“累加”,“C#”,“Azure”這樣的術語,我會用他們懂的東西解釋。一般會使用一種通用的語言,無論是工作還是外部專案都用的。
那麼,你的工作究竟是什麼呢?我幫助顧客解決問題,通過開發軟體,來提高他們的工作效率和營業額。通常,我要幫他們實現需求。
這是一個寬泛的答案,幾乎可以來描述所有工作。但接下來的問題可以作很好的解釋。人們經常使用手機的應用程式,所以談論起手機應用來輕鬆地多。所以我就會跟朋友們說我在幫顧客寫網頁或者應用程式,解決他們的商業問題,讓生活更便捷。
這個話題就到此為止了,如果繼續討論下去,有關“建網站”和“寫應用”就要說遠了。但是偶爾會遇到一些感興趣的人會接著問:網頁不就是一些文字和數值嗎?做起來很難嗎?當你試圖給出一個例子解釋的時候,基本上最後都會以好吧,我不知道 而告終。
我有很多科技通朋友,所以經常會被問到:我想學習程式設計,應該從哪裡開始呢?
這是一個有趣的問題,但是又難以回答。當然,我可以甩給他們一本關於 .NET 程式設計的書,但是這樣做真的好嗎?對於初學者,推薦我偏愛的程式語言合適嗎?可能不會。不要忘了他們問這個問題的真正的目標。他們是想了解計算機以及軟體執行的原理嗎?還是寫一些小程式來惡作劇?是要解決他們的問題,還是想來搶你的飯碗?
當我聽到這個問題的第一反應,就是弄清楚他們為什麼想學程式設計。這是一個很好地起點——弄清楚從中想要得到什麼。我們可以根據他們的目的來回答這個問題。
當你發現自己在重複地做同一件事情的時候,就可以考慮自己寫一個軟體來完成這些事。
如果你有一個真實世界的問題待解決,或者有一個明確的目標,那麼給你行動的建議就很簡單了。寫程式碼和學習程式碼不僅僅是重複,而且要花上很多的時間,這是事實,要牢記於心。事實上,當你學著寫出你的第一個程式的時候,寫第二個就簡單多了,逐漸變得熟練,越寫越快。
我想學習程式設計,應該從哪裡開始呢?
簡單地建議是鼓勵他們嘗試解決一個真實世界的問題,但這仍然沒有告訴他們如何開始。首先,我要給他們推薦順手的工具。說到工具,就不得不提語言或者參考書,對於初學者來說,不能太高階,最好是簡單幾步就能執行一個 hello world 程式。如果不能很快看到自己的成果,他們就可能會放棄。程式設計不只是我們所寫的程式碼,還有其他相關的東西。
我想讓他們儘快的看見自己的成果,即使只是寫了一行程式碼也沒有關係,他們也會為此感到自豪。這麼快看到自己的成果,他們就會有興趣進行更深層次的探索,並準備好學習一門真正的程式語言,可能是C#,Java,Python 或者其他的語言。早期你要教他們思維過程:if……this 我這樣做,else 就這樣,等等。
近幾年興起了教孩子程式設計的熱潮,讓有一些人問我如何學習程式設計的時候,我會告訴他們:像一個天真的孩子那樣去學習。我們是如何教小孩子程式設計的呢?Code.org 是一個很好的資源,通過教你把瀏覽器裡的程式碼塊拼裝在一起來教程式設計,使你能夠很快看到自己的成果。甚至可以通過這個寫出自己的 Flappy Bird。雖然這些課程不能解決你重複的工作,也不能解決你的業務需求。但是卻給了你一個對程式設計的很好的印象。告訴你如何將程式碼組織在一起,如果將兩個重要的程式碼塊接在一起需要注意什麼。
我想學習程式設計,應該從哪裡開始呢?對於這個問題,沒有同意的答案。根據你學習的熱情和進度,可以給予一些指導。有數以萬計的資料可以供你利用,在 Code.org 上做一些東西只是第一步,還有很長的路要走。如果你準備好了繼續前行,首先應該有一本介紹程式設計基礎的書。
真的嗎?我已經準備好了學習程式設計,給我那些資源吧!
很多人想要別人拿勺子來一口一口地餵給自己知識,這是不現實的,程式設計要花很多時間,不斷練習。你將會在錯誤中得到進步,並收穫很多“哇,太棒了!”的時刻。如果你真的想要給你的電腦寫一個軟體,也有很多給初學者的好書供參考。即使最後沒有完成你自己的軟體,這些物價的知識也會讓你受益匪淺。
我初學 Java 的時候看過一本Head First Java,對初學者來說是不錯的一本書。很多人以前從沒有寫過什麼程式,這本書中的介紹給了他們很大幫助。Help First是涵蓋程式語言和技術的一系列書籍。想要走最少的彎路開始你的第一個 hello world 程式,我推薦 Head First Python。
不喜歡讀書?推薦你看一下這個視訊:Pluralsight’s Programming for Kids video.
如果你有孩子,和他們一起學習程式設計將使你們雙方受益。孩子們有極高的興趣和有趣的問題,可以拓寬你的思維。這也是和孩子們相處的一個好機會!坦白的說,我一直期待教我的孩子程式設計。
讀一本書,再花些時間在 Code.org 上玩一玩,看一些 Pluralsight 上看的視訊。這之後,你就會感覺你已經有了進步,想要更多的知識。如果你真的想學的更多的話,建議你去大學聽一些課,或者上夜校學程式設計。為以後寫真正的軟體積累一些知識。
下面,是我為想要學習程式設計,又沒有經驗的人列的一些連結資源:
- Code.org
- Code Academy
- Code School
- Pluralsight’s Programming for Kids
- Head First Books
- Khan Academy
- Hour of Code
最後的建議,想象一下買一個小小的硬體,安裝在你的車庫裡,當你的車開的離牆太近的時候,它就會發出訊號——Arduino 可以將它變成現實。可能性是無限的,只要你抓住你腦子裡出現的新奇的想法,不斷體驗到程式設計的樂趣。
如果你和朋友或親戚討論這個問題的時間和這篇文章這樣長,他們一定會滿意地離開,並期待寫出自己的第一個程式。
你會怎麼回答這個問題呢? ——如果我想學習程式設計,應該從哪裡開始?
英文原文:I want to learn programming,where do i start?
本文轉載自: www.laixintao.com