從業十餘年回眸總結:做軟體開發,想說愛你不容易

我所在的中部三線城市有很多剛畢業的大學生受到互聯網各種廣告宣傳和培訓機構的影響,想學Java編程,大數據應用,以後做軟件開發,也有很多年輕人問我哪個培訓機構口碑好,就業好,本人根據自己10餘年的軟件開發從業經驗,跟大家分享下從事軟件開發職業的選擇和發展問題,怎麼樣的人適合做軟件開發,怎麼才能做好軟件開發。

一、個人從業經歷

1、讀書時期

我是千禧年千軍萬馬過獨木橋考上了大學(具體是哪一年,大家可以百度),專業是信息管理與信息系統,當時是比較吃香的“萬金油”專業。我們學了一些與計算機軟件相關的課程,比如操作系統、數據結構、數據庫系統原理、C語言這些基礎課程。

大學裡面老師普遍沒在企業上過班,缺乏實操經驗,所以講的課程不深入,大家學得也是雲裡霧裡,估計現在也大致是這樣的。

我們同學當時覺得理論課程學的心裡都沒底,所以好多熱衷於動手操作,那時候大二花了大價錢買了一個臺式機,要四千多,相當於現在八九千的東西,記得還裝了金山打字通練習打字,學盲打,當然也裝了侍魂、cs等遊戲軟件玩過。

後面在大三大四的時候有個課程叫信息系統分析與設計,需要做大作業,我們自學了一點VB6.0、DELPHI 6、ASP、還有MS SQL Server 2000數據庫。當時DELPHI這個C/S結構的編程工具比較流行,做GUI的界面開發非常快,所以用它做了蠻多小案例。

後面辛苦了半年考上研讀研,渾渾噩噩過了2年多,自學了一點點Java和JSP,那時候Java是JDK1.4,JDK1.5的版本,看了一些相關的軟件工程書籍,編程水平感覺沒有大的提升。期間用JSP和SQLSERVER2000給學校檔案館做了一個畢業生檔案轉遞管理系統,用最原始的記事本寫代碼,命令行編譯執行,賺了點生活費。

從業十餘年回眸總結:做軟件開發,想說愛你不容易

2、工作前幾年

參加工作後,先後在國企、私企等單位做過開發工程師、研發項目經理、技術經理、研發經理等職位。

工作前兩年還用Delphi開發過進銷存系統,用ASP做過網頁,也做過一點.net的項目。不過慢慢的Delphi、ASP都被淘汰了,沒人用了,.net後面也漸漸用的人越來越少。後面主要使用Java做開發,J2EE很流行。工作過程中也學會使用開發工具比如Eclipse、MyEClipse2008,使用了Java開發框架Struts1.1,SSH等。

做運營商的系統開發運維時也接觸了Unix和linux操作系統以及Oracle數據庫,這時候才感覺自己稍微學到了一點東西,有了點技術。

不過,很多時候都是現學現賣,沒有辦法,工作過程中需要什麼就學什麼,只有這樣才能一路走下來。比如之前公司要搞一個醫療器械進銷存產品來賣,從重慶的公司買了一個PB的進銷存軟件讓我來修改和維護,雖然沒搞過PB,我還是硬著頭皮買了一本PB的書,邊學PB邊改程序,改好了打包成了公司自己的產品。

2014年左右是移動互聯網爆發的時候,那時候可謂是全民要搞APP,開始流行互聯網創業,到處都是要找做安卓和IOS的工程師,做安卓和IOS的工程師工資也很高。當時我的工作沒有要求做APP開發,但是還是逼著自己安裝了ADT插件和Genymotion模擬器一步一步調試代碼,花了大半年業餘時間學會了安卓開發,現在在工作中也用到了。

3、現在與未來

現在的公司主要是使用SSM開發框架,數據庫一般選擇MySQL,APP開發有用安卓做的,也有用基於H5的Web APP開發方式。基於H5的可以兼容打包為安卓APP和IOS APP。我們選擇的是HBuilder開發工具,已經用了快三年了,有了好多款APP應用上架發佈。

目前比較流行微服務架構,所以我也在自學Spring Boot和Spring Cloud,下載了STS工具有時間就看著電子書邊敲代碼,而且Java 8已經成為了主流,所以Java8有很多之前版本沒有的特性,如方法引用、流API操作、Lambda表達式、函數接口,也在自學和掌握中,在不久的工作和項目中可能會馬上使用。

所以,做軟件開發,學習的路途上任重而道遠。

二、是否選擇做軟件開發

軟件開發行業作為一類職業,沒有好與壞之分,只有適合不適合自己,自己願意不願意堅持做這一行。我的大學同學中有90%最後沒有做軟件開發這一行,剩下的幾個人一直做這一行也做得不錯,畢竟這一行雖然加班多,技術更新快,但是工資待遇還是不錯的,買房買車都完成了。

也有同學做了幾年軟件開發,比如用ASP寫程序寫了幾年,後面轉行去做銷售或者公務員了,因為技術更新太快,沒更新自己的技術技能,過兩年就可能很難找到適合自己的工作崗位了,無奈只能轉行。最讓我覺得不敢相信的是我大學宿舍的下鋪,他讀書時技術學的不錯,編寫代碼的動手能力也很強,但是畢業後沒有選擇做軟件開發,一直做化工產品的銷售,現在在廣州也做得不錯,所以說職業選擇很難說。

也有人說做軟件開發是吃青春飯,到了35歲就要轉行了,很多網上都有這種吐槽討論,我個人認為這也不全對,其實這也是一個正常的技術和能力更新的問題,35歲了會要求工資待遇高,還要照顧家庭小孩,不能加班多,如果能力和精力匹配不了崗位要求,自然會慢慢適應不了,其他行業也是如此。

我個人在工作中發現,每個IT企業對於優秀的研發項目經理都是稀缺的,即懂技術,又能跟客戶和領導溝通,還會寫文檔,帶團隊,寫代碼也比較溜,這類人才只有上了30多歲的年紀才能具備,為什麼我們不能成為這樣的人才呢?

三、軟件開發的崗位選擇

有些人認為,軟件開發行業就是做代碼開發,其實不然,還有很多相關的角色崗位,就拿代碼開發來說如果細分還分為前端開發、後臺開發、數據庫開發、APP開發等,只是一般小公司為了節約人力成本,不會分那麼細而已,他們需要的是啥都會的全棧工程師。根據CMMI的標準,我大致羅列一下軟件開發行業的崗位角色供大家參考。

研發經理

(1)負責技術產品的規劃管理, 團隊建設

(2)負責立項審批、總體計劃審批

(2) 負責項目里程碑決策

(3) 負責變更審批

(4) 負責詳細計劃審批

(5) 參與設計評審

研發項目經理

(1) 負責立項申請

(2) 負責總體計劃編制

(3) 負責詳細計劃編制

(4) 負責里程碑/階段總結

(5) 負責項目監控、風險識別與跟蹤

(6) 組織及參與項目評審

(7) 協助客戶試運行

(8) 負責客戶總體驗收

(9) 負責項目資料移交

(10) 組織項目里程碑決策

(11) 提交變更申請

(12) 參與變更審批

(13) 負責項目團隊管理

(14) 負責項目度量分析

系統架構師

(1) 負責總體設計方案的編制,包括軟硬件開發技術選擇,系統架構,關鍵技術攻關等

(2) 負責組織並指導相關人員對軟件、硬件、結構、接口、數據庫進行詳細設計

(3) 參與預研、設計及技術過程產物評審

(4) 組織軟件工程師進行代碼評審工作

產品經理

(1) 負責產品定位、產品規劃和產品演進

(2) 組織市場和用戶需求調研及分析

(3) 負責可行性分析

(4) 組織產品需求轉化

(5) 負責產品需求評審及解讀

(6) 對需求的優先級別進行排序,配合制定項目計劃

(7) 組織提供需求開發技能培訓、產品需求業務培訓

(8) 負責產品版本的正式發佈及培訓演示

需求工程師

(1) 負責客戶需求調研及需求分析

(2) 負責軟件需求文檔的編寫和更新

(3) 負責根據需求做原型界面設計

(4) 對需求的優先級別進行排序,配合制定項目計劃

(5) 組織提供需求開發技能培訓、產品需求業務培訓

(6) 進行內部演示驗收,反饋意見,提出需求新增及變更的申請

(7) 負責現場客戶的技術支持和培訓

(8) 負責客戶使用手冊的編寫和整理

(9) 與產品經理的職責區別:產品經理負責客戶需求的調研、編寫、評審、解讀以及整體的需求管理和客戶對接工作,需求工程師直接負責具體的軟件需求(產品需求)的調研、編寫、分析、評審、解讀,編寫用戶使用手冊等,後者協助前者完成其它整體的需求管理工作。

軟件工程師

(3) 參與代碼走查

(4) 負責開發自測

(5) 負責缺陷修復

(6) 負責安裝維護手冊等文檔編寫

(7) 參與項目評審

測試工程師

(1) 負責測試方案編制

(2) 負責測試用例編寫

(3) 負責測試執行

(4) 負責測試報告編制

(5) 負責缺陷管理

(6) 參與需求跟蹤參與項目評審

UI工程師(美工)

(1) 項目原型效果設計

(2) 項目視覺原型設計

(3) 用戶體驗優化

技術支持工程師(或者實施工程師)

(1) 參與客戶需求調研

(2) 協助完成客戶需求確認

(3) 客戶支持文檔編制

(4) 客戶使用培訓

(5) 日常客戶技術支持(現場或遠程)

(6) 協助客戶試運行

(7) 協助客戶驗收

配置管理工程師

(1) 負責配置管理計劃制定

(2) 負責配置庫創建及權限分配

(3) 負責變更控制管理

(4) 負責基線建立與跟蹤

質量保證工程師

(1) 負責QA計劃制定

(2) 負責過程與工作產品檢查

(3) 負責QA檢查問題記錄與跟蹤

關於崗位的選擇,也沒有固定的標準,不同的崗位責任和要求不一樣,有人做了2年實施,發現自己不願意出差不願意跟客戶打交道,所以轉做開發寫代碼,有人寫代碼寫了幾年,覺得天天對著電腦,沒啥樂趣,所以申請去做產品經理,負責項目需求和策劃等。

我本人參加工作後編寫了2年代碼,後面轉做產品經理折騰了1-2年,感覺也沒做出啥成就來,後面還是去開發項目經理,後面一路這麼走,慢慢提高自己。

所以,只有適合自己的崗位才是好的崗位。

四、怎樣學好軟件開發

1、鼓勵自學

大家從我的從業經歷中也會體會到,我是在不斷自學各類編程語言和工具,首先是讀書期間有老師引進了門,以後怎麼修行都在我自身,所以鼓勵大家根據自己的興趣愛好自學。當然不是盲目的學,是要根據自身的行業和工作需要學,要根據流行發展趨勢來學,比如你不能再抱著已經過時的DELPHI工具來學。

現在網上很多資料和視頻電子教程,遇到好的就收藏起來,慢慢看,主要是因為我們做這一行,關係到我們的飯碗,所以逼著自己每週花點時間去學去練很有必要。

2、有條件選擇培訓

現在各大城市有很多IT培訓機構,培訓JAVA/.net/PHP等編程開發技術,很多還鼓吹培訓後可以獲得高薪,這裡說明一下,做軟件開發這一行是有獲得高薪的,一般都是在BAT、華為等大型公司,他們公司賺了錢,也捨得花錢請厲害的人來做事,從而總體工資獎金水平比一般的IT企業高出不少。而在我們三線城市,做傳統IT也就是一般般的工作,待遇也一般,說白了,企業賺不到錢,怎麼會給員工發高工資呢。

參加IT培訓的費用也比較多,至少一萬多吧,如果你不確定是否愛好這一行,你還是先自學一下,瞭解一點點基礎的東西,看看自己有沒有耐心做下去。當然了,如果你下了恆心,一定要堅持做下去,畢竟大家都是慢慢的在這個行業做起來的,不是一步登天的。

我個人不反對去參加培訓學習軟件開發,確實可以讓一個門外漢,儘快入門,但也得靠個人的努力,如果你培訓的時候只是去聽一聽課,不敲代碼不調試代碼,那你無論如何也學不好軟件開發編程。正常的情況是白天上課,晚上敲代碼,做練習,總結推敲,完成一項一項的小作業,小案例,技術能力和自信也就慢慢來了,就業也就不擔心了。

只有耐心和堅持才能做好軟件開發,要少打遊戲和少玩手機。

最後總結兩句話勉勵自己:

(1)做軟件開發,想說愛你不容易;

(2)路漫漫其修遠兮 吾將上下而求索。


分享到:


相關文章: