昨天李笑來老師發(fā)的一條微博引起了我的注意,我還特別留言這條微博的評論和轉(zhuǎn)發(fā)情況,后來簡書上 帥氣小伙 的一篇文章也是同樣的原因引起了我的關(guān)注。
李笑來的微博中寫道:
“ 算了一下 一個普通人 只要不笨,一年是可以成長為 全棧工程師的。用不著一萬小時。

全棧工程師:全棧工程師既要了解后端開發(fā),也要了解前端開發(fā)。他們是“全方位”的工程師,熟悉服務(wù)端的同時又懂客戶端用戶體驗。
簡書上那篇文章是:《一個32歲入門的70后程序員給我的啟示》

我之前也寫過一篇文章,是講我家小朋友如何學(xué)習(xí)Java的故事,《如何在一年半時間掌握兩種職業(yè)技能》。后來我把掌握一個職業(yè)技術(shù)學(xué)習(xí)周期統(tǒng)一定義為4~8個月時間(包括自學(xué)的方式)《IT培訓(xùn)改變了什么?》。
這一次笑來老師把成為全棧工程師的時間定義為一年,再次引發(fā)我對這個問題的思考。就是學(xué)習(xí)力和心智力如何成長?是什么阻礙了你的進步?
我本身是從事IT培訓(xùn)行業(yè)。我寫關(guān)于如何自學(xué)編程開發(fā)的文章和笑來老師的這種觀點,對我們來說,就是自掘飯碗。
現(xiàn)實的情況就是這樣的,我們遇到絕大多數(shù)來咨詢報名的同學(xué),都學(xué)習(xí)C語言,一半以上的還是計算機專業(yè)的,但他們經(jīng)常對我說,“老師,你把我當(dāng)作0基礎(chǔ)的。大學(xué)里什么也沒有學(xué)會。” 還有一些同學(xué)也自己學(xué)過編程開發(fā)Java、Android或嵌入式,但是,最終停在了hello world的水平。事實上也是,我們不得不從最簡單的程序邏輯開始教。
那究竟是什么阻礙了我們進步,以下三點特別重要:
一、相信
唯有相信才有可能
上個月我開始學(xué)習(xí)Python爬蟲,5月1號我寫了一篇文章,發(fā)到了一個學(xué)習(xí)成長群里。這里我剛剛開始了解Python的語法,我學(xué)習(xí)選擇的一個突破口,就是用Python實現(xiàn)爬蟲來抓取一些數(shù)據(jù)。
群里就有好幾個童鞋問我,學(xué)Python需要什么基礎(chǔ)?學(xué)這個難嗎?他們大多數(shù)是二十幾歲的年輕人,本科、研究生畢業(yè)。還有的跟我說,先加我,以后再學(xué)習(xí)。
一個月后,我掌握了urllib, urllib2, bs4, xpath, Scrpay, 了解了mongodb, Redis,我又寫了一篇文章總結(jié)《60小時Python學(xué)習(xí):從100行數(shù)據(jù)到10W+數(shù)據(jù)》,并用Python處理工作中的一些小需求。
很多人不敢行動,總是擔(dān)心,學(xué)不學(xué)得會,難不難。還沒有開始學(xué)習(xí),就在畏難情緒,先給自己設(shè)限。
二、堅持并專心
唯有專注才能成長
現(xiàn)代人的一個典型特點,就是焦慮,無法專心專注做一件事。這是編程學(xué)習(xí)的大忌。手機、移動網(wǎng)絡(luò),各種各樣的信息都在不斷打斷我們,吸引我們的注意力。稍微長一點的文章,很多人都沒有耐心看下去,只能接收那些短平快的知識和信息。
學(xué)習(xí)編程開發(fā),其實是一個最好訓(xùn)練專注力,培養(yǎng)學(xué)習(xí)能力、動手能力、解決問題能力的最好方式。
同時,掌握編程的技能不但能獲得一份薪資待遇不錯的工作,還是一項很cool,很fashion的技能。
其實我建議,每個大學(xué)生,都從掌握一項職業(yè)職能開始,達到真正掌握的程度,工作的要求。不特指編程開發(fā)技能。相信大家一但切實掌握一項目拿得出手的職業(yè)技能,一定會開啟你的心智成長之路。
三、正確的方法
正確的方法才能加速成長
很多童鞋學(xué)習(xí)時有了付費的意識,花錢去學(xué)知識、學(xué)技能,甚至請教一個問題也發(fā)一個紅包,這對學(xué)習(xí)和擴大交往來說,都是一件好事。
但是背后卻隱藏了,你的動手能力、分析能力和持續(xù)進步的能力,總以為通過這種快捷的方式,能獲得知識和能力。
尤其是技能型的學(xué)習(xí),本身是習(xí)得性的知識和技能,沒有經(jīng)過比較長時間思考和實踐、實驗,一有問題就問,就是思維上的惰性。
正確的方法,包括學(xué)習(xí)那些學(xué)習(xí)力強、優(yōu)秀的人的心態(tài)和習(xí)慣,不斷校正自己的學(xué)習(xí)路徑。在提問時,提出你的思考和方法,多復(fù)盤,多動手訓(xùn)練。每隔一段時間檢視學(xué)習(xí)效果和成果。
學(xué)會學(xué)習(xí),才能加速自己的進步和成長,開放自己的心智。
什么是全棧工程師?
全棧(full-stack)中的“?!笔侵竤oftware stack或者solution stack。一系列的軟件子模塊或者組件組合在一起,不再需要其它第三方的模塊依賴就可以完成一個任務(wù),這些子模塊的集合就叫一個棧。這里與計算機數(shù)據(jù)結(jié)構(gòu)中的“堆?!辈皇峭粋€東西,后者是指先入后出的數(shù)據(jù)結(jié)構(gòu)。
舉個例子,要開發(fā)一個web頁面,工程師需要使用操作系統(tǒng)、服務(wù)器、數(shù)據(jù)庫以及幾種編程語言,這些技術(shù)組合在一起叫做web stack。MEAN就是一個web stack。
擅長web stack的工程師就可以稱為web stack engineer。
依次類推,擅長所有的stack的工程師就是全棧工程師。
翻譯下quora上對what does the term ‘full-stack programmer’ mean?的回答:
全棧工程師的意思是說一個工程師可以處理數(shù)據(jù)庫、服務(wù)器、系統(tǒng)工程和客戶端的工作。根據(jù)項目的不同,客戶需要的可能是mobile stack, web stack, 或者原生應(yīng)用程序。
基本上當(dāng)客戶需要一個全棧工程師的時候,客戶需要的是一個全能的大神。或者至少當(dāng)客戶讓他去做一些舒適區(qū)之外的工作的時候,他不會有太大意見。