首頁>科技>

“最浪費時間的事情就是給年輕人講經驗,該走的彎路其實一步也少不了,我們並不是希望大家不走彎路,而是希望大家能夠意識到自己正在走彎路”,這兩句話不是筆者總結的,是咱們這位阿里巴巴技術大咖說的。字面意思淺顯易懂,背後的道理也讓人清晰可見。

作為一個研發人員看到這一段話應該深有感觸,學習了很多技術知識和架構理論,系統問題仍然會出現,只是或多或少或深或淺,重要的是能否意識到自己正處在問題中並主動去解決他,而作為軟體工程本身從誕生到現在雖然發展了幾十年,仍然面臨著前所未有的危機。

軟體工程危機的表現

1、軟體需求基本很難滿足,或軟體生產進度嚴重失控,軟體交付的品質很差,需求方和實施方一直處在矛盾對立面上。

2、軟體的故障率很高,後續的可維護性級差,尤其是專案更換維護人員後出現問題則更加突出。

3、相關文件缺失或嚴重滯後於軟體功能,導致相應功能的使用率和普及度不高,使得軟體功能重複臃腫,越來越難以維護。

4、使用者對軟體的定位越來越模糊,導致軟體呈亞健康狀態發展。

由表及裡,危機的根源是什麼

任何事物都是有兩面性的,一個軟體或一個系統工具的誕生來源於需求,一個好的軟體必是解決了一個或某個方面的核心需要才能發展起來,但成也需求敗也需求。

需求是軟體發展的動力,沒有新需求或需求沒有變化自然是不需要對軟體進行任何改動的,但只要需求有變化就需要對軟體引入變動,只要變動就會帶來風險,甚至是從需求設計、評審、編碼、測試、構建、釋出鏈路的整個環節隨意穿插,改變軟體時間軸的時間,任意踐踏規範。

這個時候就是考驗軟體架構師和研發實施人員能力的地方了,一旦基本功不紮實,就會出現連環事故,導致天不時、地不利、人也不和,而在這個時候一個好的架構師能夠設計和重構出一個好系統,而一個差勁的架構師則可以毀掉一個好系統。

問題提出來了,怎麼解決?

第一:合理的組織管理

第二:清晰的軟體發展戰略

第三:規範的流程與程式碼規範

第四:優良的系統架構設計

第五:適時地重構

上面五項解決方法中,合理的組織管理、清晰的軟體發展戰略是在公司或企業管理層面進行優化的,只要方向明確,目的清晰就可以及時優化;(PS:其實作為研發人員對這兩項影響不大),規範的流程按照軟體的交付節奏並根據實際業務選擇下面其一即可:

1、原型模式:快速交付可用最小版本,認可後快速迭代繼續優化

2、敏捷開發:分階段、分批次、迭代式地實現需求,強調信任、協作、互動、擁抱變化。

下圖是阿里、騰訊、百度、京東等大型網際網路公司常用的敏捷開發流程規範,供大家參考(首次分享):

3、瀑布式:需要非常完善的產品市場分析、需求分析、特性分析,形成產品概要設計、詳細設計、需求評審、編碼、聯調、測試、運維實施等流程。

程式碼規範無論是以哪一種標準為參考,只要大家遵守一套標準即可,如果沒有可以參考《阿里巴巴Java開發手冊》。

而優良的系統架構設計則凸顯了架構師的能力,但“架構師”並非是一個明確的崗位,因為架構本身沒有明確的對與錯,只有因地制宜的架構設計,架構更多的是一種能力的體現,是所有研發人員或多或少都應該具有的能力,是在研發團隊中具有系統把控力的大師,而近些年來,“架構師”被玩壞了:

1、有些架構師只會花框,缺乏實際程式設計的能力

2、有些架構師只會分任務,缺乏系統解耦的能力

3、有些架構師只會催任務,缺乏風險判斷的能力

4、有些架構師只會PPT,缺乏業務洞察的能力

上面這四點並不是擁有左邊的能力就不好,而是擁有了右邊的能力才會發揮架構真正的魅力。

阿里大咖深入解讀系統重構之道

作為軟體危機解決方法最後一項的重構,對於軟體一直是合理存在的,從程式碼的角度來說,好程式碼不是寫出來的,而是改出來的。一個穩定而龐大的系統不是架構出來的,而是重構出來的。

只要系統架構設計出來,就一直在重新架構的路上,重構既要解決過去的問題,也要解決現在的問題,還能適度的解決未來的問題,但是一味地解決未來的問題,會使系統的風險、成本劇烈上升,所以系統架構是一種平衡的過程,而重構是合理的,因為:

第一:使用者規模不斷的擴大

第二:固有使用者的自我進化

第三:商業競爭的殘酷性

第四:技術棧的更新迭代

第五:研發團隊的自身因素

以上種種都是從架構設計到架構實現再到重構都會現實面對的問題,這就給架構師和即將走向架構之路的研發人員提出了很多挑戰。

2019雲棲大會:聽阿里技術大咖解讀軟體工程危機與系統重構之道

《阿里巴巴Java開發手冊》、《碼出高效》作者

阿里巴巴集團高階架構師 / 集團程式碼平臺負責人孤盡老師

現場解讀軟體工程危機與系統重構之道

那麼如何成為一名優秀的架構師並獲得百萬年薪 ?

通過阿里大咖的分享和解讀,想要成為一名優秀的架構師,需要通過以下功法的訓練,來達到目標:

第一項訓練精準訓練和掌握程式設計之道程式設計核心思維

不是所有的技術都是時間累積可以實現提升的,也不是所有的技術都是反覆流水線一樣的重複就可以提升。一旦陷入了程式碼搬磚模式,你不僅勞心費神,工作效率低下,而且無法滿足公司的產品需求。

在這一項訓練中,將訓練你掌握什麼樣的程式設計思維,什麼樣的分析和解決問題的方法可以讓你工作效率大幅度提升。演算法、資料結構、設計模式這些基礎內功不僅僅能提升你的邏輯思維和底層架構能力,還能在面試和筆試中幫你加很多分。

第二項訓練系統化訓練和掌握系統架構設計思想和方法

這個世界上沒有最好的系統架構設計,只有最適合的系統架構設計,但是否能設計出適合業務發展需要的系統架構,這就需要系統化的掌握架構設計的能力,在這個部分,將從一下幾個部分對架構設計能力進行強化訓練

1、系統架構的目標:高可用性、高可擴充套件性、低成本、多快好省;

2、系統架構的原則:單一原則、DID原則、N+1原則、功能可開關、版本可回退等;

3、架構設計組成的關鍵點:業務架構、應用架構、資料架構、技術架構;

4、系統架構設計的演進方式;

5、在資源有限的情況下如何進行架構設計;

6、系統架構設計如何和專案管理進行關聯並取得相應的平衡。

第三項訓練結合企業真實場景,自己獨立設計一套系統架構並進行架構演進

可能你之前也了解過一些系統架構知識,也知道系統架構的一些關鍵事項,但看的再多都不如從實踐中獲得真知。這部分講根據企業的真實業務場景訓練大家從業務架構、應用架構、資料架構、技術架構這幾個方面進行入手,全面掌握系統架構的能力,主要從以下幾個方面進行強化訓練:

1、系統業務服務設計、隔離、基礎服務下沉;

2、系統資料模型、資料物件的設計、資料表設計、資料庫應用架構設計;

3、研發程式碼架構及系統分層和介面服務設計;

4、服務一致性設計、以及中介軟體選型和應用:

5、系統快取架構設計;

6、各服務系統快取服務設計;

7、系統自動化運維部署架構設計;

8、系統防止惡意攻擊的預案設計等。

第四項訓練深入架構進行各個環節的功能程式碼及部署實現

對於系統架構師,不僅能運籌帷幄設計系統整體的架構和系統演進路線,更能夠實現具體的業務功能程式碼和服務部署,否則架構中存在的問題就無法提前預知和規避了,在這個部分將訓練對具體業務實施和中介軟體使用的能力,確保遇到具體技術問題也能夠及時有效的解決,這裡將對以下架構中需要使用到的中介軟體和具體技術進行掌握:

1、資料庫讀寫分離、資料庫索引及資料庫執行調優

2、Maven使用、Nginx負載均衡、CDN使用

3、Quartz、訊息佇列RabbitMQ、Redis叢集、Solr搜尋引擎叢集、zookeeper、Docker+Jenkins

4、域名HTTPS安全證書安裝、Jemter等中介軟體的掌握和使用。

第五項訓練刻意練習,提升綜合能力

技術人員的綜合提升,不是僅僅完成現有的工作,一遍遍的重複,這樣很容易陷入低水平重複的誤區,還應該刻意做一些訓練。將對以下方面進行【刻意練習】,不斷突破自己的舒適區,提升自己綜合能力,在職場上進步。

【刻意練習1】程式碼:每個人必須要多學多練、多敲程式碼,經常對感興趣的開源專案程式碼進行review。

【刻意練習2】寫作:每週一篇技術週報、總結近一週自己的工作學習所獲,寫文章是梳理技術知識的最佳途徑。

【刻意練習3】講解:很多人職場上受限的原因是因為不夠open ,無法表達自己的思路,進而就無法跟優秀的人交流,這個往往是技術人員經常忽略的地方,需要不斷和周邊的人進行分享交流。

結合上面的五項訓練並嚴格執行,就一定能夠向一名優秀的架構師成功的邁出一大步。為了讓大家快速系統的掌握BAT這些一線企業的核心架構能力,擁有更大的發展空間,因此我們將打造全國獨一無二的Java高階架構師專案解決方案成長訓練營。幫助想要成為架構師的你。

看到這裡,想必你已經迫不及待地想報名參加了吧,別急!

在向你透露具體的報名程式之前,你必須知道,《Java高階架構師商業專案解決方案成長營 》計劃不會向所有人開放,參與者必須符合以下條件:

1、你必須熱愛程式設計,並具備奮鬥者精神;

2、你必須擁有1年以上的Java開發工作或學習經驗;

3、你必須願意每週投入10小時以上進行學習和實踐;

4、你必須具有很強的執行力,願意聽從我的建議,和成長營隊友一起成長;

5、你每週必須寫一篇學習或工作的技術文章(方向不限);

6、你必須有強烈的加薪加薪10萬-20萬以上以上以及升職的動力和願望。

最新評論
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 2019中國移動網際網路“夜間經濟”報告:夜間使用者活躍高孕育大商機