我眼中的技術地圖


      一晃研究生畢業參加工作也已經8、9年,這些年搞過嵌入式、web開發、移動應用、IT咨詢、項目集成,零零種種到如今也不知是好事還是壞事。今天幾個項目進度不錯,上線的版本問題居然還沒有問題反饋,真是XX都笑歪了。抽下午的時間把自己這些年的技術梳理出來,能力有限,只算是羅列一些點吧(當然只要我列出的,多少是我個人在實際項目中接觸過的),希望能給不管是新入行,還是試圖做轉型的從業者帶來一些幫助。

  大致分為四類,詳見思維導圖:

  • 工程方法領域:

     工程方法領域的積累,其實不僅僅包括軟件產品的開發,它對硬件類,集成類項目都有指導意義。我個人理解這部分的第一個難點就是對需求的描述,從表面上看你需要積累的是如何用用例圖、時序圖、狀態機等方式去描述需求,形成需求規格,從內在看,關鍵在於從不同的角度理解需求,比如站在用戶角度,和站在產品提供的功能角度,這個粒度是不一樣的,需要抽象和總結。

     另外一個點是功能性和非功能性(可能不同的公司會有不同的表述方式),非功能性從可用、可靠、可測試、可服務等角度,看系統需要額外增加的需求,用戶通常只能從功能角度講,最多談到性能。這部分是非常靠積累的,甚至應該建議在部門或公司層面積累,形成類似checklist的指導傳承下去。

     這里我也單獨提到了軟件的設計,主要是理解什么是結構化的設計(比如單片機軟件)和OO的設計,設計模式我覺得可以理解成是一種優秀實踐,多看多用就好。

  • 系統集成領域:

    這個方向主要針對集成類項目,可能軟件研發或互聯網的人員會接觸比較少,大多是諸如智慧園區、智慧醫療、平安城市等項目。在這種項目里軟件只是其中一部分,還包括機房、網絡、專業設備等。這個領域技術層面的積累主要是兩方面,一方面是共性的產品,比如機房里用什么服務器、磁盤陣列、防火牆;網絡的一些專網、內部VLAN的划分,常用的比如視頻監控、門禁的產品等;

    另外一方面就是深入具體業務了,這塊大多屬於售前或咨詢的領域,是個越老越吃香的活,當然也沒那么好轉行業的,靠項目慢慢熬,直到有一天連客戶會問你這塊建議怎么搞、要搞那些的時候,你就牛了。

  • 項目管理領域:

     這里包括集成類項目 和 研發類項目的管理;研發管理根據常用的流程可以分為敏捷和瀑布,這方面作為管理者,重要的是要理解它的各個節點,比如敏捷,各個迭代到底要達成什么樣的要求;比如瀑布,什么時候算需求轉設計,什么時候算設計轉開發,什么時候算開發轉測試,你要能在這些關鍵的里程碑進行管控並基線化;

      另外一方面就是對優秀實踐的引入,舉幾個例子,好比持續集成、站立會議、代碼檢視、測試驅動開發、結對編程等等,你要能根據團隊的實際情況則優而行、量力而行。 

      我只所以把項目管理放在一起,是因為從質量、成本、進度等領域看,項目管理是共同的,但集成項目需要額外在多點要求,比如合同、招投標、驗收等等。

  • 研發領域:

       研發領域梳理我主要針對開發者,分為嵌入式、移動和web三類;(PC端開發暫時不羅列在里面,感覺現在做的人很少了吧:雲計算和大數據考慮其火爆程度,單獨羅列出來)

    • 嵌入式:嵌入式的語言主要是C語言,語言本身積累的點我以為不多,關鍵在於理解和靈活運用指針,包括函數指針,結構體指針;剩下就是平台了,也就是說你在什么操作系統下開發,你要理解其中的進程通信、內存管理、網絡編程、文件管理等特性;作為嵌入式軟件人員還有要積累的是硬件,你可能不會畫單板設計電路,但我個人覺得至少硬件框圖要看得懂,芯片手冊和常用的外圍電路要熟;
    • 移動開發:移動開發這類應用開發,入門簡單,但知識點更新快,很繁瑣;我自己是從幾個角度去整理的,一個是框架本身,比如Android的幾大組件、多線程、存儲等;另一個是UI,說白了就是做界面;這兩部分OK了,你基本也能開始做東西了,其他不管理解如何,都先做起來再說;剩下的除了一些移動端特有的特性,就是框架了。這里的框架也是這些年逐步出現的,我理解是因為移動端的代碼規模也越來越大,所以很多服務端的設計思想,比如IOC、DAO、MVC、MVP也都引入進來。除了原生開發,現在混合架構也越來越流行,這里我覺得關鍵是理解web和原生的交互的原理,然后就是如何能用H5去實現類原生界面;
    • web開發:這部分是大頭,包括前端、后端和數據庫,后端我只是舉了JAVA做例子,個人認為其他語言也類似,即深入理解語言本身,並熟悉其框架。工作時間久了之后,我覺得核心積累的是架構部分,因為現在很多項目都是互聯網類的項目,對性能、高可用要求比較高,你可能一開始不需要做,但要有這方面的准備。但好在現在這些方法也已經很成熟了,特別是有了阿里雲這種平台后,都不需要自己配置優化,你可以直接買類似負載均衡、緩存、讀寫分離等服務,因此關鍵點還是理解其價值;

                順帶要提的是數據庫,我認為現在的主流還是關系型數據庫,nosql應該是利用其特殊的存儲方式在某些領域給與補充,因此對nosql我們更多要關注到底用在什么場景,是真正有價值                 的;

    • 雲計算和大數據:這部分我理解可以分為幾部分,其中IaaS和PaaS應該算是基礎設施的一種形式,只是一個虛的是一台機器,一個虛的是一套完整的運行環境,如果不是專門做這方面的產品,能夠理解其原理就夠了;SaaS我覺得更多的要算一種軟件設計方式,只是其頂層用戶是一個獨立的租戶;Hadoop這些技術包含了分布式計算、列數據庫等等,我實際用到不多,自己覺得更新的也比較快,感覺Hadoop還沒透,什么spark、storm就出來了。。。

PS:

1、我個人參加工作后一直是偏軟件的,因此也是只能站在這個角度看技術全景,當然也一定有很大的局限性,希望各位指正;

2、本來想分領域描述,突然發現工作量不小啊,先把思維導圖放上來,具體的文字描述有時間逐步補充吧:)


免責聲明!

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



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