標籤:

26 歲開始學編程晚了嗎?

相關問題:30 歲才開始學習編程靠譜嗎?


看這問題看得我心痒痒。存了四天,決心快下班兒這會答了。

先旁敲側擊:

紐約時報上前些時間有一篇文章,題為《年齡只是一種心理作用嗎?》,大意說的是一個心理學實驗:把一群六七十歲的老年人接到一個療養所,並且製造出60年代的場景,老人們返老還童了。

比如說,每天都有人給老人們送來1960年的報紙(真的是那時候的報紙的內容),用「先生」和「小姐」稱呼他們,但是並不會把他們當作老人看——有行李?好的先生,請跟我走(我不會幫你拿的)。

神奇的是,經過一段時間,老人們的各項生理指標都提升了,比如說,力量指標,記憶指標等等。

《思考快與慢》里也有一些例子,接受prime (我就譯為「暗示」吧)的人,會超著被暗示的方向反應。給一些非裔學生數學題做,題目一模一樣,對於A組的學生,實驗者暗示他們:亞裔更擅長數學題,別費勁兒了。對於B組的學生,他們被暗示:非裔咋了,咱還不是有馬丁路德金。結果神奇的是,B組的成績大大好於A組。

這些奇妙的實驗給我最大的啟示就是:憑什麼我們需要自己加上一些顯然會抑制自我的壁壘?難道你沒有過這樣的經歷:在台上要演說的時候是不是一心想自己要緊張結果就真緊張了,在便池覺得自己尿不出來就真尿不出來了?看到女神的時候覺得自己要心慌結果就真的心慌了 :)

所以你要自己先覺得晚了,那麼你可能真的會因為"覺得晚"這個念頭,而學得爛的...

再從筆者自己說起:

筆者17.9歲進大學開始編程,說早不早說晚不晚。為啥這不算早?因為學校有一群中學就開始NOI的保送生啊!可是你去問他們,他們也會告訴你,其實吧,他們也晚。為啥?因為清華有一群小學就開始NOI的保送生啊!

恰巧的是,我清楚地記得大一上的時候(對了這裡順便吐槽一下,誰特么安排的大一上C++啊,真是慘無人道)的某個下午,坐在圖書館,拿著這本書就在琢磨:我是不是學得太晚了...這特么都讀不懂啊,但是保送的同學們怎麼這麼輕鬆(人家一直用用了好幾年能不輕鬆嗎)。注意哦樓主,那時候我才18歲。所以這至少說明,你不是一個人,26歲也沒什麼特別,有人18歲就覺得自己晚了,怎麼拼得過人家初中就編程的呀!

事實證明,確實拼不過(別想從我這聽到奮鬥了一個學期我就把其它同學甩後面的雞湯)。大一整一年的C++課都61和62那樣子。

問題在於,你只比較了起點,你沒人比較線段。

想想,他們編程熟練,技法嫻熟,不是因為「他們開始得早」,而是他們「學得已經夠久」。而學得夠久這事兒,跟啥時候開始有任何關係呢?當然有!如果你現在82歲,再學5年,差不多手指再敲敲也該斷了。問題是,同學,你才28啊。而現在看回去,我的水準應該跟當時保送的同學也齊平些了,當年我18歲的時候,編程水準是1,他們是80,因此我的水準是他們的1.25%。但是現在我的水準是80,他們是90,嘿!我就進步成了他們的88%! (下面會解釋為什麼他們的水準增加變慢了)

對於「本應該」早學這個問題,這麼琢磨下去的話,是琢磨不到頭的。

其實話說回來,知識使用的分布不是均勻的。比如說,學英文的話,最好趕緊把用的次數最多的5000個詞背下來,你幾乎可以無障礙跟人交流了。原因很簡單,大多數跟人有關的分布都符合冪律,也就是80/20定律。你把5000個單詞背完,它們在你日常生活中占的比重大約是95%的書面英語。甚至,背完前1000個單詞,它們已經佔了85%的口頭英文。

同樣,學編程也是一個道理。沒有人要求你把後綴樹學到和哈希表一樣深度(前者是非常複雜的數據結構,後者是計算機入門課都會教到的概念),在日常工作中,你能2年遇到一次前者,那你的工作已經可以被考慮為挺有「技術含量」的了。但是後者差不多日常生活都會碰到,如果後者你花了兩天時間熟練到不行,那麼我可以很有自信地說,你已經掌握了5%的計算機知識!兩天時間5%哦!(當然你要換算一下說40天就100%顯然是不可能的,因為最後的0.1%可能會花你1年時間)。

因此,你現在26歲,花上一年兩年時間,先把最常用的基礎抓起來,數據結構,語言,演算法,計算機思想,離散數學等等。這些學到熟練幾乎可以讓你找到份靠譜的工作了。之後在工作中,或者繼續學習的過程中,慢慢接觸那些比較難但是用得比較少的概念。如果真是有興趣,我相信你是可以堅持下去的。然後呢,不就30歲?抬頭紋都還看不出來,急什麼。

恰巧我今年也26歲,這也是為什麼看到這篇文章就有答的衝動的原因,推薦兩篇文章跟你共勉。

一篇是Google Research總監(至少這是我上次聽到他的title)的:十年學會編程。這篇文章教會我耐心和毅力。

最後在貼我的翻譯之前,聲明兩點

1)以上的數字幾乎都是概稱,用舉例用,請勿在數字上糾結,沒有意義

2)版權所有,不允許以任何形式複製粘貼到其它地方

以及Quora上的對一個跟這個問題幾乎一模一樣的問題的回答,作者已經同意了我翻譯過來,我就貼到下面,括弧里加上我的註解。這篇文章有種無畏的闖勁兒(希望直接看英文的朋友點這裡:Is it too late for me to be a programmer if I am already 28 and have no computer science background?)

問題標題:對於28歲的沒有計算機背景的我,現在才學編程算太晚了嗎?

問題介紹:我已經有了一個應用科學的碩士學位,但是我現在意識到我其實很想學習軟體開發,成為一個程序員。我應該重新從本科開始學習計算機科學嗎?

回答正文(作者: Barry Rountree, 亞里桑那大學博士,神經科學):

我今天是來唱紅臉的!

對,沒錯,對你丫來說,就是太遲了!

曾幾何時,你還年輕一些的時候,好像做什麼事之前你從來沒有問過別人:「我到底行不行?」。其實學編程不需要太多背影,可惜的是,它的確需要你不問自己「行不行」。而你現在問了,那麼不好意思,你不行。

琢磨一下,一個ChromeBook大概花你1800塊人民幣。只要你好好搗鼓一下,你可以下載一套足夠好用的軟體(crouton)。你只要可以聯著網,你就可以免費獲取——幾乎所有專業級程序員用的,一模一樣的任何資料,文檔。這些資料文檔解釋了所有東西,比如怎麼用某些工具,以及某些工具怎樣使用才能達到最佳效果(我猜作者這裡指的是編程語言或者IDE)。

其實最難的一件事是,從哪裡開始著手學習。但是注意,雖然你總可以找到更好的途徑,但是其實並沒有多壞的途徑(指的是你得挑一條路子就開始學,不要擔心你挑的路子不是所謂的「正統路子」或者「科班路子」)。你可以自己學,在你自己有空的時間學。另外唯一需要的,只是一個安靜的地方來思考而已。如果你想加快學習進度,跟朋友一起學吧。

但是再回過頭來,你一定不能養成問「我到底行不行」的習慣。如果你覺得學習13歲小孩都已經知道的東西會讓你尷尬的話,那麼你乾脆別開始好了,因為你很快會發現1/3你的年紀的小孩子已經早就掌握了你要學的玩意。(這裡跟我舉的NOI保送生例子類似,想想吧,鋼琴,吉他,數學,哪個東西不是有的小孩12歲就已經成大師級別了,所以你就要退卻了?但是你沒想過,又不是每個人都一定要成為大師才可以。取乎其上不也可以得之其中嗎)

針對你的第二個問題:去大學學習計算機科學不會教你咋編程。請把大學裡學的計算機當成「科學」,而不是藥學學位(大概指的是偏向實用而不少講求科學方法的學位)。計算機學科家琢磨的時編程類型,操作系統,和底層系統之類的細節和理論。而一個程序員琢磨的是她面前的程序,她面前的操作系統,和她面前的計算機(她只要琢磨著怎麼把程序寫出來就好了)。

程序員都是自己教會自己的。試著在你的屏幕上用程序畫分形幾何的圖案(比如下面這樣的)

你要是真自學到了這個程度的話,去拿個計算機的碩士學位吧,到時候你就超過只有學士學位和同等經歷的本科生們了。

我35歲左右才開始念我的PhD(神經科學),然後42歲博士後才出站。直到最近開始讀Quora上的問題我才意識到,原來有的人是會問「要是我現在去做X,是不是太晚太老了呀」。

-完-


別人的例子或許太遙遠,我就「言傳身教」一下吧:

我1982年生,18歲接觸電腦,19歲上大學(念行政管理專業),22歲學會一些基本的 HTML 和 CSS, 24歲學會寫 JavaScript, 27歲學習 Objective-C, 28歲成為 iOS 獨立軟體開發者。而今還在自學計算機的基礎知識。能堅持這麼久的真正原因就是興趣,樂在其中。

想要學會某門技術,還有一點非常重要,那就是實踐機會。我為了參加學校的網頁比賽而學習 HTML 和 CSS, 在三快(飯否)期間有了大量的 JavaScript 實踐機會,加深了對編程的認識,儘管沒有任何 C 和 Objective-C 的基礎,但硬著頭皮給飯否寫就一個很爛的 iOS 客戶端後,基本就入門了 Objective-C.

如果有追求創造事物的快感,我覺得學什麼在什麼年齡都不算晚。


36歲的時候你就是一個有10年經驗的程序員了。


作為一個從初中開始學習編程、大學讀計算機專業、接觸 Objective-C 快五年的程序員,我想推薦 Mike Lee 的故事《我是怎麼成為一名程序員的》:

http://le.mu.rs/motherfucker/Entries/2007/8/18_How_I_Became_a_Programmer.html

Mike 生於 1976 年,長大時身邊沒有電腦,在高中時也沒加入過什麼電腦俱樂部,上大學時學的不是計算機科學,然後做的工作也不是編程,2005 年,在他 29 歲的時候第一次開動 Xcode,兩年後,他和 Wil Shipley、Lucas Newman 一起在 WWDC 捧起 Apple Design Award:因為 Delicious Library 出色的設計與實現。

Mike 說:

I often say that anyone can learn to program, but you have to be born a programmer.

I was born a programmer. The rest is just implementation detail.

我同意這個觀點:任何人都可以學習編程,但要想有出色的成就,你需要天生就喜歡這一行。


我也在學iOS開發和OC語言,我39了。


晚不晚不知道,但是 26 歲學編程並不稀有。

有很多程序員的經歷是這樣的:

大學學了個非計算機理工專業,比如電力或者化工。沒學過編程,或者學過一門《單片機與介面技術》,《PLC 控制器》之類的擦邊課。唯一的編程經驗可能來自於計算機二級證書考試,c 語言,或者 fox pro。也可能壓根就沒有經驗。

大學畢業 23 了,考了個研究生。研一上課,仍然沒有編程課,也保不齊課程作業里有點 fortran 什麼的。研二開始做項目,一部分人要開始接觸代碼了,極大的可能是 matlab,在師兄的代碼里改幾行,搞定。還有一部分根本不用接觸代碼,焊焊板子,過過柱子,畫畫圖紙,或者種點花花草草什麼的……科研生涯就這麼過去了。

到了研三要找工作了,有些對口工作不好找的,嫌對口工作工資低的,不願意干本行的,覺得 it 行業有前景的,這批人就開始琢磨了……有些回想起來,哎呀 if 和 for 是什麼我還是知道的,要不我去試試應聘軟體開發?還有些壓根就完全不會,借本書連夜看看就去應聘了。

這會兒他們已經 25、26 了。

面試官當然知道他們基本不會,但是沒關係,反正校招嘛,招來可以培養,至少學歷漂亮嘛。學歷那麼高,成績也不錯,應該學的會的。再加上人看著也挺機靈,要了吧。

拿到 offer 的應屆生們可能也會猶豫一下,要不要去做呢?有人說程序員北大青鳥出來就能幹啊。書白讀了?但轉念一想,哎呀,好歹一出校門就一兩萬啊……一不做二不休,合同拿來!

其實大部分用人單位未必有什麼培養之道,扔本書給你,找個師傅給你指導幾句,也就這樣。但是工作了嘛,態度就端正了,同事幹活乾的如火如荼,你在這裡看書,是誰心裡也有壓力吧?

一個月以後,他們一般都上手了。

一年以後,他們一般都獨立負責模塊了。

三年以後,他們一般都獨當一面了。

……

所以吧,你肯定不是一個人。更加不是另類,大批的現役程序員,跟你入行的年齡差不多。


大部分的回答像是勵志答案,同樣適用於「我26歲開始學鋼琴晚么?」,可是編程不等於學鋼琴!不會彈鋼琴最多使你生活樂趣少了一種可能,少一點社交資本,但不會對你的生存產生太大影響。但如果不了解編程思想,那未來有可能被降維攻擊。而當我們世界在慢慢被編程思想統治時,缺少它不是一個明智的選擇。

我是教了很多人學編程後,才意識到編程思想的存在。之前我以為編程是項技能,不懂編程的人只是因為不了解這項技能,可以像任何一項其它技能一樣通過123456步來掌握。但當我真的花時間去教一些人編程時發現,這種技能與大部分技能之前的區別已經大到可以稱之為一種思想的程度。就像你要教一個人幾何證明題,大部分人確實寫不出一個通用的123456步。而且如果想舉個現實中的例子,會發現編程思想是一個獨立的思想,沒有這種思維方式的人,正是因為現實中沒有場景訓練過,所以也舉不出合適的例子。

當然了,並不只有學過編程的人才有編程思想。而且如 @Still 所說,語言工作者、藝術家也有自己的思維,這些涉及到存在本質的工作確實有更多的機會去思考「xx思想」一類的工作,歡迎其它行業的人也說說。

列幾條重要的編程思想:

1. 過程思想:

過程思想指一個程序會按順序一條條語句執行的思想。會編程的人覺得:這還用說么。

事實是,大部分人的人生有相當大的隨機性,是事件驅動的,遇到每個情況的時候臨時做決策。即使是經歷過複雜工程的人,如果工程流程本身沒有太多的自由度(如建一個房子),那麼人也很難跳出框架,思考為什麼要這麼做(meta thinking),表現為他們在處理生活問題時的簡單思維。而在寫程序中,每時每刻都在思考這樣的問題。

編程與眾不同的原因在於,現實生活中通常沒有高的自由度和試錯機會,自由度體現在當需要某個值的時候,一行代碼就可以調用,但如果是現實中的一個物理移動,就沒有那麼方便了;當需要分支時,一個 if 就可以,但現實中確不是每個值都可以取到的。試錯體現在,我們可以大段的copy paste,可以運行一下試試,現實生活中呢?總不能先蓋個樓試試吧~~ 類似的事情出現在19世紀初,電機通過電線傳輸能量來驅動導致了流水線的產生(機床的布置不再受能量傳輸的限制)這在機械時代是幾乎無法實現的。

其實現實中有一類工作也具備了高自由度和低試錯成本——銷售——說話是一件自由度高、成本低的事情。所以我們見到優秀的銷售能做到迅速地判斷一個顧客的類型,對不同類型的顧客說不同的話(分支),一步步地推進銷售(順序執行),當某個環節卡殼時,重複騷擾客戶(循環)。在失敗時還會一定程度地反思修正整個過程,這很像是執行程序的過程。

2. debug思想:

這條比第一條更重要,通常也更缺乏。體現在新學編程的人,往往遇到問題了就愛亂猜,不看報錯信息,不打輸出,不調試。

犯錯誤後需要反思,找到犯錯的根本原因,總結找錯誤、改正錯誤的方法,這個本應該是初等教育階段就完成的內容,但由於呵呵的原因,很多人一輩子在這個問題上栽。為什麼編程能訓練這種思維,因為即使再2的一個人,如果他一天解決10個錯誤,通常也會有1個錯誤是通過正確的方式解決掉的。

3. 介面(API)思想(模塊化思想)

模塊化的最終目地是,每個人把自己該做的做好,然後大家組合一下就可以了(這裡沒有考慮故意通過 API 設置壁壘這些戰略),這意味著,介面設計的好壞直接影響到和其它人對接時的難易程度,這是個設計問題,新手經常會犯暴露冗餘介面,成員變數全局化這樣的問題。體現在現實中便是公私不分明這種職業化不高的表現。現實中我們並不總有機會體會到好的API帶來的便利,去年買的拖把桿今年買不到拖把頭了很正常,即使能買到,又能省多少錢呢(比如3m掛鉤)?但在編程中,好的API會產生根本性的影響,所以 Eric Schmidt 會說 Well-done platform APIs are the key to everything.

國內目前職業化不高的現象十分明顯,對創新的阻礙非常大(本應用錢買到的東西買不到,但對於可以通過API分發的資源,後端成長的很快,我的觀點是:國人職業化的最大的阻力不是能力,而是沒有標準。一旦有了標準,可以發展得很快。按照程序API來制定標準是馬上可以看到效果的方式)

受 @yyyyyy keeeeee@米洛 啟發:

Elon Musk 在 gigafactory 發布會上說他們像做一個產品一樣來建造這個工場。另外,想一下自動化測試與連續集成:每次更新第一時間看到問題;敏捷開發:流水線化的軟體開發。很多新的事物都存在些與舊的思維方式不相容的問題,但同時,我們也能看到應用新模式成功的案例。這些新事物共同的特點就是試圖用程序替代掉人工的因素,這樣便可以記錄每個發生的事件,根據數據去不斷優化(在輸入輸出明確的條件下優化過程)。成功的企業管理也有相同的理念——及時反饋,不斷優化(想想你遇到過多少不斷犯相同錯誤的企業管理者)。當然會有人說:不管黑貓白貓,抓到老鼠才是好貓。這是對的,但看一下大趨勢就知道,變化已經在發生了。

想到新的再繼續補充。

所以,該問的問題不是「xx歲學編程晚么」,而是「我應該怎麼學編程」。(當然了,具體情況具體分析,如果你已經有自己成功的事業,那麼比起自己學寫代碼,了解如何和把自己的事業和編程結合是個更好的主意)

Update: 歡迎大家在留言中補充你認為重要的編程思維,以及和生活中思想、其它技能間的類比,我會在更新時@你



我有C語言基礎,兩個月學完Objective-C,並從那時起開始開發企業級App.

這就好比一個月入三萬的人糾結要不要花兩塊錢買碗面一樣。

有這糾結的功夫語法都看完了。


果然知乎相比 Quora 還是圖樣。摘自 https://www.quora.com/Is-it-too-late-to-start-a-computer-science-degree-if-I-am-20-and-dont-know-any-programming-languages

Robert Kaspar

0 I"m still inside my mother"s womb expecting to come out tomorrow. Is it too late for me to start programming?

8.5 Is it too late to start programming at 8 and a half years old if I want to work at Google?

14 Is it too late to learn computer programming languages at the age of 14? I want to give Python or C a shot with LUA and move on from there. Is it too late to start for it?

14 Is it too late to start programming at 14 if I want to work at Google?

14 Is it too late to start programming at 14 if you want to work at Google or Facebook?

~16 Am I too late to apply for computer science in college?

17 Is it too late to start programming at 17 if you want to be a top programmer?

~18 I don"t know how to program and I am about to start a computer science college degree. Am I doomed?

18 Is it too late to start programming?

19 Is it too late to go to college and major in computer engineering without any programming background?

19 Is it too late to do programming at the age of 19 if you want to be a top programmer?

~20 Computer Programming: Is it too late to learn to code?

~20 Is it too late to begin competitive programming when others have already begun it and have secured good ranks in it?

20 [your question]

20 Am I too late to start computer programming from scratch at the age of twenty?

20 At 20, is it too late for me to learn ML and data science?

~21 Am I too late if I have started competive programming in 3rd year?

21 Do you think it is too late to start programming at 21?

21 I am final year under grad and 21 years old. Is it too late to start competitive programming?

~22 I am in 4th year of my college. Is it too late to start competitve programming participate in IOI and ICPC?

22 I"m 22 years old. Do you think I still have a chance to learn to program? What is the best way to learn at my age?

22 Is it possible to become a Google Code Jam champion, even if you have started to code at the age of 22? How many years of hard work would it take to become a GCJ champion if started at 22?

22 Is it too late for a 22 year-old person who is one year out of college with zero programming experience to start learning coding and get a job as a software developer?

24 I am 24 years old and just started learning coding. I want to be a programmer. Am I too late in the game?

24 I just turned 24 in February, am I too old to learn how to program?

24 Is 24 too late to start learning competitive programming?

26 Is 26 too old to become a developer?(題主在這(′?ω?`))

26 Is it too late to become a "good" programmer? And thereby work at a great place at 26

26 I"m 26 years old. Is it not too late for me to start competing in TopCoder?

27 Is it too late to learn programming if you are are 27 and work full-time?

27 I am 27 years old, and I"ve never done programming. Is it too late to become good at coding?

27 Is it too late to become a programmer? I am 27 and have a B. A. in Finance. I want to switch careers.

27 I am 27 years old and I want to study computer engineering while I have bachelors degree in mechanical engineering. Is it too late for me?

~28 Is it too late to study computer science and programming in my late 20s with the goal to get a developer job? I have no previous computer science background at all.

28 I want to learn how to code. I"m about to turn 28. Is it too late to learn? If not, where do I even begin?

28 I am 28, and I"m not a very good programmer. Is it too late to significantly improve my programming skills?

30 At what age is it too late to learn to code?

30 Is 30 years old too old to learn computer programming?

30 Is a 30-year-old too old to learn computer programming and then start working as a programmer?

31 Is it too late to learn WordPress and web development? Hello, I"m now 31 years old and feel that is too late to start learning something new like wordpress development and web develoment in general.

32 If I am 32 years old, is it too late to go get a B.S. degree in computer science?

33 I"m 33. Is it too late to switch to a career in computer programming?

~35 Can a 30-something ever realistically learn to code enough HTML/CSS to build basic interactive video?

~35 Is it too late to learn new skills like graphic design and programming in your 30"s and actually be good at it like younger people?

~35 If you are in your 30"s, is it too late to learn skills like playing the guitar or computer programming?

37 Is 37 too old to work as a programmer?

40 May I learn coding when I am 40? How do I start?

40 At 40, am I too old to learn how to code?

40 If someone is around 40 years old, is it too late for them to become quite skilled in web development and coding?

42 I"m 42 years old and I have a desire to become a web application developer. Is it too late for me to do so at my age?

52 I am a 52 year old electrical contractor who would like to become a computer programmer. Am I too old?

58 Is 58 too old to become a programmer?

94 I am 94, is it too late to start programming

2000 I am 2000 years old, is it too late to start programming?

Is it too late for an X-year-old to learn how to program?

Why are there so many questions like "Is age "x" too late to start programming?" on Quora?


貼一個我很喜歡的quora上的人吧Maggie Soo - Quora

他這麼說的

我現在63歲了,八個月前我決定自學Blender 3D,這是一個可以製作3D電腦圖像的軟體,是開源的,用python寫的,你可以看一下。

我上周做了這張圖:

去年夏天我學了HTML5,css3,JavaScript和PHP,所以從我自己的角度來看,24歲和其他時間一樣合適。

quora上有一大票高齡程序員,國內也許不多,但是我相信,如果你十年前沒種那棵樹,那就現在種下吧。


為興趣和創造而學,三十不晚;

為賺錢和糊口而學,二十亦晚。


好的一面是:

1

技術上,編程水平進步的難易程度,隨經驗(時間)的增加而遞增。第一年你能學到40,第五年可能就只有5了。

雖然學什麼都是這樣,但是編程上這點體現的相對明顯。所以學習編程是有後發優勢的。(兩年學到80,和那些95的老油條區別已經不大了)

2

另外,IT技術的變化迅速。一個經驗5年的程序員和一個經驗3年的程序員的水平可能還要更加接近。因為這五年間,最初兩年的技術可能已經丟掉不少了。

3

編程語言的複雜度是有限的。

學無止境,複雜度 100 的事情,總有人能學到 150 。但是,對自由表達想法而言,編程語言達到一個程度,就不重要了。

這也是非常多的著名程序是年輕人寫出來的原因。(雖然裡面的代碼在別人看來也許很爛。比如 facebook第一版代碼的優雅程度就很可疑。)

不好的一面是:

1

Obj-C 是個相對有些過時的,而且相對穩定的語言。現有程序員的積累拋棄的較少(優勢的第二點體現的不明顯)。

同時,他被替換的可能性也在加大( Mac Ruby 之類的。不過現在還是沒影的事)。

2

Web 前端技術很快能和 Obj-C 做接近的事情。更容易學習,應用更廣泛,似乎,更代表潮流。

無所謂好不好的一面是:

1

年輕最大的優勢是時間有保障。如果你能安排足夠的時間在這上面,應該很快趕上他們。

2

其實非IT專業的學編程,多是為了自己自由的表達心中所想。如果想追求這種自由,語言就必須學會,沒什麼可選擇的。


我28歲學編程,32歲學objc/cocoa編程。從我第一次學PHP編程到現在已經7年了。

-----------------------

我是零基礎,數學知識幾乎是零,但是我覺得編程很有意思,很好玩。十幾歲的時候我安裝過vc++6.0 ide,看到常式和vs ide界面的時候,我說我永遠搞不懂這玩意。28歲的時候我想寫點程序,就開始學習,先學習的PHP,從開始看書,到完全理解什麼是編程花了大概6個月時間,當你理解了什麼是編程之後,並且學會一門語言之後,再學其他語言就快了,一般也就一個月,於是我學了ActionScrpit/FLEX、js,c/c++、python、sql、objc/cocoa、nodejs、ruby/ror等等,純粹是為了好玩,我很少深入的學習某種語言,只有我認為想做的事情的時候才學習,我的寫過幾個ios app,也賺過幾個小錢,不過我沒有期望自己能當一個職業程序員,我只是覺得編程很有趣,很有成就感,自娛自樂。如果你想24歲學習一門程序,再找份工作,我想應該另當別論。

我現在可以編寫一個tw、fb這樣的網站對我來說沒有技術難度,我也可以寫snapshot之類的app,技術對我來說不是問題,問題是創意還有工作量,編程其實是一個體力活,大多數時候不需要太多技巧,但是工作量極大,因為即使實現一個最簡單的任務,仍然有大量的細節在裡面,每個細節你都必須一句一句的實現。

------------

如何零基礎學習編程?

1.你必須有興趣,這是最關鍵的,否則編程很乏味無聊;

2.選一門最簡單的語言入門,我推薦PHP,PHP是最簡單的語言之一,學習PHP可以立即寫網站,滿足你的成就感。PHP你不需要研究編程最困難的部分:GUI(圖形用戶界面)設計和編程,因為瀏覽器就是最好的GUI。PHP是C系列語言,利於再去學習其他語言。

3.找一本好書,記住,絕對不要買中國人寫的編程書。

我自學的PHP用的書:


其實學一門技術跟年齡不太有關係,跟你是否對它有興趣或者你是否真的需要它很有關係。

我就是趕鴨子上架的典型。在我自學編程以前(雖然我學的是語法比較簡單的python),我連重裝電腦都不會,所以我說我是負基礎入門。但是因為課題需要(跟工作的人做項目一樣的),沒辦法,必須學,也就學了。多練,多調試,也就會寫了。而且也沒用多長時間,整個開發過程從我開始寫print "Hello world"到測試完成也就是兩個月。這個課題完成的時候,我也覺得有點恍惚,我居然研究了演算法,開發了軟體,這簡直是天方夜譚,但是我堅持了,所以它實現了。


我覺得主要在熱情和堅持 找一個解決實際問題的小case 裝好翻牆 不懂問google 關掉電視 不打遊戲 每晚4小時coding 堅持幾個月 實踐出真知

我是24歲自學的程序 附個心路歷程 http://zhuanlan.zhihu.com/0f14edbc9d1e424a7e13b6f8489281cc/20781542

有堅持有動力永遠不晚 just code it


你覺得開心就干。「堅持」什麼的,寫代碼有那麼難嗎,不是一不小心就十幾年過去了嗎。。。「堅持」一用,事情感覺就變得跟吃屎一樣困難而痛苦了。


只要你開始學了什麼時候也不晚。你也可以參考以下文章,作者Jean Hsu現就職於Pulse,是一名Android工程師。她近日寫了一篇文章《It』s Not Too Late to Learn How to Code》。文中提到了她自己在學習代碼的過程中雖然艱辛但卻很有收穫。她強調,心動不如行動,要將想法實現化。她還為大家推薦了一個學習課程網站Stanford,希望對大家能所幫助。現將文章摘譯,以下是內容:

It』s Not Too Late to Learn How to Code
Coding is sort of like a superpower; with it you can create things
that millions of people see. You can change the way people behave, the
way they think, and the way they interact with others. This is beyond
awesome, but I』ve also met a lot of people that think that this ability
is inaccessible to them. I』ve met a lot of 「non-technical」 people who
seem to think that this superpower is only bestowed on those fortunate
enough to have it come easily to them at a very early age.


I took two Computer Science courses in high school, and I』m fairly
confident that had it not been for those classes, I would have been way
too intimidated to major in it in college. Those who major in CS with no
pre-college programming experience get my greatest respect, because
even with a few classes under your belt, it can feel extremely daunting.


Beyond college, I』ve spoken to several friends who have expressed the
same sentiment to me. They wish they had known how important it was,
how many opportunities being 「technical」 opens up, and wished they had
learned to code. They always say this with a wistful attitude that
implies that they assume it』s too late. They are around my age, 24 to
25.


It』s easy to think that it』s too late, because look at those people
who spent four years in college learning to code! But those four years I
spent in college learning CS? The first two I spent trying to figure
out what to major in. Over the next two years I took eight courses in
the department, but many have no direct relation to applications-focused
programming, which I assume is what most people want to do. In my
entire four years at college, I took only one class that was
applications-focused. Going into it, I had no practical knowledge of
HTML or CSS, but worked with two other similarly inexperienced students
to build a webapp with MySQL, PHP and HTML/CSS.


It』s easy to think that it』s too late. There will almost always be
people who have more experience, but it』s important to remember that
every one of those people started off as a complete beginner.


So if you』ve been thinking to yourself 「I wish I had learned to
code,」 why not do it? When you do, please keep some things in mind:

  • It is difficult! Things that take awhile at first
    will come naturally to you later on. Of course some people are more
    naturally disposed toward the type of logical thinking that programming
    demands, but I believe that in the majority of cases, people assume they
    aren』t cut out for it before giving it a fair shot. Though of course,
    having people believe that programming is 「too difficult」 and that the
    average person is 「not smart enough」 strokes our egos and makes us feel
    like we』re part of some super-elite hyper-intelligent group.
  • Mentally prepare yourself for roadblocks. I used to
    think I was cursed, because every time I tried to setup something new
    (new development environment, tool, library, etc), something would
    always go wrong. It took many years for me to realize that with all the
    different combinations of user operating systems, software versions,
    etc, the documentation was often outdated or not comprehensive.
  • Do you like it? Forget about if you think it』s too
    hard; do you think it』s fun? When you struggle for hours debugging
    something, and finally, it runs as expected, do you feel a rush of
    excitement? Do you look forward to having a few hours to figure
    something out? Those are the things that attracted to me to software–I
    just didn』t worry too much about if I could make it or not.

There are plenty of great resources out there to get you started, but
I』ll stick with one to avoid option overload. Stanford provides free
online access to a good number of CS courses, including three
introductory classes. Click here to get started!


Related posts:

  • My Experiences as a Female Software Engineer
  • My Experiences as a CS Student
  • The Thrill of a Deadline
  • Introduction
  • Beyond Gender in Computing


你知道編程從娃娃抓起有什麼壞處嗎?這些娃娃遲遲沒有泡妞的能力。

另外一方面,哥想說一個對老碼農來說殘酷的事實,那就是他們現在知道的東西,前幾年所積累的經驗,對於初級的技術招聘市場來說沒有什麼用,這個行業真的是後浪推前浪,前浪很可能死在沙灘上,因為他們早幾年學到的技能可能已經過時,而你晚幾年學到的正好是市場上緊俏的東西。湊夠這個意義上來說,晚幾年入門真不是什麼劣勢。你知道2010年有不少大叔轉行搞Android,起薪就1w嗎?大多數的技術是貶值的,鮮有哪個技術棧隨著時間增值的。


現身說法:

今年6月前從沒接觸過iOS開發(在法國讀天體物理碩士),只有一點c和Python的基礎。7月份回國決定轉行做互聯網,從數據結構開始學起,讀了10幾本中英文技術書,包括演算法、c++、設計模式、oc等。3個月後基本可以寫出小的App。於是面試騰訊,目前負責手Q iOS開發性能工作。

只要你有興趣、有動力學,憑藉現在發達的網路和線下資源,絕對可以搞定。題主加油!

------------------------------------------------

補充看過的書

1. 數據結構和演算法導論,什麼版本都行,對ios開發是一個基礎;

2. 《C++ Primier》,iOS開發必須掌握C++的

3. Big Nerd Ranch的《Objective-C Programming》和《iOS Programming》,非常好的入門書,看完會對iOS開發有基本了解

4. 關東升的《iOS開發指南》,不錯的入門書

5. 對於非計算機、通信專業的同學,為了應付筆試、面試,可能還要看一看《面試寶典》之類的

6. 比較專業的開發書,推薦《iOS cookbook》和《iOS programming》,amazon上銷量較高的兩本

7. 蘋果官方文檔

8. 網上亂搜的技術博客什麼的,主要是關於runtime、內存管理、多線程、網路、性能優化等比較專業的內容了


推薦閱讀:

生活中有哪些壞習慣一旦改正就能帶來立竿見影的好處?
數學,是否應該按照教科書的體系和順序來對定義和定理進行學習?另有哪些高效的學習方法?
如果世界上80%的人都具有和你一樣的學習、思考能力,世界會有什麼樣的變化?
一年時間提高150分的方法?

TAG:學習 | 編程 |