1、開發(fā)者和架構師之間最大的區(qū)別是什么?
軟件架構師的角色需要理解最重要的架構驅動力是什么,他提供的設計需要考慮這些因素。架構師還要控制技術風險,在需要的時候積極演化架構,并且負責技術質量保證。從根本上講,架構師是一個技術領導者的角色,這就是最大的區(qū)別。 2、一位開發(fā)者如何才能成為一位架構師?他/她需要掌握哪些領域之外的能力?
我認識的大部分優(yōu)秀軟件架構師同時也是出色的軟件開發(fā)者,他們都是經(jīng)過時間逐漸發(fā)展成為架構師的。你需要有退后一步看代碼的能力,從而理解特定軟件系統(tǒng)背后的設計決策。退后一步才能看到“大局”,這是架構師必須掌握的核心技能。 3、你對軟件架構的理解是否因為你的經(jīng)歷和實踐而改變過? 是的。我對軟件架構的理解是根據(jù)我在咨詢公司工作時在各個項目中負責軟件架構的經(jīng)驗形成的。咨詢是一件好事,尤其從最近我開始從事獨立咨詢師這個工作之后,我可以看到很多不同的團隊,不同的架構,不同的技術,以及人們不同的工作方式。世界各地的文化多樣性又為工作的復雜度增加了一個維度。無論是尋找特定問題解決方案的過程,還是為各種想法去蕪存菁的過程,這些經(jīng)驗和與我共事的人的反饋一起最終形成了我今天對軟件架構的認識,這些思維也反應在了我的書中。 4、有沒有什么事是架構師永遠都不應該做的?
程序員從初級走向資深的過程中,會面臨兩個支路,一個叫技術主管,另一個則是架構師。 總結程序員到架構師之路的忠告: 1、程序就是一切。文檔是緊接其后的事情。因此,把你們的代碼寫成本身就是文檔,而且要好用。 2、測試 測試 測試。 3、單元測試要嚴格。任何一個單元測試中發(fā)現(xiàn)的bug都負擔了開發(fā)人員成本外的雙重代價。你們要知道,我寧愿給你們更多的薪水也不愿找別的QA公司來測試、讓你們修改bug。但如果你的程序寫的很差,那我只好把這些錢由這些人平攤,你們只能得到其中很小的一塊蛋糕。 4、寫出好代碼要能給人類閱讀,給CPU使用。絕對不能向爛代碼低頭。 5、閱讀更多的知識,不要局限于目前的工作所需。如果你只掌握今天需要的知識而不知明天需要的,你不會有發(fā)展進步。 6、回家不時的做做飯。是的,真的飯。這會讓你知按照菜譜做飯和自己創(chuàng)造一頓飯之間的區(qū)別。前者是在做飯前已經(jīng)知道了需要什么,而后者是根據(jù)你目前有的來做 … 就這一點點不同。 7、抽象的能力,抽象思考的能力怎么強調都不為過?,F(xiàn)實的需求紛繁復雜,如果架構師不能夠把這些亂無頭緒的需求抽象成一些“概念”,在概念的層次進行思考,系統(tǒng)根本就無法設計。 8、技術領導力,要用技術的影響力來領導人,而不是威權和職位。換句大白話來說,就是要能讓技術人員服你。有了技術影響力,你在團隊發(fā)出的聲音才會被傾聽,被尊重。 另外還有一點可以通過自身的學習來獲取一大進步。 |
|