
最近朋友說想要學(xué)編程語言,從Java在入門。我覺得這路子開得甚好,倒不是因?yàn)槲覍?duì)Java有多深厚的感情(有蠻多的),而只是因?yàn)槲疫~得是同一路過來,自然對(duì)Java有所偏愛。
2015-2016是我Web的一年,紅紅火火,只可惜web這扇窗我打開的極晚,到了畢業(yè)后才開始著手。嚴(yán)格來說,我對(duì)編程造物的手段,也是在畢業(yè)后才慢慢有所體悟。
僅用這篇文章,聊聊我栽過的坑,剛開始編程的朋友就不必摔了。
先一語蓋之,把CS Degree讀下來,尤其是有板有眼地為畢業(yè)和高GPA而讀的,出來了并沒有什么卵用;除非,下課之后你是真愛編程,真愛琢磨。
(先說一句,這文章就是吹給非碼農(nóng);入行之后十八般武藝,走了哪一路都必然有截然不同的看法。我說的肯定不能代表所有碼農(nóng),那么換個(gè)稱呼,講講我們‘代碼仔’的故事。)
代碼仔的生活和CS本科生是很不同的,也許跟非碼農(nóng)所能看到的也不同。我所喜聞樂見的,就是那種程序員2.0版的代碼仔:熱情,機(jī)靈,學(xué)得快,用的巧,滿漢全席觸類旁通...etc。 技術(shù)方面,代碼仔要關(guān)注的可不僅僅是旁人都能吹的'Java, C++, C# ...etc';當(dāng)然我們所知的這些,都是一些基礎(chǔ)和硬功,一定要有的,但是做產(chǎn)品的能力和手腕,就是內(nèi)功了。
先把第一點(diǎn)說了,代碼仔和CS本科生有啥不同?CS本科生大部分都有很重的課業(yè),不僅要急著編程入門,緊接著還要學(xué)數(shù)據(jù)庫,數(shù)據(jù)結(jié)構(gòu),算法等一些(我知道你已經(jīng)看天書了)大課;與此同時(shí),那些數(shù)學(xué),工程相關(guān)的知識(shí)理論課,也不能少。沒有強(qiáng)大的內(nèi)心和郭靖的耐心(或者超凡的經(jīng)驗(yàn)和智商),CS拿不下好成績。在這種情況下,我本科的時(shí)候就光顧著闖關(guān)了。
代碼仔與之不同的是,我們現(xiàn)在關(guān)注的很多東西關(guān)乎互聯(lián)網(wǎng)時(shí)代的發(fā)展。比如代碼仔每天必然要做的事情就是關(guān)注最新的科技新聞,每天不斷的去閱讀大牛的best practices,時(shí)常給自己制定一個(gè)學(xué)習(xí)計(jì)劃(明天,這周,下個(gè)月)去摸索一些新的工具。下一步,自然是要在項(xiàng)目上設(shè)法把學(xué)到的新工具用上,然后再循環(huán)式的解決新問題,閱讀更多人的best practices。代碼仔關(guān)注的東西像碎片一樣,一天兩天不成氣候,但是時(shí)間一久,幾經(jīng)磨練以后就會(huì)呈現(xiàn)出一個(gè)錯(cuò)綜復(fù)雜的知識(shí)體系。這,就是內(nèi)功,解決實(shí)際問題的內(nèi)功。
說好的‘坑’呢?坑在下面。
學(xué)編程,最重要的就是出效果。在此列舉幾個(gè)學(xué)習(xí)的反例:
1. 拿著一本編程語言C++(我干過),意圖無師自通,光看不練,這就是一2B。
2. 雖有機(jī)會(huì)跟老師學(xué),但因?yàn)橛龅狡款i,把別人代碼直接copy過來,這是2B ^n。
3. 一旦遇到算法,數(shù)據(jù)結(jié)構(gòu),就退卻不前,搪塞說數(shù)學(xué)基礎(chǔ)不好。這屬于沒找對(duì)資源學(xué)習(xí)。
4. 只用一種資源學(xué)習(xí)(書,tutorial, 網(wǎng)站),非常片面,不可取。
正面的例子其實(shí)還挺多的:
1. 做項(xiàng)目。內(nèi)功嘛,還是要從0虐起來的。
2. 跟對(duì)人。跟對(duì)導(dǎo)師(導(dǎo)師不是說您的大學(xué)導(dǎo)師啊,大學(xué)導(dǎo)師可能只管生活?。。?,比如有個(gè)大牛愿意時(shí)不時(shí)到你的學(xué)習(xí)計(jì)劃里指點(diǎn)江山。 有時(shí)候,去公司面試的時(shí)候就是非常好的學(xué)習(xí)機(jī)會(huì),碰到愛講的面試官,那就聊吧,絕對(duì)是一些值得參考的學(xué)習(xí)方向。
3. Keep up with what's hot。這個(gè)很重要,即便你不一定會(huì)永遠(yuǎn)嘗試學(xué)新東西,但是起碼你可以多讀一讀新東西出現(xiàn)的原因和人們的反應(yīng)。
4. 找對(duì)學(xué)習(xí)資源,下手快,成功率要高。比如做完一個(gè)tutorial, 做完一個(gè)小demo, 完成一個(gè)課的流程,不斷的切換學(xué)習(xí)的資源。
那么,有哪些資源可以去開始學(xué)呢?避嫌打廣告,我就寫兩個(gè):CodeAcademy, Code School ... etc, 還有就是學(xué)到了基礎(chǔ)以后,立刻找好的tutorial做個(gè)demo小項(xiàng)目,經(jīng)驗(yàn)刷刷的就來了。
上面講完了我覺得怎么學(xué)編程才有勁,說白了也是因?yàn)槲以趯W(xué)校的時(shí)候就以成績?yōu)樯系郏▽?duì)啊,沒錯(cuò)啊,現(xiàn)在還是上帝呢),結(jié)果實(shí)戰(zhàn)水平低得可喜。出來之后也是花了半年的時(shí)間,才搞明白哪些東西最刺激神經(jīng),以及哪些事情才算內(nèi)功,才能來錢。
代碼仔,真不容易。
再來一遍:程序員2.0可真的非同一般噢,要會(huì)寫程序,會(huì)修這修那,還要會(huì)唱歌,有情懷。 行了夠多了,今天就吹到這里!