在通信設備商工作那幾年技術上的得與失


本人碩士畢業后的頭幾年是主要在通信設備商(他們研發生產通信設備(如基站)賣給電信運營商(如中國移動))工作,那時是通信業的黃金十年,單是通信設備商就有很多家,國內有華為、中興、大唐、烽火等,國外有愛立信、諾基亞、西門子、摩托羅拉、朗訊、北電、阿爾卡特等。這里面的有些公司現在剛畢業的可能都沒聽說過,因為它們要么被兼並要么倒閉了,這要“歸功”於華為(是華為打的他們無還手之力導致要么兼並要么倒閉的)。現在這個領域主要有四個玩家了,國內的華為和中興,國外的愛立信和諾基亞。這個諾基亞跟手機領域的諾基亞當年可以說是兄弟關系,是諾基亞公司的兩大業務:手機(通信終端)和通信設備。后來諾基亞把手機賣給了微軟,通信設備就成了諾基亞的主營業務了。現今的諾基亞可以說是多家通信設備商的綜合體,包括諾基亞、西門子、朗訊、阿爾卡特、北電、摩托羅拉,即這么多家最后並成了一家叫諾基亞。上面說了那時是通信業的黃金十年,同時外企明顯強於國內公司,是畢業生眼里的香餑餑,很多畢業生都進了外企,其中不乏相當優秀的。這跟現在完全不一樣了,現在是移動互聯網的黃金時代,畢業生都想進移動互聯網公司。這也很正常,大家都想進處於黃金時期的行業。我就在那時進入了一家外資背景的通信設備商,做媒體網關(media gateway)上的語音軟件開發,從剛開始的啥都不會要人帶到后來的我帶別人。做了幾年后由於我們這個產品的開發要transfer到其他site,我要去做其他領域軟件開發。當時覺得前面幾年的積累用不上太可惜了,也就不太願意做其他領域開發,於是就換了公司,到一家芯片公司繼續做音頻相關的開發。這么多年過去了,現在想想當時出來是正確的,通信設備商的黃金時代早已過去,人不能逆趨勢而行。今天就聊聊我在那段時間技術上的得與失。

 

先說得吧。好多做技術的前一兩份工作就決定了自己的技術方向,我也是這樣。進入通信設備商做媒體網關上的語音軟件開發,而且一做就是幾年,這就決定了我的技術方向是音頻相關。直到現在我仍然做着音頻相關的工作,只不過現在音頻知識面更廣了,做的東西難度更大了。如果后面還在做技術,我想還會是音頻相關。所以這第一得就是得到了我的技術方向。我是學自動化(控制理論和控制工程)出身,而音頻屬於信號處理。記得剛進公司的時候聽着周圍人講的術語基本都不懂,覺得自己好弱。一聽到不懂的就記下來,下班后回家到百度上搜(那時公司里只有部分人能上網,我作為一個新人肯定沒有上網的權限)。老大交待的任務完成后就主動要求做新的任務,好使自己快速上手。經過一段適應期后,我可以很好的跟大家討論技術問題了。就這樣從剛開始的什么都不懂到后來通過做不同產品形態上的音頻開發掌握了除算法(算法主要是理解基本原理,然后去優化使用)之外的絕大多數的音頻知識。做音頻技術的相對偏冷門,做的人不多,我能堅持下來,並且一做就是這么多年,我也挺佩服自己的,哈哈。

 

這第二得是得到了較為全面的語音通信知識。整個通信網絡分為通信終端(用戶)、接入網和核心網,大意如下圖:

 

通信設備商一般做接入網和核心網(剛開始時一些通信設備商連通信終端都做,后來陸陸續續的把通信終端賣掉了,專心做通信設備,比如阿爾卡特和西門子),而在接入網和核心網里都有好多網元,一般一個網元都有一個具體的產品部門做。做開發的除了關注自己開發的網元內部實現外,還要關注與之交互的其他網元的行為,如果沒有興趣一般就不會關注整個通信網絡的架構了。我除了關注自己開發的以及與之交互的,對整個通信網絡也十分有興趣,想知道整個通信過程是如何進行的,比如兩個手機之間打電話,信令是怎么交互的,語音數據是怎樣從手機經過接入網核心網傳輸給對方手機的。公司除了有產品部門外還有整體解決方案部門,他們不做具體開發,關注網絡整體方案,同時還要負責對外交流,告訴客戶公司的從接入網到核心網的整體一攬子方案是什么。這種部門一般會寫很多關於網絡或解決方案之類的PPT,他們也會把這種PPT放在公司內網上供內部員工學習交流。我在公司的中后期正處於3G研發已成熟剛開始布網(國內上3G比國外遲了好幾年)同時4G(LTE)已開始研發的階段。我就從內網上找到一些關於通信網絡架構的PPT學習,先學習了3G的接入網和核心網有哪些網元它們之間從控制面到數據面是如何交互的,后來重點放在了4G的網絡架構上。4G是一個全IP的網絡,即全是PS域(Packet SwitchedDomain,分組域)不再有CS域(Circuit SwitchedDomain,電路域)。接入網從3G時代的兩個網元(分別是RNC和NodeB,RNC負責控制面,NodeB負責用戶面)演進到只有一個網元(eNodeB,控制面和用戶面都在eNodeB上處理)。核心網演進到EPC(Evolved Packet Core)。為了實現全IP下的語音通信,提出了VoLTE(Voice over LTE)的概念,通話雙方都有4G網絡時就用VoLTE通話,否則就回落到2/3G網絡在傳統CS域通話。VoLTE實質上也是VoIP,在終端上對語音數據編碼后碼流也用RTP/UDP打包。跟固網的VoIP相比,主要是網絡承載不一樣,固網是以以太網(ethernet)為承載,而VoLTE從終端到接入網是無線承載。語音通信時在核心網會用到IMS(IP Muitimedia Sub-system, IP多媒體子系統)。我當時做的媒體網關屬於核心網網元,剛開始時屬於NGN(Next Generation Network,下一代網絡)下的一個網元。隨着IMS的提出,NGN的概念慢慢淡化,媒體網關就成了IMS下的一個網元。就這樣利用零散時間的學習,逐漸的掌握了整個通信網絡的架構,尤其是語音通信方面的。

 

通信設備商都是大公司,做事風格上都會講流程,相對正規些。在這樣的環境下工作了幾年,個人覺得也養成了相對良好的工作習慣,這是我的第三得。軟件工程師的日常工作有設計、寫代碼、調試、解bug等。當時在軟件設計階段一定要寫設計文檔,還要開會review,確保在設計階段盡最大可能想明白想清楚,然后再去寫代碼,不允許返工,因為越到后面返工的代價越大。我做了那么多feature,沒有一個返工的,周圍同事也是如此。后來在其他公司工作,我也是先盡最大可能想清楚然后再寫代碼,只是由於公司的風格不同,有時候就不再寫設計文檔了。在編碼階段,遵循部門制定的coding rule,有注釋方便他人閱讀,在關鍵處有log,方便后面調試。代碼寫完后還要給他人review,再后來就是自測,根據自己設計的測試用例測試,發現bug並fix掉。最后是給測試人員測並做bugfix。測試人員設計的測試用例會更復雜綜合些,如果測試人員發現了一些簡單的bug說明自測沒做好,這會影響到年底的KPI,所以那時大家的自測做的都是不錯的。

 

以上主要是三得。再來說說失吧。這第一失就是失去了在二十幾歲的黃金時間做相對核心技術的機會。碩士畢業已經二十五六歲,剛從學校出來沒多久,基礎理論知識還在,可以做相對核心一點的技術,比如做算法。再加上二十幾歲,精力旺盛,又單身,一人吃飽,全家不愁,可以把全部的精力放在工作上。哪像現在,有老有小,雖然老的目前不需要自己花什么精力,但是小的花了好多精力,不管是剛出生時的帶娃還是大一點后的教育,都是很花精力的,尤其在教育上,由於忙而忽視小孩的教育,以后會后悔的。我想工作多年且家里有小孩的肯定有同感。我那時雖然是做語音開發,但是解決方案是芯片供應商做的,我們只是調提供的API(或者說我們只是做適配層),具體的實現對我們是黑盒子,我們是不清楚的。當我從通信設備商出來進芯片公司做voice engine的時候已經三十出頭,學校里學的那些基礎理論知識已經忘了好多了。前面說過我是學自動控制出身,信號處理只是學了一下應付了考試,學的不精通,現在做的是音頻,算法就是信號處理方面的。畢業多年后再把信號處理理論知識拾回來難度是特別大的,我最終還是選擇了做工程。我想如果畢業一出來就做算法,尤其是做控制上的算法,是能做的(我在讀碩士期間就做的控制算法的具體實現)。這跟大環境有關,當時是通信熱,碩士班上的同學絕大多數都去做通信了;外資熱,同學們以進入外資公司為榮。當時的外資通信設備商在國內都設有研發中心,但做的都不是核心技術,甚至有的很弱。現在想想好多985甚至C9的畢業生都去做這些有點弱的技術,是對中國人才的一種浪費。我當時做的媒體網關是從國外的研發中心transfer到國內的,除了系統設計和部分測試在海外做,開發等都是在國內做,已經算是不錯的了。即使是內資公司,當時除了華為中興真正做核心開發的也沒幾家。

 

這第二失是失去了做更多東西的機會。當時公司非常注重流程。就拿開發一個feature來說吧,先需求分析、軟件設計、測試用例設計,然后寫代碼、自測並且bugfix,再后給測試人員測試同時bugfix。做了四五家公司,我覺得做軟件開發流程是要的,但是不能太拘泥於流程,不然效率偏低。就以寫文檔為例,要寫的文檔有設計文檔、測試用例文檔。我覺得模塊設計和復雜的feature一定要寫設計文檔,一些簡單的feature就沒必要寫文檔,認認真真想一想怎么做,然后大家討論一下就可以寫代碼了。現在想想那時花兩個月做一個feature,現在兩三個星期肯定能搞定了。再說當時寫的那些文檔,除了系統架構設計模塊設計,那些小feature的文檔事后基本上是沒人看的,花了那么多時間寫些事后基本沒人看的文檔真是浪費,還不如做快些,讓項目早完成,早交付給客戶。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM