一、個(gè)人從業(yè)經(jīng)歷 1、讀書時(shí)期 我是千禧年千軍萬馬過獨(dú)木橋考上了大學(xué)(具體是哪一年,大家可以百度),專業(yè)是信息管理與信息系統(tǒng),當(dāng)時(shí)是比較吃香的“萬金油”專業(yè)。我們學(xué)了一些與計(jì)算機(jī)軟件相關(guān)的課程,比如操作系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫系統(tǒng)原理、C語言這些基礎(chǔ)課程。 大學(xué)里面老師普遍沒在企業(yè)上過班,缺乏實(shí)操經(jīng)驗(yàn),所以講的課程不深入,大家學(xué)得也是云里霧里,估計(jì)現(xiàn)在也大致是這樣的。 我們同學(xué)當(dāng)時(shí)覺得理論課程學(xué)的心里都沒底,所以好多熱衷于動(dòng)手操作,那時(shí)候大二花了大價(jià)錢買了一個(gè)臺(tái)式機(jī),要四千多,相當(dāng)于現(xiàn)在八九千的東西,記得還裝了金山打字通練習(xí)打字,學(xué)盲打,當(dāng)然也裝了侍魂、cs等游戲軟件玩過。 后面在大三大四的時(shí)候有個(gè)課程叫信息系統(tǒng)分析與設(shè)計(jì),需要做大作業(yè),我們自學(xué)了一點(diǎn)VB6.0、DELPHI 6、ASP、還有MS SQL Server 2000數(shù)據(jù)庫。當(dāng)時(shí)DELPHI這個(gè)C/S結(jié)構(gòu)的編程工具比較流行,做GUI的界面開發(fā)非常快,所以用它做了蠻多小案例。 后面辛苦了半年考上研讀研,渾渾噩噩過了2年多,自學(xué)了一點(diǎn)點(diǎn)Java和JSP,那時(shí)候Java是JDK1.4,JDK1.5的版本,看了一些相關(guān)的軟件工程書籍,編程水平感覺沒有大的提升。期間用JSP和SQLSERVER2000給學(xué)校檔案館做了一個(gè)畢業(yè)生檔案轉(zhuǎn)遞管理系統(tǒng),用最原始的記事本寫代碼,命令行編譯執(zhí)行,賺了點(diǎn)生活費(fèi)。 2、工作前幾年 參加工作后,先后在國(guó)企、私企等單位做過開發(fā)工程師、研發(fā)項(xiàng)目經(jīng)理、技術(shù)經(jīng)理、研發(fā)經(jīng)理等職位。 工作前兩年還用Delphi開發(fā)過進(jìn)銷存系統(tǒng),用ASP做過網(wǎng)頁,也做過一點(diǎn).net的項(xiàng)目。不過慢慢的Delphi、ASP都被淘汰了,沒人用了,.net后面也漸漸用的人越來越少。后面主要使用Java做開發(fā),J2EE很流行。工作過程中也學(xué)會(huì)使用開發(fā)工具比如Eclipse、MyEClipse2008,使用了Java開發(fā)框架Struts1.1,SSH等。 做運(yùn)營(yíng)商的系統(tǒng)開發(fā)運(yùn)維時(shí)也接觸了Unix和linux操作系統(tǒng)以及Oracle數(shù)據(jù)庫,這時(shí)候才感覺自己稍微學(xué)到了一點(diǎn)東西,有了點(diǎn)技術(shù)。 不過,很多時(shí)候都是現(xiàn)學(xué)現(xiàn)賣,沒有辦法,工作過程中需要什么就學(xué)什么,只有這樣才能一路走下來。比如之前公司要搞一個(gè)醫(yī)療器械進(jìn)銷存產(chǎn)品來賣,從重慶的公司買了一個(gè)PB的進(jìn)銷存軟件讓我來修改和維護(hù),雖然沒搞過PB,我還是硬著頭皮買了一本PB的書,邊學(xué)PB邊改程序,改好了打包成了公司自己的產(chǎn)品。 2014年左右是移動(dòng)互聯(lián)網(wǎng)爆發(fā)的時(shí)候,那時(shí)候可謂是全民要搞APP,開始流行互聯(lián)網(wǎng)創(chuàng)業(yè),到處都是要找做安卓和IOS的工程師,做安卓和IOS的工程師工資也很高。當(dāng)時(shí)我的工作沒有要求做APP開發(fā),但是還是逼著自己安裝了ADT插件和Genymotion模擬器一步一步調(diào)試代碼,花了大半年業(yè)余時(shí)間學(xué)會(huì)了安卓開發(fā),現(xiàn)在在工作中也用到了。 3、現(xiàn)在與未來 現(xiàn)在的公司主要是使用SSM開發(fā)框架,數(shù)據(jù)庫一般選擇MySQL,APP開發(fā)有用安卓做的,也有用基于H5的Web APP開發(fā)方式?;贖5的可以兼容打包為安卓APP和IOS APP。我們選擇的是HBuilder開發(fā)工具,已經(jīng)用了快三年了,有了好多款A(yù)PP應(yīng)用上架發(fā)布。 目前比較流行微服務(wù)架構(gòu),所以我也在自學(xué)Spring Boot和Spring Cloud,下載了STS工具有時(shí)間就看著電子書邊敲代碼,而且Java 8已經(jīng)成為了主流,所以Java8有很多之前版本沒有的特性,如方法引用、流API操作、Lambda表達(dá)式、函數(shù)接口,也在自學(xué)和掌握中,在不久的工作和項(xiàng)目中可能會(huì)馬上使用。 所以,做軟件開發(fā),學(xué)習(xí)的路途上任重而道遠(yuǎn)。 二、是否選擇做軟件開發(fā) 軟件開發(fā)行業(yè)作為一類職業(yè),沒有好與壞之分,只有適合不適合自己,自己愿意不愿意堅(jiān)持做這一行。我的大學(xué)同學(xué)中有90%最后沒有做軟件開發(fā)這一行,剩下的幾個(gè)人一直做這一行也做得不錯(cuò),畢竟這一行雖然加班多,技術(shù)更新快,但是工資待遇還是不錯(cuò)的,買房買車都完成了。 也有同學(xué)做了幾年軟件開發(fā),比如用ASP寫程序?qū)懥藥啄?,后面轉(zhuǎn)行去做銷售或者公務(wù)員了,因?yàn)榧夹g(shù)更新太快,沒更新自己的技術(shù)技能,過兩年就可能很難找到適合自己的工作崗位了,無奈只能轉(zhuǎn)行。最讓我覺得不敢相信的是我大學(xué)宿舍的下鋪,他讀書時(shí)技術(shù)學(xué)的不錯(cuò),編寫代碼的動(dòng)手能力也很強(qiáng),但是畢業(yè)后沒有選擇做軟件開發(fā),一直做化工產(chǎn)品的銷售,現(xiàn)在在廣州也做得不錯(cuò),所以說職業(yè)選擇很難說。 也有人說做軟件開發(fā)是吃青春飯,到了35歲就要轉(zhuǎn)行了,很多網(wǎng)上都有這種吐槽討論,我個(gè)人認(rèn)為這也不全對(duì),其實(shí)這也是一個(gè)正常的技術(shù)和能力更新的問題,35歲了會(huì)要求工資待遇高,還要照顧家庭小孩,不能加班多,如果能力和精力匹配不了崗位要求,自然會(huì)慢慢適應(yīng)不了,其他行業(yè)也是如此。 我個(gè)人在工作中發(fā)現(xiàn),每個(gè)IT企業(yè)對(duì)于優(yōu)秀的研發(fā)項(xiàng)目經(jīng)理都是稀缺的,即懂技術(shù),又能跟客戶和領(lǐng)導(dǎo)溝通,還會(huì)寫文檔,帶團(tuán)隊(duì),寫代碼也比較溜,這類人才只有上了30多歲的年紀(jì)才能具備,為什么我們不能成為這樣的人才呢? 三、軟件開發(fā)的崗位選擇 有些人認(rèn)為,軟件開發(fā)行業(yè)就是做代碼開發(fā),其實(shí)不然,還有很多相關(guān)的角色崗位,就拿代碼開發(fā)來說如果細(xì)分還分為前端開發(fā)、后臺(tái)開發(fā)、數(shù)據(jù)庫開發(fā)、APP開發(fā)等,只是一般小公司為了節(jié)約人力成本,不會(huì)分那么細(xì)而已,他們需要的是啥都會(huì)的全棧工程師。根據(jù)CMMI的標(biāo)準(zhǔn),我大致羅列一下軟件開發(fā)行業(yè)的崗位角色供大家參考。 研發(fā)經(jīng)理 (1)負(fù)責(zé)技術(shù)產(chǎn)品的規(guī)劃管理, 團(tuán)隊(duì)建設(shè) (2)負(fù)責(zé)立項(xiàng)審批、總體計(jì)劃審批 (2) 負(fù)責(zé)項(xiàng)目里程碑決策 (3) 負(fù)責(zé)變更審批 (4) 負(fù)責(zé)詳細(xì)計(jì)劃審批 (5) 參與設(shè)計(jì)評(píng)審 研發(fā)項(xiàng)目經(jīng)理 (1) 負(fù)責(zé)立項(xiàng)申請(qǐng) (2) 負(fù)責(zé)總體計(jì)劃編制 (3) 負(fù)責(zé)詳細(xì)計(jì)劃編制 (4) 負(fù)責(zé)里程碑/階段總結(jié) (5) 負(fù)責(zé)項(xiàng)目監(jiān)控、風(fēng)險(xiǎn)識(shí)別與跟蹤 (6) 組織及參與項(xiàng)目評(píng)審 (7) 協(xié)助客戶試運(yùn)行 (8) 負(fù)責(zé)客戶總體驗(yàn)收 (9) 負(fù)責(zé)項(xiàng)目資料移交 (10) 組織項(xiàng)目里程碑決策 (11) 提交變更申請(qǐng) (12) 參與變更審批 (13) 負(fù)責(zé)項(xiàng)目團(tuán)隊(duì)管理 (14) 負(fù)責(zé)項(xiàng)目度量分析 系統(tǒng)架構(gòu)師 (1) 負(fù)責(zé)總體設(shè)計(jì)方案的編制,包括軟硬件開發(fā)技術(shù)選擇,系統(tǒng)架構(gòu),關(guān)鍵技術(shù)攻關(guān)等 (2) 負(fù)責(zé)組織并指導(dǎo)相關(guān)人員對(duì)軟件、硬件、結(jié)構(gòu)、接口、數(shù)據(jù)庫進(jìn)行詳細(xì)設(shè)計(jì) (3) 參與預(yù)研、設(shè)計(jì)及技術(shù)過程產(chǎn)物評(píng)審 (4) 組織軟件工程師進(jìn)行代碼評(píng)審工作 產(chǎn)品經(jīng)理 (1) 負(fù)責(zé)產(chǎn)品定位、產(chǎn)品規(guī)劃和產(chǎn)品演進(jìn) (2) 組織市場(chǎng)和用戶需求調(diào)研及分析 (3) 負(fù)責(zé)可行性分析 (4) 組織產(chǎn)品需求轉(zhuǎn)化 (5) 負(fù)責(zé)產(chǎn)品需求評(píng)審及解讀 (6) 對(duì)需求的優(yōu)先級(jí)別進(jìn)行排序,配合制定項(xiàng)目計(jì)劃 (7) 組織提供需求開發(fā)技能培訓(xùn)、產(chǎn)品需求業(yè)務(wù)培訓(xùn) (8) 負(fù)責(zé)產(chǎn)品版本的正式發(fā)布及培訓(xùn)演示 需求工程師 (1) 負(fù)責(zé)客戶需求調(diào)研及需求分析 (2) 負(fù)責(zé)軟件需求文檔的編寫和更新 (3) 負(fù)責(zé)根據(jù)需求做原型界面設(shè)計(jì) (4) 對(duì)需求的優(yōu)先級(jí)別進(jìn)行排序,配合制定項(xiàng)目計(jì)劃 (5) 組織提供需求開發(fā)技能培訓(xùn)、產(chǎn)品需求業(yè)務(wù)培訓(xùn) (6) 進(jìn)行內(nèi)部演示驗(yàn)收,反饋意見,提出需求新增及變更的申請(qǐng) (7) 負(fù)責(zé)現(xiàn)場(chǎng)客戶的技術(shù)支持和培訓(xùn) (8) 負(fù)責(zé)客戶使用手冊(cè)的編寫和整理 (9) 與產(chǎn)品經(jīng)理的職責(zé)區(qū)別:產(chǎn)品經(jīng)理負(fù)責(zé)客戶需求的調(diào)研、編寫、評(píng)審、解讀以及整體的需求管理和客戶對(duì)接工作,需求工程師直接負(fù)責(zé)具體的軟件需求(產(chǎn)品需求)的調(diào)研、編寫、分析、評(píng)審、解讀,編寫用戶使用手冊(cè)等,后者協(xié)助前者完成其它整體的需求管理工作。 軟件工程師 (1) 負(fù)責(zé)編寫系統(tǒng)設(shè)計(jì)說明書 (2) 負(fù)責(zé)編碼及單元測(cè)試腳本編寫 (3) 參與代碼走查 (4) 負(fù)責(zé)開發(fā)自測(cè) (5) 負(fù)責(zé)缺陷修復(fù) (6) 負(fù)責(zé)安裝維護(hù)手冊(cè)等文檔編寫 (7) 參與項(xiàng)目評(píng)審 測(cè)試工程師 (1) 負(fù)責(zé)測(cè)試方案編制 (2) 負(fù)責(zé)測(cè)試用例編寫 (3) 負(fù)責(zé)測(cè)試執(zhí)行 (4) 負(fù)責(zé)測(cè)試報(bào)告編制 (5) 負(fù)責(zé)缺陷管理 (6) 參與需求跟蹤參與項(xiàng)目評(píng)審 UI工程師(美工) (1) 項(xiàng)目原型效果設(shè)計(jì) (2) 項(xiàng)目視覺原型設(shè)計(jì) (3) 用戶體驗(yàn)優(yōu)化 技術(shù)支持工程師(或者實(shí)施工程師) (1) 參與客戶需求調(diào)研 (2) 協(xié)助完成客戶需求確認(rèn) (3) 客戶支持文檔編制 (4) 客戶使用培訓(xùn) (5) 日??蛻艏夹g(shù)支持(現(xiàn)場(chǎng)或遠(yuǎn)程) (6) 協(xié)助客戶試運(yùn)行 (7) 協(xié)助客戶驗(yàn)收 配置管理工程師 (1) 負(fù)責(zé)配置管理計(jì)劃制定 (2) 負(fù)責(zé)配置庫創(chuàng)建及權(quán)限分配 (3) 負(fù)責(zé)變更控制管理 (4) 負(fù)責(zé)基線建立與跟蹤 質(zhì)量保證工程師 (1) 負(fù)責(zé)QA計(jì)劃制定 (2) 負(fù)責(zé)過程與工作產(chǎn)品檢查 (3) 負(fù)責(zé)QA檢查問題記錄與跟蹤 關(guān)于崗位的選擇,也沒有固定的標(biāo)準(zhǔn),不同的崗位責(zé)任和要求不一樣,有人做了2年實(shí)施,發(fā)現(xiàn)自己不愿意出差不愿意跟客戶打交道,所以轉(zhuǎn)做開發(fā)寫代碼,有人寫代碼寫了幾年,覺得天天對(duì)著電腦,沒啥樂趣,所以申請(qǐng)去做產(chǎn)品經(jīng)理,負(fù)責(zé)項(xiàng)目需求和策劃等。 我本人參加工作后編寫了2年代碼,后面轉(zhuǎn)做產(chǎn)品經(jīng)理折騰了1-2年,感覺也沒做出啥成就來,后面還是去開發(fā)項(xiàng)目經(jīng)理,后面一路這么走,慢慢提高自己。 所以,只有適合自己的崗位才是好的崗位。 四、怎樣學(xué)好軟件開發(fā) 1、鼓勵(lì)自學(xué) 大家從我的從業(yè)經(jīng)歷中也會(huì)體會(huì)到,我是在不斷自學(xué)各類編程語言和工具,首先是讀書期間有老師引進(jìn)了門,以后怎么修行都在我自身,所以鼓勵(lì)大家根據(jù)自己的興趣愛好自學(xué)。當(dāng)然不是盲目的學(xué),是要根據(jù)自身的行業(yè)和工作需要學(xué),要根據(jù)流行發(fā)展趨勢(shì)來學(xué),比如你不能再抱著已經(jīng)過時(shí)的DELPHI工具來學(xué)。 現(xiàn)在網(wǎng)上很多資料和視頻電子教程,遇到好的就收藏起來,慢慢看,主要是因?yàn)槲覀冏鲞@一行,關(guān)系到我們的飯碗,所以逼著自己每周花點(diǎn)時(shí)間去學(xué)去練很有必要。 2、有條件選擇培訓(xùn) 現(xiàn)在各大城市有很多IT培訓(xùn)機(jī)構(gòu),培訓(xùn)JAVA/.net/PHP等編程開發(fā)技術(shù),很多還鼓吹培訓(xùn)后可以獲得高薪,這里說明一下,做軟件開發(fā)這一行是有獲得高薪的,一般都是在BAT、華為等大型公司,他們公司賺了錢,也舍得花錢請(qǐng)厲害的人來做事,從而總體工資獎(jiǎng)金水平比一般的IT企業(yè)高出不少。而在我們?nèi)€城市,做傳統(tǒng)IT也就是一般般的工作,待遇也一般,說白了,企業(yè)賺不到錢,怎么會(huì)給員工發(fā)高工資呢。 參加IT培訓(xùn)的費(fèi)用也比較多,至少一萬多吧,如果你不確定是否愛好這一行,你還是先自學(xué)一下,了解一點(diǎn)點(diǎn)基礎(chǔ)的東西,看看自己有沒有耐心做下去。當(dāng)然了,如果你下了恒心,一定要堅(jiān)持做下去,畢竟大家都是慢慢的在這個(gè)行業(yè)做起來的,不是一步登天的。 我個(gè)人不反對(duì)去參加培訓(xùn)學(xué)習(xí)軟件開發(fā),確實(shí)可以讓一個(gè)門外漢,盡快入門,但也得靠個(gè)人的努力,如果你培訓(xùn)的時(shí)候只是去聽一聽課,不敲代碼不調(diào)試代碼,那你無論如何也學(xué)不好軟件開發(fā)編程。正常的情況是白天上課,晚上敲代碼,做練習(xí),總結(jié)推敲,完成一項(xiàng)一項(xiàng)的小作業(yè),小案例,技術(shù)能力和自信也就慢慢來了,就業(yè)也就不擔(dān)心了。 只有耐心和堅(jiān)持才能做好軟件開發(fā),要少打游戲和少玩手機(jī)。 最后總結(jié)兩句話勉勵(lì)自己: (1)做軟件開發(fā),想說愛你不容易; (2)路漫漫其修遠(yuǎn)兮 吾將上下而求索。 |
|