- 程序員必讀之軟件架構
- (英)Simon Brown
- 1352字
- 2020-05-06 16:48:12
第17章 未來的軟件架構師在哪里
敏捷和軟件技藝是我們努力改進和推動軟件行業(yè)向前的兩個非常好的例子。我們花了很多時間談論編寫代碼、自動化測試、自動化部署、工具、各種技術,以及所有相關的流程。這很有意義,因為最終目標是通過軟件讓人們獲益,而可用的軟件是關鍵。但我們不應該忘記,在軟件開發(fā)的流程中某些層面是很少有人真正有經(jīng)驗的。想想你將如何回答下列問題。
(1) 你上次寫代碼是什么時候?
? 今天早些時候就寫過,我是軟件開發(fā)者,所以這是我工作的一部分。
(2) 你上次重構是什么時候?
? 我一直注意讓自己的代碼盡可能好,這包括必要的重構。提取方法、重命名、上升、下降……這些我都知道。
(3) 你上次測試你的代碼是什么時候?
? 過去,我們會在編寫產(chǎn)品代碼的過程當中或之后編寫自動化測試,來進行持續(xù)的測試。單元測試、集成測試和驗收測試我們都會用到。
(4) 你上次設計東西是什么時候?
? 我一直在做,作為軟件開發(fā)者,這是我工作的一部分。在編碼之前,我需要思考它會如何工作,不管是畫草圖還是使用TDD。
(5) 你上次從零開始設計一個軟件系統(tǒng)是什么時候?我的意思是,承接一系列明確的需求,真正從無到有的創(chuàng)建?
? 好吧,在我目前的項目沒有太多機會,但在業(yè)余時間我會為開源項目工作。只是我自己用的。
(6) 你上次從零開始設計一個會由一個團隊來實現(xiàn)的軟件系統(tǒng)是什么時候?
? 嗯,那不是我做的。
面對現(xiàn)實吧,無論預先設計還是演化設計,也不管是單打獨斗還是集團作戰(zhàn),大多數(shù)軟件開發(fā)者都不會頻繁地在一張白紙上從無到有地設計軟件。
指導、輔導和師徒關系
在大多數(shù)軟件開發(fā)項目中,指導和輔導是一項被忽視的活動,很多團隊成員沒有得到所需的支持。技術領導力就是要引導整個項目,有時候個人需要協(xié)助。除此之外,指導和輔導提供了一種方式來增強人們的技能,幫助他們完善自己的職業(yè)生涯。這種協(xié)助有時候是技術性的,有時候是軟技能。從技術的角度來看,為什么承擔軟件架構角色的人不應該幫著指導和輔導呢?我認識的大多數(shù)架構師正是因為他們在一個或多個技術領域有大量的經(jīng)驗才當上架構師的。既然是這樣,為什么那些架構師不應該通過分享一些自己的經(jīng)驗來幫助別人?學徒模式正是過去建造大師傳承技藝的方式。
我們正在失去技術導師
可悲的是,在我們的行業(yè)里許多開發(fā)者為了在企業(yè)晉升機制中有所發(fā)展,被迫轉(zhuǎn)向非技術的管理崗位。諷刺的是,被迫離開技術崗位的往往是最優(yōu)秀和最資深的技術人員,而軟件團隊中則失去了最有價值的技術領導、架構師和導師。今天的開發(fā)者還會在將來繼續(xù)重蹈覆轍。
軟件團隊需要休息
許多團隊失去了最資深的技術人員,留在團隊中的人本來就已經(jīng)在盡力平衡所有常規(guī)的項目限制和IT行業(yè)風潮(敏捷、技藝、云、富互聯(lián)網(wǎng)UI、函數(shù)式編程,等等)帶來的壓力,而這又給他們增加了更多的工作量。很多團隊意識到他們應該努力提高,但卻沒有時間或缺乏動力。
為了提高,軟件開發(fā)團隊需要一些時間遠離日常工作,進行思考,但他們也需要保持對軟件開發(fā)流程各個方面的關注。行業(yè)的炒作確實很容易迷惑人,但應該自問這是否比確保能良好務實地落地更重要。
編碼經(jīng)驗很容易積累,有很多方式來練習這項技能。然而,從頭開始設計一些將會由團隊來實現(xiàn)的東西,就不是很多團隊都會教授或?qū)嵺`的事情了。拜典型的企業(yè)晉升機制所賜,很多技術導師都消失了,讓開發(fā)者上哪兒去獲得這種經(jīng)驗?未來的軟件架構師從哪里來?
- 一線架構師實踐指南
- 深度學習訓練營 21天實戰(zhàn)TensorFlow+Keras+scikit-learn
- Android游戲開發(fā)大全
- Python與數(shù)據(jù)挖掘
- Cadence系統(tǒng)級封裝設計:Allegro SiP/APD設計指南
- 解決方案架構師修煉之道(原書第2版)
- Spring Cloud Alibaba大型微服務架構項目實戰(zhàn)(上冊)
- 自己動手構造編譯系統(tǒng):編譯、匯編與鏈接
- 多面體編譯理論與深度學習實踐
- 內(nèi)容理解:技術、算法與實踐
- TensorFlow+Android經(jīng)典模型從理論到實戰(zhàn)(微課視頻版)
- Spring Cloud微服務快速上手
- Kubernetes Operator開發(fā)進階
- 實時分析實戰(zhàn):構建實時流處理應用和分析系統(tǒng)
- 劍指大前端全棧工程師(全2冊)