class="post_content" itemprop="articleBody">
一位就要換城市(離開北京)+ 換職業(不做開發),去新公司報導的程式猿,最近反思了自己畢業後的這五年工作,記錄下五年以來軟體發展的一點自我總結,也算是給過來人提點建議,少走點彎路吧......
08年頂著名校碩士的光環加入了一家非常有名的非軟體公司做軟體發展,剛開始一切其實都很美好。 大外企的各種好在頭一年給自己帶來了很多光環,當然自己也學到了很多(主要是非技術的東西)。 可是從第二年開始,當自己被各種郵件,開會和扯皮的事包圍後,技術能力急轉直下。 然而自己當時還沒意識到這個問題,感覺錢還行,也不忙,再加上本來就很迷茫,就得過且過了。 直到去年,很多清華北大同事的離職,日復一日的簡單重複工作,明顯的天花板,不漲的工資,以及家庭原因的集中爆發才讓自己後知後覺,才開始反醒,才開始下決心做轉變。
然而轉變是痛苦的,這五年技術上主要是在 windows 平臺上做一些企業內部業務的處理和展示,主要用一點 c++/c#,還有 MFC,Winform,WPF,WCF。 技術基本上是做的皮毛,一般問題用 MSDN,google 和 stackoverflow 就能基本解決。 用不到資料庫,也用不到什麼資料結構,用到一點點網路知識,主要精力都在業務展現上。 這一切在我看來招個應屆生用一年也能有和我一樣的開發能力,唯一懂的多的業務,也長進不多,都是繁雜的重複。 所以在自己開始面試和找工作時被bs了很多次,頂著光環人家一般都給你面試機會,但是一旦聊到技術細節,自己很多都答不上來,也曾經一度非常沮喪。 慶倖最後找了個技術相關的職位,能夠兼顧到家庭和自己後面發展的想法,還算可以,這是後話,暫不討論。
總結這五年不成功的開發經驗,現在想想主要問題如下:
1、目標不明確,由於學的專業不是純軟體,自己誤打誤撞的進來做軟體發展,自己一直沒想清楚自己的目標,結果導致自己渾渾噩噩的做了5年開發還停留在原地。
2、缺乏堅持,沒能堅持一件事情做到底,自己其實在這五年也自學了一些東西,包括 HTML,JavaScript,CSS,Python,JAVA...... 也看了不少技術的東西。 可都很膚淺,一樣也沒有深入堅持下去,什麼都懂一點皮毛,結果就是什麼都不懂。
3、不夠勤奮,我從小成績優秀,學習能力很強,缺乏需要非常勤奮投入才能做成事情的鍛煉,所以養成勤奮的習慣,到了工作中才發現要取得成功無不需要加倍的努力才行。
此外從一個非科班出生搞軟體的角度,談談自己對軟體發展的瞭解:
1、做上層開發學了這麼多所謂的語言,框架,技術,其實現在想想萬變不離的卻是底層的資料結構,作業系統,網路通訊和一些其他的基礎的東西。 自己也算半路出家,以前總是不屑基礎的東西,總認為我懂了 WPF,能畫出很炫的介面什麼就很好了。 其實卻是認識太膚淺,只有掌握了不變的東西才能應付好上層的技術,否則只會被微軟牽著鼻子走。 所以對新人來說,打好基礎是多麼重要,可惜我後知後覺了。
2、除了基礎的東西,我認為其次重要的是軟體架構,好的架構可以讓事情事半功倍,讓下面實現具體代碼的感覺很輕鬆。 說得過分點,一個好的架構師可以帶一群實習生的幹活都能出好東西。 軟體發展越來越不需要我們懂底層的東西,很多現成的輪子可以用,但是要知道怎麼搭積木就需要好的架構師了。 所以我覺得平常要多看好的開源架構,多學習框框的東西,當然輪子和積木知道哪裡能拿到。 最怕的是像我一樣,只會 google 找積木搭,這就是所謂的純碼農了。
3、其次是業務,開發很多時候要懂業務,很多開發的很不屑業務,認為技術才最重要。 其實很多時候業務才是王道,軟體發展在我看來大部分時間都是給業務做服務的,做支援的,公司都是靠業務才能賺錢的。 所以開發人員也要懂業務,特別對那種不是很想一直做開發的來說,懂業務又懂技術也許會給你更多的機會。
4、最後是軟體發展的職業發展,個人的看法是碼農能爬上去做架構師和經理的其實很少,基本一個蘿蔔一個坑,我見到開發能一直做到退休的都是老外,人家基本沒有 title 的,這樣的我觀察無非兩種人。 一種是對業務很精通,同時對技術系統又很懂的,公司少不了他。 一種是對技術很熱情很鑽研,能力很強,又不想去要什麼 title 的,基本可以挑大樑。 我想國內的情況雖然不太一樣,不過基本可以借鑒下老外。 當然不做開發還有很多可以做,我想說的是開發是可以做一輩子的,就看個人的想法了。 這個問題我自己也一直在想,目前只有一條模糊的路,也得摸石頭過。
以上是作為一個經驗尚淺的碼農對工作五年的反思,基本是想到什麼就寫什麼,思路有點亂,敬請諒解。