1. 程式人生 > >技術瓶頸突破感言收藏

技術瓶頸突破感言收藏

相信大家或多或少都有遭遇技術瓶頸的感覺,那麼不妨來各自談談自己的體會,因為感覺自己到技術瓶頸的時候,想突破的感覺真的很苦惱,如果能好好總結一下,或許對我們都有幫助,先說說我的經歷:
1.最無知的階段
最開始就是程式設計方面的基礎知識,像程式語言,資料結構,作業系統,計算機組成原理,這個時期基本上是學什麼都是一頭霧水,各種各樣的概念像山一樣壓得人喘不過氣來,感覺看什麼不懂什麼,很迷茫,這個時候也最容易退縮,這個時期也是最難的,我在這個時期的時候大概是大一大二的時候,我本身專業是自動化,第二學歷是計算機,本專業的人沒有人學,農村來的孩子以前沒有接觸過計算機,最開始先學的java(聽大肆師兄吹的就想學,後來才知道他根本就沒學過也是聽別人說的) ,那時候是2000年的時候,上來就windows 95了,沒有接觸過dos偏偏JDK是在dos下用的,當時以為這麼高檔的編寫介面的IDE(呵呵那時候還不知道什麼叫IDE),總是認為肯定是通過滑鼠操作的,結果一點螢幕一閃就什麼都沒有了,當時總以為自己裝的不對,反覆的重灌,那時候根本不知道什麼csdn基本上就是上圖書館翻書,反覆的捉摸哪裝的不對,後來在大一開計算機文化基礎老師說到了dos才恍然大悟,呵呵原來是這樣,“真原始!”。於是又去圖書館找書,發現了JBuillder幾點零忘了,就記得它裝完了需要重起系統而學校的機房有還原卡,重起啥都沒了。迫於無奈只好厚著臉皮去找機房老師,那時候我們學校廢棄的電腦都在一樓機房裡,那個老師對我很好和我說有一些舊電腦沒有裝還原卡,你可以找找。呵呵你能想象的到嘛,一個月的時間我什麼都沒幹,幾乎空閒就找這樣的電腦了,基本上能用的電腦都是裝了還原卡的,不能用的都是沒裝的,現在回憶起來,這個經歷我是學的最多的。後來實在沒有辦法了,開始看dos。確實不止一次的想過放棄!幸運的是大一下學期計算機專業開c語言了,什麼東西老師都告訴了,不會就問。當時最大的樂趣就是做課後習題,並且樂此不疲,幾乎譚浩強的那本課後習題我都練過。我認為這個階段突破瓶頸的方法是,別害怕彆氣餒堅持就是勝利,突破的標誌就是你開始有目的性的有選擇性的看書了,最起碼你知道了,在這個時候資料結構離你還很遠,還是關心指標比較切合實際一些。最開始的時候興趣很重要,我的自學能力有可能就是這個時候練出來的。我現在印象最深刻的一本書是楊芙清的紅皮的講 OOP和OOD的書,書名忘了
呵呵當時理解了一些概念那個激動啊,想想還覺得好笑,另外就是有點不知天高地厚了,感覺C語言過時了,太簡單就那麼點事。
2.看什麼都會又看什麼都不會的階段
有點基礎了,興趣更強了,開始飄飄然了!開始和不懂的人侃了,給別人的感覺很強。說什麼都好象頭頭是道,看什麼都會又好像什麼都不會,其實那個時候我就會用Turbo C知道java的一些東西,這已經大二了,買了一臺電腦,也知道了JDK怎麼用了,呵呵當著別人的面在CMD裡敲javac Java這些命令,整的一副高深莫測的樣子,很是裝了一把。但內心還是很苦惱的因為內心知道,該看的書太多了,該學的東西也太多了。其實這個階段看書不是最重要的,只要找一本好書,練習例子就行了,最好能動手改改,我記得當時用的是Thinking in Java,語言一定要多練,基本上這個階段我還是在語言裡爬,基本上認為軟體就是語言,學好了語言就是高手了。在這個階段我最有成就感的就是買了一本 Java Swing的書,照它上面的例子,編了自己的第一個視覺化程式,呵呵激動了一個下午,書名忘了,黃皮的上面有一個活口的扳手,相信很多人都看過。在這個階段最重要的是一定要養成好習慣,給程式寫註釋了,給變數起名字了,另外就是一定要踏實,多動手,不要忽略程式的bug,不要關心程式只跑出個結果就成功了,對照書的內容好好分析總結一下,其實第一次程式出現死迴圈我也很興奮的。我認為在這個階段突破瓶頸的標誌有幾個:非常渴望和懂的人獲得交流,上癮了基本上不是去圖書館就在電腦前邊,不屑於編一些小程式了,渴望編一些大的程式但是又不知道自己行還是不行,很困惑商業上的軟體到底是什麼樣的,並且知道了計算機這個專業博大精深不知道學到什麼時候才是個頭,願意和別人承認自己是個菜鳥了開始看資料庫網路程式設計方面的書了。這個過程持續的很長几乎一直持續到我大學本科畢業。
3.學以致用階段
研究生階段有幸跟著導師進入了中國民航的一個特種裝置研究基地,做機器人的課題。遇到了很多真正的高手,由於課題需要改用VC6.0,開始看WIN32 API(一本黃皮的教材,好像是WINDOWS 95/98程式設計,清華大學的)。那是我最充實的時候,天天都在進步,早上和晚上都有一種獲得新生的感覺,我最慶幸的是在第一階段看的那些書,在這一階段都穿起來了,呵呵也終於有了自己多於1000行的程式了,並且我發現很多的高手在分析bug的時候都不能從原理上進行解釋,我還湊活,這應當很慶幸當年圖書館沒有白跑。或許這也是科班和非科班的不同吧。這個時候我遭遇過第一次程式記憶體洩露,第一次程式宕機,第一次主動去看軟體工程,第一次機器人爬到牆上掉下來,知道了CSDN進而知道了慰www.codeguru.com和www.codeproject.com等很多網站了。這個時候我學會了MFC STL 資料庫程式設計,學會了網路程式設計,看了N多本C++方面的書。那時候經常早八點晚十點沒有周六週日。並且很清楚的知道了,只要自己肯努力,自己一定能成功。突破學以致用最重要的標誌最明顯的我一直受用到現在的標誌就是不太關注語言了,因為知道語言不是最重要的了。進圖書館總是找一些演算法方面的書當然這本身也是課題需要,知道啃資料結構了。我非常慶幸的是我們學校有一個女老師,國內第一批恢復高考的大學生,東北大學數學系畢業,她很關注我經常和我說一些數學問題,還告訴我看一些什麼樣的書,在後來走向工作崗位的時候真是受用非淺。另外編寫程式碼也變懶了,寄希望於什麼東西都從網上下,除了演算法模組否則根本就不願程式設計序。現在回想起來我還是在細節上進行打拼,還是沒有清楚的明白到底什麼才是軟體,最多也只能算是一個初級程式設計師。
4.明白真正軟體的階段
工作後順利的進入了一家軟體公司,在一個七人開發小組裡做開發(該軟體開發從九幾年開始的(那時我還沒上初中呢哈哈),軟體的後臺包括實時庫部分是由二十多個博士碩士經歷幾年時間做出來的)我們小組的開發需求是給一些大型變電站(上萬個數據採集點)做配變監測系統,我進入公司的時候專案已經啟動三個月了,有幸看到了這個平臺的很多原始碼,終於知道了過去我做的軟體簡直就是小case中的小case。在發奮圖強了半個月後,我發現我在大學的知識點絕對夠了。
在進入專案組的第二天,就給我分配了任務,呵呵開始做一些小模組,由於做的很認真,質量效果都很好,研發部經理認為我雖然剛畢業,但是很有潛力,就讓專案組內一位我很尊敬的高手(哈工大本科上交碩士,七年大型軟體開發經驗,手中無劍心中也無劍的那種人)帶我,他是公司的技術主幹,而且一直負責軟體框架方面的工作,在後來的幾周裡簡直就是集訓般的程式設計序,而且他向我詳細的闡述了使用者的需求和整個軟體架構,從底層的資料通道採集,網路通訊架構,實時庫的原理,後臺的資料處理,前臺的資料處理直到前臺的介面設計,現在想想我真的是很感謝他。
在我進入這個專案組兩個月後,這位大牛不知道因為什麼原因被調走了。這個時候專案已經進入測試階段了,呵呵專案經理讓工程部和我們小組的其他六個人測試程式,讓我一個人負責bug修正(因為我的優點就是不但快而且好,另外他也沒有別的人選了,除了大牛我知道的最多,別的牛都是負責一部分),呵呵短短兩週時間200多個bug被我一個人搞定,至今我還為這件事情而得意,期間由於工作的需要我很是花了一番功夫研究了它的框架和程式碼,包括一些深層次的原始碼我都有幸看到。這個時候我才終於明白,程式框架和程式根本就不是一個技術層次。於是開始專研設計模式,UML一類的資料。
後來由於研發經理多次在公開場合表揚我引起了專案經理的反感,他處處找我麻煩,加上這種軟體不是本專業,我還是喜歡控制軟體,我選擇了離開。但是我非常感謝這家公司。
在這個階段我認為跳出瓶頸的標誌就是開始向上走了已經開始用一種全域性的眼光去看待程式了,再看程式的時候看到的已經不在是具體的程式碼了而是一種架構,一種資料走向互動圖。基本上在這個階段一般都不會困擾於具體的技術了,關注的資訊資料大部分都是軟體工程方面的資料了,喜歡用最簡單的方法去解決複雜的問題了,知道軟體開發過程包含很多事,開始關心CSDN主頁上的內容了,喜歡瞭解業內的動態了,泡論壇的時間變少了。在這個時期的時候,做人做事情也更注重自己的風格了,很多事情也養成了自己的習慣了。一般也不開始盲目的去推崇什麼技術或者什麼演算法了,堅信最實用就是最好的,人也變平和了少了一些銳氣多了一些穩重。
5.技術轉型階段
搞軟體的估計技術沒有轉過型的很少原因也很多,我離開了那家公司以後,有三個月的空白期一個是太累了想休息一下,另外就是有可能是畢業之後技術上沒有經歷什麼太大的困難,總感覺真正自己感興趣的軟體不應當是這樣的,應當很有挑戰性才是,讀書時想著捉摸著大型軟體到底應當什麼樣,經歷了以後才明白關鍵並不在於大小,自己做的高興才好,開發的難點並不在於工程大還是工程小何況80/20法則估計大家也都聽過,很多大型軟體%80的工作內容都是重複的,沒有什麼新意。呵呵於是我還是回到了老本行,做我的運動控制軟體,並且從事嵌入式系統的開發(新瓶裝老酒呵呵),因為運動控制涉及到的演算法太多了個人也喜歡。在這家公司一直做到現在。
我認為搞軟體不可避免要進行一次技術轉型,這個行業很累很辛苦,只有找到自己適合做、高興做,願意做的工作,才能讓你繼續走下去,因為行業待遇雖然高,但那也只能讓你高興幾個月而已,你堅持不了多久的。所以這一階段突破的標誌就是發現自己喜歡的行業並且鑽進去。
6.走在所在行業前列的階段
不少人都是這個目標吧,在當前公司所開發的上位軟體系統從需求分析到框架到編碼一切的上位程式都是我作為主要人員進行開發的或者說上位這裡就我自己,初期階段用了兩個月達到了國內同類系統用一年時間做出來的效果(與另外三家企業的軟體相比,他們至今還沒有超過我的初級階段),當然這也與公司以前失敗的經驗有關。後來又用兩個月的時間開發了國內一些客戶需求好幾年但其他軟體公司都沒有開發出來的功能,國外兩家行業內比較強大的公司也只有一家有這樣的功能,之後又用了兩週時間開發了一種獨一無二的功能只有我們的軟體有。由於有對公司洩密之嫌,所以具體是什麼就不說了,當然你也可以認為我在吹牛,在csdn裡還有我其他的同事我想他們也會看到我的帖子。其中涉及到的很多關鍵性的技術和運動規劃演算法我想國內或許沒有人比我更清楚,因為沒有人比我們做的好,而且與他們接觸,他們的程式10萬行以上而我只用了兩萬多行的程式碼。當然如果公司不給我提供好的平臺,我也沒有這麼好的機會,期間也得到了很多同事的幫助,我的人緣還不錯。我並不是在這裡吹捧自己,我只是認為這是技術人員發展的一個階段而已。
最近專案已經快收尾了,最近也在開始總結一下自己,我今年28歲,工作到來年四月份就兩年了,我下一步的路該怎麼走?我現在已經不害怕技術了,經驗告訴我只要我踏踏實實的肯學,基本上所從事的實際領域都可以學會只是時間問題,我還需要一些實際專案的歷練,一定要更難的。
在這一階段我總結出來了一個個人認為很重要的結論,技術人員要想突破自己的瓶頸,理論水平不提高光有實際經驗是不太可能的,最終水平有限。前幾個階段的總結我幾乎都是想到哪寫到哪但是仔細回味一下任何一個瓶頸的突破主要還是理論水平的成長,經驗和實踐只能決定當前階段的水平,實踐只是外功,理論才是內功,沒有過硬的理論,成長肯定是有限的,在技術人員的初級階段理論沒有實踐重要,但是越到後期理論越重要。