12.26 寫給程序員的乾貨文章:架構師真正要學會的事情


寫給程序員的乾貨文章:架構師真正要學會的事情

本文引自周愛民老師[就職於南潮(Ruff),現任架構師一職]寫給《程序員必讀之軟件架構》一書的推薦序。

編者按:軟件架構師是在一個軟件項目開發過程中,將客戶的需求轉換為規範的開發計劃及文本,制定項目的總體架構,並指導開發團隊完成這個計劃的人員。軟件架構師主導系統全局分析設計與實施和關鍵技術決策。所謂的架構角色,是對思維和技術上的雙重挑戰,也應該是所有開發者的終極目標。希望此文對想要成為、即將成為或已經成為架構師的朋友受用。

1. 要學會去看,然後忘掉

有一本書叫《觀止》,寫的是微軟研發Windows NT 的一段故事。“觀止”在這裡的意思是說“看到這些,就無需再看了”,因為世上之物亦無過於此。20 多年過去,如今微軟在操作系統上面臨著的種種挑戰與困境,其實與《觀止》所敘的研發方法、理念與目標有著與生俱來的血緣關係。

另一個與“看”相關的詞彙是“所見即可得”(WYSIWYG)。這個詞以及與此相關的WIMP(Windows, Icon, Menu and Pointer)曾經主導了整個人機交互的設計理念。也是在20 多年前,Borland 為Windows 桌面系統成功地設計了跨語言的VCL,由此“所見即所得”成為Borland 對“如何更便捷地構建UI”的基本假想,以至於這家偉大的公司在互聯網時代來臨時決定“用VCL 描述界面的方式來解決‘網站設計’的問題(RadPHP)”。

然而,互聯網上的網頁是沒有WIMP 的;移動設備上的操作系統也不再採用與Windows NT類似的方式開發。

Borland 在幾年之前將整個開發工具產品線都賣掉了。當時盛大的一個Delphi 圈子發起了一次“緬懷活動”,組織者說:“愛民,你應該會為那個時代寫點什麼吧?”

我在那個緬懷網頁上寫下了五個字:所見即所礙

寫給程序員的乾貨文章:架構師真正要學會的事情

2. 要學會去聽,然後忘掉

我通常說架構是一種能力,架構角色則是要求你在具體事務中行使某些行為,而架構師則是用來標識這些能力與行為的一個職務。

當一些人將個人成長定義為“職業發展”時,就表現為“怎樣成為架構師”這樣的問題。

對此有三種解決方案:

  • 第一種是印一張寫著這樣頭銜的名片,而“是與不是”架構師並不重要;
  • 第二種是直接否定這個職務的意義,比如聲稱敏捷天生就是反架構的,於是“架構師”變成了要打倒的對象,所以成不成為這個將被打倒的對象也就不重要了;
  • 第三種則乾脆聲稱“人人都是架構師”,既然人人都是了,那麼“如何成為”也自然就不重要了。

我們大多數人都具有架構的能力,並且也或多或少地行使某些架構角色的行為,唯一缺乏的只是一個叫做“架構師”的頭銜而已。問題出在我們總是期望別人通過這樣的頭銜來認可自己。於是我們為自己貼上這樣或那樣的標籤,然後跟別人持有的同種標籤去比對,期求出現一致或找出某種差別。於是我們聽到種種聲音:某某某真的是/不是、像/不像架構師;如果是架構師,那麼就要這樣那樣,以及怎樣怎樣;其實這個架構、這樣的架構,或某種架構應該怎麼做;以及架構是什麼,架構師是什麼,等等。回顧“三種解決方案”,仍是困在這樣的認可求同之中,與之在做著種種鬥爭罷了。

其實不單是你的所見阻礙了你自己,你還被別人的所見阻礙著。

寫給程序員的乾貨文章:架構師真正要學會的事情

3. 要學會去做,然後忘掉

朋友跟我聊他家的兩歲小孩:我剛把桌子收拾好,一轉眼杯子碗筷什麼的都全摔地上了。我問:“怎麼了?”他說:“小孩子什麼也不懂啊,她看到桌布覺得喜歡,就一把抓過去……”

小孩子沒能看到桌子上還有杯子,但正因為他們的視線裡沒有杯子,他們的行動才簡單直接,才直達需求,才迅速。而我們的眼睛裡有杯子、桌子、桌布等一切,我們經年累月地維護著其中的次序與關係直到這些東西混成一體,然後我們便日日坐守在它們的面前,而又無覺他們的存在。

正是我們自己不知不覺地設定了這些事物之間的界線,並把這些界限、層次與邏輯井然的東西稱為“系統”。當我們從那些無序的事物中識別出了這樣的“系統”並用一些概念、名詞去定義了它們之後,我們對此的一切知識也就固化了。當這種秩序被建立起來之後,我們也就得到了對有序和無序(沒有你所設定的“這種秩序”)價值的識別與肯否;當我們設定了種種價值、觀念、觀察與系統的模型概念之後,也就完成了這個系統的架構。

但這一過程,包括完成這一架構——它可以命名為“世界觀”——的方法以及結果,在本質上不過是讓你從一個格子跳到了另一個格子而已。我們處在種種界限之中,再也無法回到兩歲小孩的、一切無礙的視角:在那個視角下,根本就沒有所謂的界線

。你之所以時時在尋求跨界,其實是源自你假設了“存在界線”,這就如同全棧的含義其實是“沒有棧”,而當有人信心滿滿地要“成為全棧工程師”時,他的眼裡便又有個“這個棧”的存在。

所謂跨界不是指你能力與方法上的變化,你的作為取決於你的格局,你的格局取決於你的所見。

寫給程序員的乾貨文章:架構師真正要學會的事情

4. 要學會超越

架構師需要超越自己與別人的所見,因為你觀察與架構的對象稱為“系統”,你看到系統多少的真相,決定了你用怎樣的影像去表現它,並進而推進與實現這種影像,亦即是架構。我們既已知道的、理解的、明白的,形成了我們的知識與行為的一切,卻也正是阻礙著我們前進的東西。

這些障礙正是你以為你最珍視的、最不可放棄的、最鮮血淅瀝體驗過的那些經驗與成就。在這些所得與所礙中掙扎與決策,就是架構師的全部職責。因此作為架構師,你需要能夠超越自已對系統的既有認識,看到你在光明中——顯而易見之處——所未見的,這是你驅動系統架構進化的主要動力。

所以架構中最難超越的並不是某個大師或前輩,而是你以及你為自己所作的設定。當你設定了“架構師”這個目標,便設定了這個目標所表達的某種影像(角色),你最終可能變得跟這個影像完全一致——成為所謂的“真正的架構師”,但你仍不過是困囿於對這個“角色”的一個假設/設定而已。唯一破局的方法是:超越別人對某個角色的定義,將自己做成這個角色

至此,你是否還在這個角色之中,就是你的覺悟了。


程序員必讀之軟件架構》是一本強調實踐、注重實效、輕量級、面向開發者的軟件架構指南。如果你是一名想成為軟件架構師的程序員,那麼《程序員必讀之軟件架構》就是你的不二之選。

寫給程序員的乾貨文章:架構師真正要學會的事情

《程序員必讀之軟件架構》 作者:[美]Simon Brown,譯者:鄧鋼

作者Simon Brown 全球知名軟件架構獨立諮詢師、講師,創辦了專門討論軟件架構問題的網站“編碼架構”(http://codingthearchitecture.com)。他自稱是寫代碼的軟件架構師和明白架構的軟件開發者。自2008年以來的7年時間裡,Simon在全球28個國家做過有關軟件架構、技術領導力及其與敏捷的平衡等主題的百餘場演講,並於2012年8月在中國舉辦的ArchSummit全球架構師峰會上以“鬱悶的架構師”和“如何設計安全的架構”為主題發表演講,深受與會者好評。Simon已為全球20多個國家的軟件團隊提供諮詢和培訓,他的客戶既有小型技術初創企業,也不乏全球家喻戶曉的品牌公司。


分享到:


相關文章: