當前位置:
首頁 > 最新 > 慢人一拍,怎麼彎道超車?基礎不好,怎麼迎頭趕上?——編程經驗漫談

慢人一拍,怎麼彎道超車?基礎不好,怎麼迎頭趕上?——編程經驗漫談

讀過上篇文章《30了,程序員中的老司機們,30後的路該開向哪裡?》後,一些朋友說,文章寫出了他的迷茫和困惑,問我該怎麼辦,先是向我傾吐滿腹口水,再是真誠向我說抱歉。那篇文章談了一些針對程序員的職場看法。這篇文章從我自身經驗出發,分享下怎麼克服自己的心理陰影,在編程的道路上不斷自信起來,並不斷走出舒適區,挑戰未知和恐懼。

慢人一拍,怎麼辦?

說說我自己怎麼慢人一拍的。

高中畢業才開始摸鍵盤、接觸計算機。而我身邊的一些朋友,小學的時候就開始玩各種電腦了。

大學時代,靠 QQ 聊天才學會打字。城市裡的同學,小學時打字的速度就趕上你說話的速度了。

近大四才學會怎麼寫出正確的 C 語言版本 Hello World 程序。這個時間點,離 C 語言課程結束已有一兩年。閱讀了《C++ Primer Plus》這本書後,我才知道原來之前的寫法都 TMD 完全不講究,甚至錯漏百出。

大學沒實習過。沒實習這個 Sense 不說,周邊也沒什麼公司,沒什麼機會,可能也沒能力搞定實習。北京這邊的學生,尤其我所在公司附近的北大清華學生,經常大一就開始實習。大學畢業時,可能人家已經實習了好幾次了,並且呆過的可能都是好公司,其中不乏 BAT 甚至知名 IT 外企。

機器學習工作兩三年內基本沒接觸過。什麼 SVM, CRF,決策樹,一個也沒聽過。相比之下,現在的很多大學生們,大一就對各種機器學習演算法如數家珍。

別說這些專業技能慢人一拍了,80 後的我們,很多都沒能趕上最後一波利好——讀書的時候,學校開始收錢了,然後學費變貴了,畢業不安排工作了,畢業了房價飛漲一年努力買不起一平米廁所了……

慢人一拍怎麼辦?等死嗎?「長江後浪推前浪」,眼看後浪就要洶湧而來了,難道在灘頭等著被潮流拍死么?

其實沒什麼好辦法。幾句老話說的好,「勤能補拙是良訓,一分辛苦一分才。」咱們萬里長征從頭越,一步一個腳印慢慢來。

如果因為慢人一拍,你搞不定研發崗位,怎麼辦?不妨先從測試做起也沒關係。我一個好朋友,剛畢業的一年多,就是做的軟體測試,現在已經是某知名公司的研發骨幹了。一時搞不定,我們不妨心放寬,目光放遠,放長線釣大魚。軟體開發不一定就 Low,要知道還有個測試驅動開發的理念呢。做好測試的本職工作,說不定對後續做開發也大有裨益。

如果因為慢人一拍,你搞不定大公司,怎麼辦?不妨先從小公司做起。我最開始找實習的時候,投遞了幾十個簡歷,最後也沒有搞定什麼大公司的 Offer,後來去了一家不到十個人的小公司。那會連公司的前台都是男同事,讓我們向別人介紹時,真真是難為情。小公司學什麼?怎麼學?不妨看看我之前的分享文章:《實習經驗分享之一 在小公司,實習生和職場新人,學什麼?怎麼學?》。這裡簡單總結下就是:1,吃透代碼。2,做好安排給自己的事情。3,不要隱藏自己的缺點,多向他人學習。4,多讀書,多讀經典書籍。5,多做筆記,多思考,多總結。6,多要活,實踐出真知。

如果因為慢人一拍,搞不定公司的核心部門或者核心崗位,怎麼辦?不妨從周邊部門,或者是非核心崗位做起。只要是相關的部門,平時總有這樣那樣的交集,有交集就能夠認識,就能夠請假。只要你足夠聰明,足夠努力,多請教同事,多總結經驗,總有一天有機會轉到相關崗位。職場中,只有你有能力,老闆們都希望每個員工的產出能夠最大化。

基礎不好,怎麼辦?

說說我自己怎麼基礎不好的。

C 語言,考試 60 分左右,危險過境。沒能夠正經寫上一百行代碼。

操作系統課學習差,基本命令不熟悉。

編譯原理,系統架構等課程沒開設。

C++ 沒開課。那麼複雜的語言,只能靠自己硬啃。

模式識別、神經網路的課程開設過,但是基本沒人聽懂。那會大概 06,07年,機器學習還沒熱起來,老師教得沒激情,學生學習也沒勁。

我基礎不好啊,可怎麼辦呀?破罐子破摔吧,反正自己不聰明,趕上別人遙遙無期,咱何必痴人做夢?

男人當自強,怎麼能破罐子破摔呢?基礎不好補基礎唄。不是聽說缺什麼就吃什麼補什麼么,那基礎不好吃什麼來補?

C 語言不好,很正常。可能是因為老師不行,可能是因為沒錢沒電腦,缺少上機實戰機會。也有可能你不是科班出身,是從電信系、物理系、數學系轉計算機系來的,或者業餘感興趣自學計算機課程的,所以 C 語言基礎不好。沒關係,補吧。從《C 程序設計語言》開始看起,接著看《C 與指針》,《C 專家編程》等書籍。找個好的 IDE,多敲敲代碼。找個好的開源項目,讀讀代碼,好的代碼是最好的導師——「模仿是最好的老師」。

操作系統、網路編程、編譯原理等都不懂,沒關係,學吧。學霸都是學出來的,更何況我們。找本操作系統的教材,找本 Linux 操作系統的源碼解析書籍,找本《Unix 環境高級編程》和《Unix 網路編程》,咱們從操作系統和網路編程學起吧。一切都剛剛好,只要有開始,只能能堅持,一切都不會太遲。「亡羊補牢未為晚也」。

機器學習沒學過,沒關係。數學大學的時候學得不錯,這會早還給老師了,沒關係。買幾本數學教材,我們溫故而知新。買點機器學習教材,買些語音、語言、視覺等領域的書籍,大概了解下機器學習在語音、語言、視覺等主要的幾個領域的一些典型應用,以及典型的演算法。有興趣的話,了解一下有哪些主流的機器學習平台,常用的工具包,下載幾個數據集,按照教程,自己跑一跑實驗,看看輸入是什麼,輸出是什麼,中間的迭代過程怎麼樣,參數有哪些,調試信息有哪些。

基礎差沒關係,咱就當沒基礎。基礎好的同學,不也是從 0 開始學起的么。從 0 到 1 重新走一遍,長征路漫漫,堅持堅持,基礎都能補上。有求知心,有耐心,有恆心,總有一天能開心。

相關經驗分享

多讀書,多讀好書。比如編程語言的各種四書五經,各種 Think in xxx, Effective xxx, More Effective xxx等都是久經考驗的口碑好書。軟體工程方面的經驗之談,比如《代碼大全》、《重構》等都是歷久彌新的佳作。好書能耐百回讀。一些經典的書籍,其實是可以常讀常新的,比如我讀過兩三遍《代碼大全》,學生時代讀,和工作兩三年後閱讀,就有截然不同的體驗。

多讀代碼,多讀好代碼。比如讀讀瀏覽器的代碼,分散式系統的代碼,分散式計算的代碼,操作系統的代碼,機器學習的代碼。隨便找一個項目都行,深入閱讀,吃透它,掌握它。和讀文學書籍一樣,讀得多沒什麼用,能不能讀透才是關鍵。

多寫代碼,勤能補拙。書讀得多的,不見得寫文章寫得好。同樣的道理,看的代碼多,審美上來了,卻可能眼高手低。常常練筆,才能寫就華章。常常寫代碼,才能寫出簡潔美觀的高質量代碼。

多挑別人代碼的問題。正如寫作,如果你看到一些二三流作家的作品,能發現問題,並就一些字句,或者段落提出自己的一些改進意見,那麼相信自己的寫作能力也會得到提升。寫代碼一個很好的捷徑是,嘗試找找我們的 Leader 代碼里的問題,看看是否有可以超越自己領導的地方。萬事開頭難,萬事從頭起,今天你能發現一個拼寫的問題,明天你可能就能發現一個性能的問題,明年說不定就能發現一些設計的問題了。只有心存卓越,有意看齊,並嘗試超越,才能給自己足夠的目標,以及朝著這個目標的方向感和動力。

多改自己的代碼,嚴以律己。在提交 Code Review 之前,先自己本地看一看,嘗試找出問題。不要放過任何一個小瑕疵,也要假設同事在給自己審查代碼的時候,會吹毛求疵,這樣才會有心理壓力——有壓力才有動力。曹雪芹寫《紅樓夢》,「批閱十載,增刪五次」;魯迅寫文章則是:「寫完之後至少看兩遍,竭力將可有可無的字、句、段刪去,毫不可惜。」(《答北斗雜誌社問》),「我做完之後,總要看兩遍,自己覺得拗口的,就增刪幾個字,一定要它讀得順口」(《我怎麼做起小說來》)。寫代碼雖然不是千秋功業,但是保不定出現哪天讀自己的代碼看不懂的尷尬場面,因此還是嚴以律己的好,能刪則刪(代碼復用等),能潤色則潤色(函數名、變數名可讀性等),段落分明(模塊化清晰,函數長度合理等)。

涉略不同的領域,擴大技術視野。比如我在學生時代,學習過各種各樣的語言,工作後也偶爾看看新的語言的一些特色語法和類庫,包括 Java, C++, C, C#, Objective-C, Python, Javascript, Html, CSS, ASP.NET 等,雖然後來很多語言都陌生了,但是沒關係,在某些時候,它們總會發生作用。比如,做校園招聘,你可能就前端後端都能簡單考察下。要是有個工程師面試全棧工程師,你總不能出動公司各個部門的工程師來面試吧?再比如,哪天你創業了,這些技能至少對你做技術招聘是有幫助的。

設立各個階段的目標,一步一腳印。其實成長的過程,就是不斷超越「偶像」的過程。

在我們讀書求學的時候,我們看到師兄們的分享,覺得師兄很厲害,能開發小遊戲,真牛;能熟練使用指針而不錯漏百出,真是大神。當我們畢業的時候,可能也覺得寫個小遊戲沒什麼大不了的,那玩意兒都快成應屆生求職簡歷的標配了。

剛畢業的時候,可能年薪十萬,也可能二三十萬,這個時候你覺得師兄們年薪四五十萬真牛,感覺這輩子年薪五六十萬也夠干到老了,安安靜靜當個程序員,一輩子別無他求。也許,快的人畢業了兩三年,稍微慢些的畢業三四年,也到了年薪四五十萬了。

這個時候,你可能覺得公司里的架構師或者技術專家真牛,技術總監真牛,BAT 的高技術級別的朋友真牛,他們都是技術屆大牛、行業內標杆,年薪幾十上百萬。也許,當我們畢業了十年八年,我們也做到了年薪百萬——年薪百萬真的不是夢。

神話破滅的那天,我們看到了更高的天空——這時我們發現,身邊的朋友,同齡的優秀人才,稍微年長的,也有年薪兩三百萬的。沒關係,路很長,一步步來。比快比不過,我們比比腳程,看誰堅持更久,更穩步而行。

所有的 Leader 都是用來學習,用來看齊,用來超越的。超越不了沒關係,我們要有學習的態度,我們要有超越的心。目標之所以有其存在的意義,就是因為目標能夠被超越。

「不想當元帥的士兵,不是好士兵。」我們志存高遠,目光放長遠,總有一天能慢慢走向卓越,超越別人,超越自己。

最後,祝你,也祝我,超越別人,超越自己。

「寫代碼的老司機們,30後的路該開向哪裡?」的系列文章,你可能有興趣:

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 技藝叢談 的精彩文章:

TAG:技藝叢談 |