1. 程式人生 > >菜鳥的架構師之路

菜鳥的架構師之路

一個剛剛從學校畢業的、致力於投身程式設計事業的年輕人,在投遞了N封簡歷之後,終於如願以償得到了第一份程式設計的工作。如果他在求學期間沒有積累過專案經驗,那麼可以說這就是他職業的起點,他青澀的程式設計之路開始了。

可能他一開始會滿腔抱負、意氣風發的按照自己的方式完成小頭目交給自己的一些練手任務,然後懊惱的發現小頭目對這些看似能夠完成任務的程式碼大搖其頭,指指點點;然後在真正進入專案之後,又會被各種不知道從哪裡冒出來的bug和漏洞搞得暈頭轉向......

這些問題一方面和這位菜鳥程式設計師缺乏經驗有關,但是在過來者看來,造成這些問題的一個主要原因正是在於,這位程式設計師沒能看到問題的本質。

架構師,在開發領域剛入門不久的菜鳥級程式設計師聽起來是如此神祕的一個稱號,在他們眼中,架構師都是高手,都是牛人,都是如此高高在上的存在。
    不過,在搞了四、五年程式設計之後,程式設計師們往往早已失去了當年對這些“高階”職位的神祕感,甚至會對自己所在專案的架構師抱怨不已,背後裡稱他們是一群水王。所以有江南白衣曾撰文述說:“國內的架構師到了三十歲以後很多就往理論上跑,而國外的架構師在往上發展的同時保持下面的程式設計體驗,所以國內多水王,而國外則多大師。”

問題的本質是一個致力於成為架構師的程式設計師,需要儘可能的參加大的專案開發,儘管積累1000個小專案的經驗也是很好的程式設計師,但好的架構師必須參與更大的專案,哪怕數量不多。從中我們能解讀到一個資訊,大的專案意味著學科跨度的增大,所需要學習的跨領域知識必然也足夠大,也就更有利於程式設計師向架構師晉級。

架構師就相當於一支球隊的主教練,如何將自己佈置的戰術交到執行的球員,也就是開發人員的腦袋裡,是關乎勝利的關鍵。那麼怎樣才能成為一名能說會道的程式設計師呢?

一個優秀的軟體架構師,首先一定是一個出色的程式設計師。這句話按照Fred George先生的話來說,那就是“不程式設計的架構師的職業生涯是短暫的”。他說這句話的背景主要是針對有些架構師的設計與實現有斷層的問題而言的,因為如果架構師不去實踐,只是想當然的認為“沒問題,這個想法能實現”,那麼對於專案的落實而言是個很大的隱患。支付寶架構師馮大輝 也表示過,架構師是一個比較“虛”的崗位,主要的問題都在“落地”的過程中。

作為一名卓越的程式設計師,架構師肯定不欠缺開發方面的知識。從架構到方法論,從資料處理到安全監控。可以說IT開發層面上,架構師可以做到爐火純青的地步。但是這僅僅是一名卓越程式設計師的能力級別,離架構師那還有很大的一段距離。

鐵打的程式設計師,流水的技術。程式設計師的開發生涯可能長達幾十年,但一門技術的平均壽命卻不長。因此作為程式設計師們的技術領袖,架構師必須有很好的技術前瞻性,要先於大家瞭解到最新的技術。

外功是從外部獲得最新技術資訊,那麼內功就是自己的邏輯思維能力和接受能力。再新的技術,其實也與以前的技術有結合。這也是為什麼我們說架構師首先是卓越的程式設計師,也就是這個道理。

人們往往發現優秀的數學家、物理學家以及軟體架構師有著很多相似的素質,甚至往往能夠一人精通這好幾個領域(比如UML之父James Rumbaugh ),其中很重要的原因就是這個抽象思維的能力。架構師在接到商業需求之後,最主要的工作就是將其轉化為技術需求。

所以一個架構師確認一個想法究竟能不能落地的最直接的方法,就是自己編寫程式碼,嘗試“實現一個系統最難實現的一部分”(Fred George)。看看Fred,他自己就是最好的示範:年紀一大把了,仍然每天都在編寫程式碼。事實上,我們可以列舉出一個長長的頂級架構師的列表,你會發現他們沒有一個不是頂級的程式設計師。

當架構師對整個系統分析完畢,有一些架構師喜歡昏天黑地的奮鬥幾天,然後寫出一本厚厚的架構書扔給程式設計師。在此之後就不做過多的交流與溝通,“具體實現?那是程式設計師的事情,我怎麼能去幹涉他們呢?”其實在這裡,這位架構師就犯了錯誤,他並沒有將自己真正融入開發團隊中,而是以一種高高在上的救世主姿態出現。其實架構師未必就是神人,很多錯誤還是要大家一起來研究來解決的。

這裡就會出現一個常見的問題“架構師是不是一個只會誇誇其談,只會忽悠下面人而對軟體開發瞭解不多的人?”更尖酸的問題還在於架構師連一段程式碼都不會寫。相信這是一定的誤解,就好像銀行的高層管理人員,要更多的從巨集觀的角度考慮問題,儘管他們點鈔的能力肯定不及下面的櫃檯人員。事必躬親的諸葛亮,最後的結局還是國破家亡,過多的干預細節忽視整體,絕對是要打敗仗的。架構師學習更多跨領域知識,也是為了在接受一個專案時,能更快更準確的找到解決問題的 “命門”。

架構師的溝通方向與專案經理相比,還是有一定的區別。比如專案經理有很大一部分時間需要與客戶進行溝通,進一步弄清需求。而架構師的溝通主要在於開發團隊內部,一種純技術上的溝通。這也是作為技術領路人的架構師,最日常的工作。

有人談到技術高手與架構師的區別就在於,架構師不光是著眼於現在,不僅僅侷限於開發細節,比如如何呼叫,如何併發等等。而是跳出三界外,考慮一下面向未來問題和潛在風險的應對之道。

架構師身為一名技術領袖,需要通過發散知識的光芒來統御開發團隊的。如果只是對本行業知識做到爛熟於心,那還僅僅是一名熟練工的水平。要想晉升更高的層次,還需要跳出“只緣身在此山中”的困惑。例如在目前國內架構師,至少有網路領域為依託,物流金融證券等熟知越多越好,這個是應用級別。比如南天的金融平臺研發部門,但是這個成不了底層平臺架構師。再往上走,很多公司的研發人員不是精通計算機,可能是物理極為精通,比如中軟研發聲納軟體部門很多人對資料訊號極有研究。

相關推薦

架構

一個剛剛從學校畢業的、致力於投身程式設計事業的年輕人,在投遞了N封簡歷之後,終於如願以償得到了第一份程式設計的工作。如果他在求學期間沒有積累過專案經驗,那麼可以說這就是他職業的起點,他青澀的程式設計之路

架構--從業務角度談緩存的選型

inno 基於 時間限制 更新 負載 聚集 穿透 同步 寫入   想起來幾年前挺火的前島國國民女神學霸-小島方晴子。當時替她說話的人都很慘,導師被逼自殺。她收到的壓力侮辱不是常人可以想象的。但是她卻堅強的活著,去年還出了書。我去日本的時候,下了新幹線,前面有一群女學生,她們

架構】集群/分布式環境下5種session處理策略

復制 協調 部分 ont 描述 分析 bsp 優化 vol 轉自:http://www.cnblogs.com/jhli/p/6557929.html 在搭建完集群環境後,不得不考慮的一個問題就是用戶訪問產生的session如何處理。如果不做任何處理的話,用戶將出現頻繁

JAVA架構----maven001---何為Maven

maven本人犯了猴子掰玉米的錯誤;現在從頭開始:成功=可行的計劃+執行力何為Maven?答:1>關鍵字:構建、依賴、項目信息、解決方案/gav、誇平臺、開源/apache、分布式開發集群式部署、本地倉庫、遠程倉庫、中央倉庫、私服/nexus、插件;2>2個url:http://mvnreposi

架構--從原理角度來分析性能

獲得 clas 思維 一體化 活性 數據拷貝 行業經驗 靈活性 時間   埃及艷後Cleopatra,很小的時候看過媽媽買的一本書裏把她的名字翻譯成克婁巴特拉,裏面有很多描寫她美貌的場景描寫。然而這個以美貌著稱的奇女子,我看到書裏,凱撒和安東尼真正傾心的是Cleopatra

架構--視頻業務介紹,離線服務架構和各種集群原理

目的 -- 自己的 超過 覆蓋 基本上 添加節點 電視 是我   先聊聊業務。我們媒資這邊目前的核心數據是樂視視頻的樂視meta和專門存儲電視劇,綜藝節目,體育賽事這種長視頻的作品庫。樂視視頻的數據都是多方審核的,需要很多運營。但是作品庫部分卻是弱運營的,運營都不超過10個

架構--搜索業務和技術介紹及容錯機制

朋友 單節點 adb 一致性 公司 一個 memcache 消息通知 包括  今天和搜索部門一起做了一下MQ的遷移,順便交流一下業務和技術。發現現在90後小夥都挺不錯。我是指能力和探究心。我家男孩,不招女婿。   在前面的文章中也提到,我們有媒資庫(樂視視頻音頻本身內容)

一只的成長

小強測試品牌 性能測試 軟件測試瘋狂講義 轉型測試 引子以下內容選自《小強軟件測試瘋狂講義》一書正文 簡單地自我介紹,就是一只數學專業,腦洞極大,深度強迫癥,編程菜鳥,顏控,但人醜的少女。 我的願望很簡單,一輩子隨遇而安家庭幸福,但希望能一直堅持努力成為有技術含量的妹紙。什麽叫做“

的畫圖

linux awk本文出自 “11619325” 博客,請務必保留此出處http://11629325.blog.51cto.com/11619325/1953699菜鳥的畫圖之路

的Python--基礎知識

python 剛剛開始自學Python,整理一下自己的學習感悟 剛剛開始學習Python,代碼之路才剛剛開始第一個差距就感受到了。Python的標點符號與其他語言的差別,它每句後面都沒有“;”。變量的命名規則 1. 要具有描述性 2. 變量名只

的Python--基礎知識(列表的基本操作)

python列表list1 = [,,,,,]list2 = [,,] t = [,,,,,] t.sort(=)(t)本文出自 “11316806” 博客,請務必保留此出處http://11326806.blog.51cto.com/11316806/1959140菜鳥的Python之路--基礎知識(列表的

程序員養成架構

二叉排序樹 初級程序員 其他 json 隔離 適合 tro cat hash表 怎樣學習才能從一名Java初級程序員成長為一名合格的架構師,或者說一名合格的架構師應該有怎樣的技術知識體系,這是不僅一個剛剛踏入職場的初級程序員也是工作三五年之後開始迷茫的老程序員經常會問到的問

安全架構

隨感其實前面說過,作為一個乙方工作多年的安全人員突然到了甲方公司,也有一種憋了勁使不出來的感覺。畢竟甲方都是專門針對某個領域的。雖然我做的領域很多,但都是賣不同的產品和服務給不同的甲方。產品和服務之間又橫跨不同供應商。整理下來,我不是某個安全領域的專家,但是從跨度來說橫跨不少區域。列舉如下:1.防火墻和vpn

架構-如何建立高可用消息中間件kafka

特點 查看 支持多語言 服務器端 c++ 偏移量 2.4 name space Kafka 一、熟悉kafka l Server-1 broker其實就是kafka的server,因為producer和consumer都要去連它。Broker主要還是做存儲用。 l

史上最好程序員的職業規劃:五年從程序員到架構

最好 淘寶 好的項目 com 職業 消息 關於 技術學 收獲 第一部分:對於參加工作一年以內的同學。恭喜你,這個時候,你已經擁有了一份Java的工作。這個階段是你成長極快的階段,而且你可能會經常加班。但是加班不代表你就可以松懈了,永遠記得我說的那句話,從你入行那一刻起,你就

架構總結01

線上 總結 估計 曲線圖 根據 運營 互聯 bsp 設計 1. 互聯網架構設計如何進行容量評估: 【步驟一:評估總訪問量】 -> 詢問業務、產品、運營 【步驟二:評估平均訪問量QPS】-> 除以時間,一天算4w秒 【步驟三:評估高峰QPS】 ->

Android架構 網絡層架構設計與實戰

安卓 第1章 課前須知介紹如何去學習,課程適合的人群、怎麽才能融會貫通第2章 主流網絡框架分析常用網絡框架介紹,分析volley 、Android-async-http、Afinal框架、xUtils、okhttp、retrofit、優有點缺點、教會選擇一個框架的標準是什麽?第3章 http協議詳解介紹htt

2018年給自己運維架構總結(半年)

src ces water OS 圖片 blog 初心 TE com 一轉眼2018年已過去一半,現在很多高大上的技術不斷湧現而出,不過我一直都相信,根基不牢,地動山搖,所有希望我自己能堅持自己的初心,不要心浮氣躁,談事下來,一步步走向我的架構師之路。 下面就來總結一下我的

MySql資料庫-58沈劍 架構

最近在看 “58沈劍 架構師之路”的公眾號,寫的非常簡練,乾貨很多。但裡面也充斥了很多廣告和管理類的文章,本文主要是對裡面的資料庫文章做一個彙總: InnoDB,5項最佳實踐,知其所以然? InnoDB行鎖,如何鎖住一條不存在的記錄? InnoDB併發如此高,原因竟然在這? Inno

架構第一天

Volatile關鍵字 用處:Volatile修飾的變數能夠在多執行緒之間可見。也就是可用此關鍵字實現變數在多執行緒之間的資料一致性。 在沒有Volatile之前,是通過在變數或者方法上面進行加鎖實現的。那樣的話,效率不高。 案例: public class VolatileTes