1. 程式人生 > >擼過一萬行程式碼,你看過這篇文章嗎?

擼過一萬行程式碼,你看過這篇文章嗎?

---《構建之法》學習筆記5

北上廣深真的是技術的寶地嗎?

​ 猶記得剛剛參加工作之後,有人邀請我去深圳,說沿海地區是IT行業從業人員的寶地,只有在那裡才會學到真正的技術,而且能拿到更高的工資,不管從哪個層面來說,都值得你去看一看。然而當時的我並沒有聽信他的話,甚至還在想,網際網路是平的,只要你願意學習,哪裡都有機會。這樣的想法顯然是錯誤的。在長沙這樣的內地城市,也許你曾經一度對技術充滿了興趣,但是卻不見得有機會讓你實踐新技術,往往很容易就開始接受公司領導層或前輩們的教導,一切以實現為重,最終把技術這條路給堵死。即使你想奮力一博,也往往年華不再了。
​ 然而,真的只有內地城市才這樣嗎?那天我跟一位老程式設計師聊天,他說現在這個時代,技術發展太快了,就算他想學習,也看不到學習的方向,或者靜下心來想學習也會被生活中的瑣事所耽誤。

​ 他說,而且現在的企業對開發者要求也越來越高,不像十多年前他大學畢業後去廣州找工作那樣,只要你有點開發基礎,總能找到工作。公司對你的要求也不高,你程式碼寫得好不好,是不是參考設計原則,都不重要,關鍵只有六個字,梭程式碼、梭得快就可以了。
​ 我說在廣州不是很不錯嗎?網際網路技術應該也不錯啊。
​ 他說,毛線,也只有頂級公司技術才會不錯,大部分公司其實跟內地沒什麼區別。
​ 好吧,我突然想起身邊那幾位去了北京深圳的朋友,他們也是從事軟體開發領域,這幾年都相繼回到了長沙,我曾經問過他們覺得北上廣深技術如何,他們都紛紛表示,也就那樣吧,並沒有想象中那麼好,或者大部分都是吹得好。當然這幾位朋友由於各種原因,也未能有幸進去頂級網際網路企業,而且最終也未能在技術領域得以進一步精進。
​ 當然也並非絕對,依然有許多人他們帶著夢想而去,回到長沙時,已然成為出類拔萃的翹楚,在我把長沙.net社群拉起來之後認識的一些人,深深的感受到他們身上那些與眾不同的感覺,顯然有別於其他開發者,成為各家企業互相爭奪的優質資源。還有許多開發者,他們的職場之路已經一騎絕塵,甩開很多個層次,成為技術世界中的頂級玩家。
​ 是什麼決定了這種區別?不得而知。

學不完的技術,哪些是自己的?

​ 然後老程式設計師繼續吐槽:尤其是人年紀大了,就越來越感覺技能脫節了,而且是近幾年突然開始的,早幾年還能寫點移動端多端程式碼和後端程式碼,這一兩年就開始有點跟不上了,雖然這一兩年學了點python和go語言。
​ 我說:那也可以啊,這些語言都是目前最流行的網際網路語言,學會了優勢明顯啊。

​ 他說:雖然學了那麼多語言,但是卻感覺根本只是一個搬運工,把網上的資料搬運下來,遇到的問題也根本解決不了。
​ 我說:好吧,那大概是學習不得法,或者沒有獲得積累吧。
​ 其實,我的內心同樣沒有底氣,和他本質上沒有任何區別,要說自己在技能上的積累,其實也好不到哪裡去。一直在內地城市,我深深的感覺到包括我自己在內,開發者們很容易進入一個職場的誤區,即容易成為多面手,而無法在某些領域專精。
​ 由於一些公司對於人才的專業技能沒有特別的要求,往往把獨當一面當成是基本能力,只要你擁有這樣的能力,就會把你往專案上丟,然後就是專案管理,部門管理,然後就與技術脫節了。當然,這些專案看起來也會用到許多不同的技術,但這種技術的應用水平卻只是停留在初級水平,遇到問題,通過百度快速解決往往是第一選擇,至於下次遇到了同樣的問題,你該怎麼做?還是繼續尋求百度的幫助。為什麼出現的技術問題,只要把百度中搜索到的魔法值一設定,答案就迎刃而解?
​ 好吧,大部分這樣出來的高階工程師,大概只是CV工程師。(Ctrl+C,Ctrl+V)。

職業規劃,如何規劃?

​ 是什麼原因導致了開發者們,哪怕去了北上廣深,也沒有成為真正的技術大牛、或者程式設計師們,學了那麼多東西,卻依然只知皮毛呢?
​ 從某種意義上來說,也必須承認,許多以外包專案研發的企業,實際上對於軟體工程師的職業發展規劃根本就是失敗的,畢竟讓這些非科班出生的企業家、以及一些依託百度搜索、靠掌握CV程式設計絕技成長起來的高階工程師或TeamLeader來對軟體工程師們進行所謂職業規劃根本也是不可能的事情,所以從某種層面上來說,需要開發者自己來明白自己的職業發展規劃。
​ 在《構建之法》這本書中,有一個章節《軟體工程師的成長》專門提到了這個內容。在這個章節中,鄒欣老師提到,初級軟體工程師應該有以下幾種成長:
1、積累軟體開發相關的知識、提升技術技能(如對於具體技術的掌握,動手能力)。
2、積累問題領域的知識和經驗。
3、對通用的軟體設計思想和軟體工程思想的理解。
4、提升職業技能(區別於技術技能)(例如自我管理的能力、表達和交流的能力、與人合作的能力)
5、實際成功。應該做出一些能夠公開展示的工作成果。
​ 同時,老師也提到了一些職業成長的建議,包括做好自我評估的一些方法,雖然不少開發者做的都是所謂的"CRUD”開發,但並非這種開發方式就是沒有技術含量的事情,同樣需要一些核心技術和擴充套件的知識。
例如,一個簡單的單表增刪改查,看似是滿足資料存放到資料庫的最簡單的操作,每天的重複或許枯燥無味,但是與資料庫技術相關的操作、大於大容量資料的資料庫操作、併發、備份、以及進一步的關係資料庫模型和資料探勘和商業智慧,都是屬於可以進一步的擴充套件能力。
​ 所以一個人的知識成長,如同早年一款流行的策略類遊戲《帝國時代》中的知識樹,往往都是從最基礎的技能出發,推而廣之,進一步擴充套件,最終才能打造出更加完善的知識體系。
​ 而如何才能提高技能?鄒老師認為,“答案很簡單,通過不斷的練習,將低層次的問題都解決,變成不經大腦的自動操作,才有足夠的時間和腦力來解決更高層次的問題”。老師將問題分成3個層次,分別是:低層次問題(變成自動操作)=》容易精通;中間層次的問題(由於需要花一點腦力來解決,所以可以是不斷的學習中);而高層次的問題,大部分情況下是無暇顧及、甚至很難遇到很難重現的,所以也很難成為所謂精通。

​ 在工作過程中,儘可能的積累經驗,讓自己掌握的技術更加純粹,形成自己的技能,除此之外,我們也可以有一些適當的自學來進一步擴充自己的知識面。在長沙.net技術社群部落格興趣小組中,有朋友指出,通過不斷的自學和練習,也可以形成自己獨特的學習方法,這些學習方法能夠快速的應對技術變化帶來的挑戰。在這個知識大爆發的時代,靠死記硬背來記住某些問題的解決辦法可能作用不大,只需記住具體的問題關鍵點即可。能力強的人不一定比其他人會許多東西,而是能夠以更快的速度解決問題。
​ 例如,像我曾經提到的作者鄒瓊俊,他的學習方式就非常獨特,那就是自學一種技術,並出版一本書,然後把他應用到公司專案中,進而推動公司的技術變革。在此之前他已經出過.NET技術書籍《Asp.NET企業級開發實戰》這樣的暢銷書,最近他又出版了一本新書,這本新書則是基於跨平臺技術開發的書籍《H5+跨平臺移動應用實戰開發》,這本書通過模擬一個社群的維修功能模組來介紹如何進行H5+跨平臺移動應用的開發,採用了一些目前主流的前端開發框架或語言進行編寫,包括MUI、ES7等。

(據我所知,在目前的開發者圈子中,有關這一塊的技術書籍似乎不是特別多,尤其是前端技術發展的非常快,所以許多技術與生產環境嚴重脫節了,而這本書則採用了目前都比較先進的一些技術,確實值得大家入手。)

​ 當然,我的重點並不是介紹這本書,而是介紹鄒瓊俊學習的這種形式。難道還有比寫一本書更好的學習方式嗎?顯然沒有。

結語

​ 對於IT企業而言,如果不掌握技術革新的方法或抓住新的機遇期,或許迎接而來的是自然而然的內卷化到死亡。《浪潮之巔》一書中,將企業變革稱為“轉基因”,吳軍老師認為,技術浪潮面前,要保持優勢,需要具有不斷變革的勇氣和能力。
​ 人何嘗不是如此? 學習,並不斷的練習,進而形成自己風格的高效學習法,正是開發者們不斷重新整理自我知識體系得到的寶貴財富