我眼中的技術地圖

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

  大體分爲四類,詳見思惟導圖:web

  • 工程方法領域:

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

     另一個點是功能性和非功能性(可能不一樣的公司會有不一樣的表述方式),非功能性從可用、可靠、可測試、可服務等角度,看系統須要額外增長的需求,用戶一般只能從功能角度講,最多談到性能。這部分是很是靠積累的,甚至應該建議在部門或公司層面積累,造成相似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:

一、我我的參加工做後一直是偏軟件的,所以也是隻能站在這個角度看技術全景,固然也必定有很大的侷限性,但願各位指正;

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

相關文章
相關標籤/搜索