架構師需要編寫程式碼嗎?
本文是從知識分享架構師(Knowledge-Sharing Architect)與程式碼架構師(Coding Architect)相比較角度討論該問題。
對於架構師是否需要編寫程式碼一直有肯定或否定兩種觀點,其實這兩種觀點都有失偏頗。首先,我們看看支援架構師編寫程式碼的理由:
1.能避免實現細節的失敗。很多軟體架構師由於思想和抽象思想本身的侷限,比如抽象本身實際是對細節的無知和忽視,導致太多專案失敗在效能等細節,還有API的精緻設計以及元件的相互互動。
當然這些實現細節由程式碼架構師來編寫也不一定能避免,或者認為只有程式碼架構師才能避免的觀點也是片面的。
2.責任,程式碼架構師能夠對自己的專案負責任,但是負責任也不一定必須親自編碼,一個好的架構師需要緊密與遞交團隊結合在一起。
3.反饋,程式碼開發是一個迭代過程,架構師應該隨同產品開發一直跟進,當然跟進開發過程不代表親自參與編碼,不寫程式碼也不意味著會缺乏反饋。
4.尊重,為了專案能夠成功,架構師應該被尊重,架構師能夠寫程式碼與每天寫程式碼是兩回事,讓架構師每天沉浸在程式碼細節編寫中,反而是一種不尊重。
其他兩個支援架構師必須編碼的理由是:開發人員相比程式碼架構師實現專案系統的細節可能要困難;其次,沒有架構意識的開發人員會將更多問題帶入程式碼。這兩個問題其實正是訓練開發人員的機會,透過架構師的引導能夠培養更多高階軟體工程師。
其實,架構師編寫程式碼也有很多缺點:
1.只見樹木不見森林,一個架構師忙於編寫除錯程式碼會導致他沒有時間或精力及時發現開發演進中的架構致命問題。
2.對於一個好的架構師,與其將時間花在編碼上,好像是發揮其價值,其實更大的價值是進行程式碼審查以及與專案有關的知識技術分享上。
3.上下文切換是非常昂貴的,架構師一邊負責架構設計的邏輯一致性,一邊如果還要跟著專案編碼幾天,這兩種上下文切換其實代價是昂貴的,比如某個人需要更改底層API程式碼,將之前隱藏的細節暴露給外部呼叫者,架構師會建議其在原來的API程式碼上再封裝一層等等,這些都是為了維護系統的可維護性和演進發展的邏輯一致性,不至於程式碼系統隨著時間推移變得混亂和不可維護。也就是說,架構師主要職責是對系統的架構負責,架構必須是可維護的,必須是可擴充套件的,長年累月地能保證做到這兩點是非常不容易的,其中大量工作是與莽撞開發人員交涉。所以,架構師身兼數職導致上下文場景不同切換,幾項工作可能都做不好。
讓架構師親自動手編碼是一個短期思維,並不具有擴充套件性,只有知識分享才能在長期開發週期中具有可伸縮擴充套件性。架構師有時動手解決了一些架構問題,他必須向其他人講解分析問題,以及自己的解決方案的理由,這些都是知識經驗分享,這種文化會在開發人員之間傳播。一個好的架構師會很快編碼解決問題,但是如果不將其知識分享,就只是技巧技能的炫耀而已,而且會導致開發人員想:你能你就幹,進而以後架構師越來越多地親自動手編碼;如果他花更多時間講解培訓相關知識,幫助其他人更深入理解這項任務,那麼以後越來越多這樣的任務就可以直接交給開發人員完成。
所以,很少或沒有編碼的架構師就被強迫積極分享他們的經驗知識,從而能讓專案減少對架構師的依賴,當然,不少架構師為了保護自己的工作總是透過塔布禁忌規定只有少數人才知道如何做這件事。
當然,有一些支援架構師不編碼的理由也是值得商榷的,比如:
1.架構師不應該關心實現細節。其實架構師有責任提出最佳實踐等細節,包括開源元件推薦等等,提供實現細節方案比較和知識分享。
2.架構師只要在這個專案寫一次程式碼,然後就可以到其他專案了,這種觀點也會給專案帶來災難,因為專案質量(維護性與擴充套件性)就難以保證了。
3.架構師是高階職務,可以陪伴客戶打高爾夫談業務需求,而開發人員都不知道怎麼打高爾夫。這個觀點在中國還是有點效果的。
最後總結:知識共享型的架構師不是不編碼,而是不會編制太多程式碼,通常職責如下:
1.程式碼審查code review ,引導如何編碼更好
2.結對程式設計。
3.考慮架構的改變,如果API經常被改變,或經常向別人解釋這段程式碼是如何工作的,這些就有必要對程式碼架構進行變動,讓其變得更易懂或更易於修改。
4.針對不斷湧現問題,經常和隊員討論可能的解決方案。
詳細見原文:
對於架構師是否需要編寫程式碼一直有肯定或否定兩種觀點,其實這兩種觀點都有失偏頗。首先,我們看看支援架構師編寫程式碼的理由:
1.能避免實現細節的失敗。很多軟體架構師由於思想和抽象思想本身的侷限,比如抽象本身實際是對細節的無知和忽視,導致太多專案失敗在效能等細節,還有API的精緻設計以及元件的相互互動。
當然這些實現細節由程式碼架構師來編寫也不一定能避免,或者認為只有程式碼架構師才能避免的觀點也是片面的。
2.責任,程式碼架構師能夠對自己的專案負責任,但是負責任也不一定必須親自編碼,一個好的架構師需要緊密與遞交團隊結合在一起。
3.反饋,程式碼開發是一個迭代過程,架構師應該隨同產品開發一直跟進,當然跟進開發過程不代表親自參與編碼,不寫程式碼也不意味著會缺乏反饋。
4.尊重,為了專案能夠成功,架構師應該被尊重,架構師能夠寫程式碼與每天寫程式碼是兩回事,讓架構師每天沉浸在程式碼細節編寫中,反而是一種不尊重。
其他兩個支援架構師必須編碼的理由是:開發人員相比程式碼架構師實現專案系統的細節可能要困難;其次,沒有架構意識的開發人員會將更多問題帶入程式碼。這兩個問題其實正是訓練開發人員的機會,透過架構師的引導能夠培養更多高階軟體工程師。
其實,架構師編寫程式碼也有很多缺點:
1.只見樹木不見森林,一個架構師忙於編寫除錯程式碼會導致他沒有時間或精力及時發現開發演進中的架構致命問題。
2.對於一個好的架構師,與其將時間花在編碼上,好像是發揮其價值,其實更大的價值是進行程式碼審查以及與專案有關的知識技術分享上。
3.上下文切換是非常昂貴的,架構師一邊負責架構設計的邏輯一致性,一邊如果還要跟著專案編碼幾天,這兩種上下文切換其實代價是昂貴的,比如某個人需要更改底層API程式碼,將之前隱藏的細節暴露給外部呼叫者,架構師會建議其在原來的API程式碼上再封裝一層等等,這些都是為了維護系統的可維護性和演進發展的邏輯一致性,不至於程式碼系統隨著時間推移變得混亂和不可維護。也就是說,架構師主要職責是對系統的架構負責,架構必須是可維護的,必須是可擴充套件的,長年累月地能保證做到這兩點是非常不容易的,其中大量工作是與莽撞開發人員交涉。所以,架構師身兼數職導致上下文場景不同切換,幾項工作可能都做不好。
讓架構師親自動手編碼是一個短期思維,並不具有擴充套件性,只有知識分享才能在長期開發週期中具有可伸縮擴充套件性。架構師有時動手解決了一些架構問題,他必須向其他人講解分析問題,以及自己的解決方案的理由,這些都是知識經驗分享,這種文化會在開發人員之間傳播。一個好的架構師會很快編碼解決問題,但是如果不將其知識分享,就只是技巧技能的炫耀而已,而且會導致開發人員想:你能你就幹,進而以後架構師越來越多地親自動手編碼;如果他花更多時間講解培訓相關知識,幫助其他人更深入理解這項任務,那麼以後越來越多這樣的任務就可以直接交給開發人員完成。
所以,很少或沒有編碼的架構師就被強迫積極分享他們的經驗知識,從而能讓專案減少對架構師的依賴,當然,不少架構師為了保護自己的工作總是透過塔布禁忌規定只有少數人才知道如何做這件事。
當然,有一些支援架構師不編碼的理由也是值得商榷的,比如:
1.架構師不應該關心實現細節。其實架構師有責任提出最佳實踐等細節,包括開源元件推薦等等,提供實現細節方案比較和知識分享。
2.架構師只要在這個專案寫一次程式碼,然後就可以到其他專案了,這種觀點也會給專案帶來災難,因為專案質量(維護性與擴充套件性)就難以保證了。
3.架構師是高階職務,可以陪伴客戶打高爾夫談業務需求,而開發人員都不知道怎麼打高爾夫。這個觀點在中國還是有點效果的。
最後總結:知識共享型的架構師不是不編碼,而是不會編制太多程式碼,通常職責如下:
1.程式碼審查code review ,引導如何編碼更好
2.結對程式設計。
3.考慮架構的改變,如果API經常被改變,或經常向別人解釋這段程式碼是如何工作的,這些就有必要對程式碼架構進行變動,讓其變得更易懂或更易於修改。
4.針對不斷湧現問題,經常和隊員討論可能的解決方案。
詳細見原文:
Knowledge-Sharing Architects As An Alternative to
[該貼被banq於2016-07-26 18:06修改過]
相關文章
- 架構師究竟要不要寫程式碼?架構
- 架構師日記-如何寫的一手好程式碼架構
- 我很久沒寫程式碼了,但我是個好架構師架構
- 阿里架構師Peter老師講述Java程式設計師→架構師所需要掌握的技能阿里架構Java程式設計師
- 來看看阿里架構師Java 程式碼打日誌姿勢!你也是這樣寫的嗎阿里架構Java
- 從程式設計師到架構師,有捷徑嗎?程式設計師架構
- 程式設計師,真有必要了解架構嗎?程式設計師架構
- 架構師之路:一個架構師需要掌握的知識技能架構
- 程式設計師與架構師之間的差距很大嗎?程式設計師架構
- “大話架構”阿里架構師分享的Java程式設計師需要突破的技術要點架構阿里Java程式設計師
- 架構師的定義是什麼?架構師需要具備哪些能力?架構
- 你需要程式設計師鼓勵師嗎?程式設計師
- "無程式碼"時代的到來,還需要程式設計師嗎?程式設計師
- 測試工程師必須要會寫程式碼嗎?工程師
- 程式設計師可以自己寫測試?還需要測試人員嗎?程式設計師
- 敏捷開發,如何編寫架構文件敏捷架構
- 架構C01: 什麼是架構?為什麼做架構?架構師需要做什麼?架構
- 什麼是低碼開發平臺?低程式碼平臺需要編碼嗎?
- 好程式設計師寫出來的程式碼,就叫好程式碼嗎?你錯了!程式設計師
- Sublime 編寫編譯 swift程式碼編譯Swift
- 小公司需要使用微服務架構嗎?微服務架構
- 騰訊架構師分享的Java程式設計師需要突破的技術要點架構Java程式設計師
- 編寫架構文件的最佳實踐 - Singh架構
- 軟體架構師需要具備的技能 - Abeysinghe架構
- 月薪20k以上的程式設計師都能裸寫程式碼嗎?程式設計師
- 程式設計師筆記|如何編寫高效能的Java程式碼程式設計師筆記Java
- 京東資深架構師程式碼評審歪詩架構
- 膜拜阿里架構師全程手寫Spring MVC阿里架構SpringMVC
- 架構師之路:從Java碼農到年薪八十萬的架構師架構Java
- 架構師修煉之道(二)——架構?設計?架構師?架構
- 10年資深架構師分享 | 普通程式設計師向架構師進階之路架構程式設計師
- Hbuilder快速程式碼編寫技巧UI
- vue3程式碼編寫Vue
- Model 編寫程式碼智慧提醒
- 02 | 編寫Model層程式碼
- java架構的程式碼結構Java架構
- particle雲架構程式碼結構架構
- 程式設計師不是在編寫程式碼,而是在解決問題 - LanRaccoon程式設計師
- 架構師需要懂的環境配置標準化架構