程式設計師成長為架構師必備的十項技能

2021-09-23 20:04:34 字數 1846 閱讀 6922

不是每乙個程式設計師都能夠成為乙個架構師——這是開發界廣為流傳的乙個論調。架構師群體往往對這個言論表示默許,這不得不令廣大入門不久的程式設計師們懷疑架構師們是不是隱藏了什

架構師,聽起來是如此神秘的乙個稱號。尤其是在開發領域剛入門不久的菜鳥級程式設計師眼中,架構師都是高手,都是牛人,都是如此高高在上的存在。

不過,在搞了

四、五年程式設計之後,程式設計師們往往早已失去了當年對這些「高階」職位的神秘感,甚至會對自己所在專案的架構師抱怨不已,背後裡稱他們是一群水王。所以有江南白衣曾撰文述說:「國內的架構師到了三十歲以後很多就往理論上跑,而國外的架構師在往上發展的同時保持下面的程式設計體驗,所以國內多水王,而國外則多大師。」

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

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

我們可以列舉出乙個長長的頂級架構師的列表,你會發現他們沒有乙個不是頂級的程式設計師

不過這在邏輯上或許沒有多少說服力,因為似乎這並不能證明一位資深架構師憑自己的經驗感覺不能夠知道乙個想法能不能落實。如果你覺得上面這些只是某些西方老頭兒對程式設計的古怪癖好,那麼不妨看看ebay的架構師randy shoup先生

是如何總結架構師在專案中的職責的:

1. 產品團隊要做乙個新產品,架構師開工了。架構師要幫助產品團隊把可行性、技術需求以及權衡取捨等因素一一剖析清楚。

2. 技術需求出來了,架構師的主要工作開始了:設計整體的技術實現步驟。randy在後面補充說「大多數成功的架構師都喜歡與其他團隊成員一同完成架構和設計這一塊的工作」,而認為自己應獨自完成這個步驟則是新手架構師常見的誤區。

3. 與開發團隊一起,完成設計與實施的細節

4. 與開發團隊和運維團隊一起,完成部署的過程

5. 與運維團隊一起,進行部署之後的維護和故障排除

在這個過程中,乙個架構師至少有一半以上的工作是需要與開發團隊一起進行的。按照randy的描述,這是「乙個架構師不能將實施細節拋之腦後」的體現。而且與開發團隊一起工作,命令式的領導方式並不被推崇,乙個架構師必須通過自己的個人影響力來對開發團隊進行指導工作。而什麼是影響力?說的直白一些,就是通過自己寫程式碼以及和其他成員一起寫程式碼,來指導團隊成員實現每個架構細節的思路。

只要稍微思考一下,就會明白此舉的重要性。如果乙個架構師靠命令管理開發團隊,告訴他們「要實現這個模組」,「要實現那個功能」,而團隊也嘗試照辦。可是或許是架構師的要求太高了,或許是團隊的開發實力不夠,團隊成員便會向架構師求助:您看這個我們不知道如何實現,您能否指導一下?架構師可能知道怎麼處理,也可能沒有仔細思考過這個問題,但又覺得自己做大事者不拘泥於小節也,於是一皺眉頭扔下一句:這是你們的事,你們自己解決!

然後就是矛盾的開始了。架構師只覺得團隊技術不夠,而團隊則對架構師愈發不滿。專案黃了不說,開發團隊中也會傳出各種說法,比如說「此君其實是個一行程式碼也不會寫的大忽悠!」

綜上所述,便映證了fred的那句斷言:「不程式設計的架構師的職業生涯是短暫的」。乙個架構師不僅要會寫程式碼,還必須要能夠寫出自己設計的系統中最難實現的那段程式碼。這樣他才能夠放心的把「落地」的這個重擔交給開發團隊來做。

讓我用fred的這句話做為本篇的總結:「乙個架構師的價值在於,他不僅能看到系統的美,而且能夠在建造系統的時候能夠把這些美創造出來。」

是的,每個好架構師都是一位出色的程式設計師。

新手程式設計師必備十項技能

初出茅廬的你帶著仍殘留墨香的畢業證書踏上工作崗位,馬上就被書上沒寫的規則和各種繁雜的日常事務來了個下馬威。這樣的故事實在是司空見慣,程式設計工作也不例外。沒有幾個學生能 100 為自己的第乙份真正的工作做好準備。如果你不想成為其中之一,請學學以下這 10 項無需手把手指導就能學會的基本技能 1 版本...

小白程式設計師必備的十項技能

1 版本控制系統 vcs vcs 也許是計算機課程最大的疏漏。這些課程光記得教如何寫 但卻往往忘記教學生如何去管理 每乙個程式設計師都應該懂得利用 git 或 subversion 有效地建立 repository 倉庫 編輯與提交 進行分支與合併,了解專案工作流。2 學會寫作 身為程式設計師要寫的...

新手程式設計師必備十項技能(2023年)

此為拉勾網,不排除是軟文的可能性 如果你不想成為其中之一,請學學以下這 10 項無需手把手指導就能學會的基本技能 1 版本控制系統 vcs vcs 也許是計算機課程最大的疏漏。這些課程光記得教如何寫 但卻往往忘記教學生如何去管理 每乙個程式設計師都應該懂得利用 git 或 subversion 有效...