解决方案架构师我需要懂代码吗_架构师不写代码,能行吗?
原標題:架構師不寫代碼,能行嗎?
從什么時候起,技術角色的提升就意味著脫離技術與交付?CTO 不寫代碼已經引起諸多爭議了,架構師也不寫代碼,能行嗎?
就目前看來這似乎沒什么問題。畢竟,寫代碼是開發人員的工作。架構師就應該在更重要的任務上忙碌。
但是,讓架構師遠離寫代碼會限制開發團隊的潛力。當需求和業務需要發生變化時,也可能導致架構混亂。
所以對于業界的誤解,今天我想要為架構師正名,接下來,就讓我們來看看為什么讓你的軟件架構師參與寫代碼的工作是一件好事。不過,在此之前,我們首先來看看架構師的日常工作。
對于架構師是否需要編寫代碼一直有肯定或否定兩種觀點,其實這兩種觀點都有失偏頗。首先,我們看看支持架構師編寫代碼的理由:
1.能避免實現細節的失敗。很多軟件架構師由于思想和抽象思想本身的局限,比如抽象本身實際是對細節的無知和忽視,導致太多項目失敗在性能等細節,還有API的精致設計以及組件的相互交互。
當然這些實現細節由代碼架構師來編寫也不一定能避免,或者認為只有代碼架構師才能避免的觀點也是片面的。
2.責任,代碼架構師能夠對自己的項目負責任,但是負責任也不一定必須親自編碼,一個好的架構師需要緊密與遞交團隊結合在一起。
3.反饋,代碼開發是一個迭代過程,架構師應該隨同產品開發一直跟進,當然跟進開發過程不代表親自參與編碼,不寫代碼也不意味著會缺乏反饋。
4.尊重,為了項目能夠成功,架構師應該被尊重,架構師能夠寫代碼與每天寫代碼是兩回事,讓架構師每天沉浸在代碼細節編寫中,反而是一種不尊重。
其他兩個支持架構師必須編碼的理由是:開發人員相比代碼架構師實現項目系統的細節可能要困難;其次,沒有架構意識的開發人員會將更多問題帶入代碼。這兩個問題其實正是訓練開發人員的機會,通過架構師的引導能夠培養更多高級軟件工程師。
其實,架構師編寫代碼也有很多缺點:
1.只見樹木不見森林,一個架構師忙于編寫調試代碼會導致他沒有時間或精力及時發現開發演進中的架構致命問題。
2.對于一個好的架構師,與其將時間花在編碼上,好像是發揮其價值,其實更大的價值是進行代碼審查以及與項目有關的知識技術分享上。
3.上下文切換是非常昂貴的,架構師一邊負責架構設計的邏輯一致性,一邊如果還要跟著項目編碼幾天,這兩種上下文切換其實代價是昂貴的,比如某個人需要更改底層API代碼,將之前隱藏的細節暴露給外部調用者,架構師會建議其在原來的API代碼上再封裝一層等等,這些都是為了維護系統的可維護性和演進發展的邏輯一致性,不至于代碼系統隨著時間推移變得混亂和不可維護。也就是說,架構師主要職責是對系統的架構負責,架構必須是可維護的,必須是可擴展的,長年累月地能保證做到這兩點是非常不容易的,其中大量工作是與莽撞開發人員交涉。所以,架構師身兼數職導致上下文場景不同切換,幾項工作可能都做不好。
讓架構師親自動手編碼是一個短期思維,并不具有擴展性,只有知識分享才能在長期開發周期中具有可伸縮擴展性。架構師有時動手解決了一些架構問題,他必須向其他人講解分析問題,以及自己的解決方案的理由,這些都是知識經驗分享,這種文化會在開發人員之間傳播。一個好的架構師會很快編碼解決問題,但是如果不將其知識分享,就只是技巧技能的炫耀而已,而且會導致開發人員想:你能你就干,進而以后架構師越來越多地親自動手編碼;如果他花更多時間講解培訓相關知識,幫助其他人更深入理解這項任務,那么以后越來越多這樣的任務就可以直接交給開發人員完成。
所以,很少或沒有編碼的架構師就被強迫積極分享他們的經驗知識,從而能讓項目減少對架構師的依賴,當然,不少架構師為了保護自己的工作總是通過塔布禁忌規定只有少數人才知道如何做這件事。
當然,有一些支持架構師不編碼的理由也是值得商榷的,比如:
1.架構師不應該關心實現細節。其實架構師有責任提出最佳實踐等細節,包括開源組件推薦等等,提供實現細節方案比較和知識分享。
2.架構師只要在這個項目寫一次代碼,然后就可以到其他項目了,這種觀點也會給項目帶來災難,因為項目質量(維護性與擴展性)就難以保證了。
3.架構師是高級職務,可以陪伴客戶打高爾夫談業務需求,而開發人員都不知道怎么打高爾夫。這個觀點在中國還是有點效果的。
最后總結:知識共享型的架構師不是不編碼,而是不會編制太多代碼,通常職責如下:
1.代碼審查code review ,引導如何編碼更好
2.結對編程。
3.考慮架構的改變,如果API經常被改變,或經常向別人解釋這段代碼是如何工作的,這些就有必要對代碼架構進行變動,讓其變得更易懂或更易于修改。
4.針對不斷涌現問題,經常和隊員討論可能的解決方案。
來源網絡,侵權刪除返回搜狐,查看更多
責任編輯:
總結
以上是生活随笔為你收集整理的解决方案架构师我需要懂代码吗_架构师不写代码,能行吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小学有学计算机课程,如何进行小学计算机课
- 下一篇: 第一次使用信用卡要什么时候还