架構師和架構

編程語言 程序員 軟件 Java 糖唐堂 糖唐堂 2017-09-16

是走管理還是技術專家?是每個堅持下來的程序猿都會考慮的問題。誠然,在前路上需要很多機遇,我們所能做的最多是做好自己。在日復一日的開發中磨練,精進;然後浴火重生。是的,這就是程序員的生活,枯燥中帶點乏味,痛苦時充滿著驚喜。

有人說不想當Team leader的程序員,絕對不可能成為真正意義上的架構師!同時,不是Team leader的架構師,也是一個被架空的,蒼白無力的架構師!架構師是具有技術發言權,方向決策權,和團隊人員開發資源調配權的開發團隊的Team Lear,也是這個程序的設計者,當然他是這個程序團隊的靈魂!今天,我們就來聊聊“架構”的那些事。

何為架構

一般而言,軟件系統的架構(Architecture)有兩個要素:

1.它是一個軟件系統從整體到部分的最高層次的劃分。

2.一個系統通常是由元件組成的,而這些元件如何形成、相互之間如何發生作用,則是關於這個系統本身結構的重要信息。

詳細地說,就是要包括架構元件(Architecture Component)、聯結器(Connector)、任務流(Task-flow)。在建造一個系統之前會有很多的重要決定需要事先作出,而一旦系統開始進行詳細設計甚至建造,這些決定就很難更改甚至無法更改。顯然,這樣的決定必定是有關係統設計成敗的最重要決定,必須經過非常慎重的研究和考察。

架構是一個約定,一個規則,一個大家都懂得遵守的共識。需要強調的是“架構因未來而存在!

業務流

iOS作為移動前端,大概就是這樣,調API,顯示,跳轉,然後如此往復。然而,真的是這樣簡單嗎?所有事情最難的時候都是開始做的時候,當你開始著手設計並實現某一層的架構乃至整個app的架構的時候,很有可能會出現暫時的無從下手的情況。不管你採用什麼方法,全局觀、高度的代碼審美能力、靈活使用各種設計模式一定都是貫穿其中的。

首先,搞清楚要解決哪些問題,並找到解決這些問題的必要條件。搞清楚對於業務方而言的真正充要條件很重要!這決定了你的架構是否足夠易用。另外,傳的參數越少,耦合度相對而言就越小,你替換模塊或者升級模塊所花的的代價就越小。其次,問題分類,分模塊。搞清楚各問題之間的依賴關係,建立好模塊交流規範並設計模塊。關鍵在於建立一套統一的交流規範。推演預測一下未來可能的走向,必要時添加新的模塊,記錄更多的基礎數據以備未來之需。軟件是有生命的,你做出來的架構決定了這個軟件它這一生是坎坷還是幸福。

先解決依賴關係中最基礎的問題,實現基礎模塊,然後再用基礎模塊堆疊出整個架構。發現架構有問題就及時調整。否則以後調整的成本就非常之大了。最後,打點,跑單元測試,跑性能測試,根據數據去優化對應的地方。

好的架構

架構的最終體現是一個軟件,是模塊化,簡潔,可維護,可任意替換,人性化設計,可以把它全部打碎了重新從一個模型自由的再去組裝成另一個模型。是高內聚,低耦合;既可以作為一個完整的可交付模塊,也可以“打碎”重組。架構需要考慮的是擴展性,安全和性能,如此才算是合理的架構。

好的架構需要下面幾點:

代碼整齊,分類明確,沒有common,沒有core

不用文檔,或很少文檔,就能讓業務方上手

思路和方法要統一,儘量不要多元

沒有橫向依賴,萬不得已不出現跨層訪問

對業務方該限制的地方有限制,該靈活的地方要給業務方創造靈活實現的條件

易測試,易拓展

保持一定量的超前性

接口少,接口參數少

高性能

糟糕的架構

生搬硬套,為了框架而框架。

被一套產品或體系“綁架”。

未理解即套用。

趕時髦,圖新鮮。

關注非功能性需求

架構師和架構

架構師的職能

架構師的第一職責是關注非功能性需求。很多以業務為主的項目型公司認為架構師就是救火員,即排錯、查錯的意思。中國的一個通病:即我們的程序員,很多時候不是在做程序,而更多時候是在做業務邏輯。技術路線關注的是非功能性需求,就是一種一通百通的東西。TCP/IP協議,加密解密,計算機原理(增補反碼),JPG碼,MPEG2-3協議,邏輯電子電路,計算機編譯器原理(堆、棧、隊列),那些你平時工作時不會一直用到,一些底層的東西,才是技術的核心。那些以為搭搭界面,寫寫框架,不深入底層的程序員,將會與架構師越來越遠。

管理方法中的六西格瑪的第一條就是“技術人材是當下企業的第一生產力”。大家如果要走技術道路,請多關注一下更細節,更底層的東西吧。

用架構師的思想去思考

作為技術線,需要:

每天都在學習,非常熟悉公司所處行業或者本公司的業務,熟悉軟件工程的各種規範,踩過無數坑。不會為了完成需求不擇手段,不推崇quick & dirty,及時承認錯誤,不要覺得承認錯誤會有損你架構師的身份;不為了炫技而炫技,精益求精。

成功的唯一方法便是,承認現實,超越現實,鼓起勇氣並善用它。學會平靜的對待生活中的不完美之處,適應自己的情緒,瞭解如何讓它們自然宣洩出去。學習如何把不完美的地方轉換成我們的優勢,激發我們的創造力。自我激勵,不管外部條件是否有激勵性,找到一種激發最佳狀態的情緒,學習如何在我們的意識中製造一些波動來激勵我們前進。

架構師和架構

如果你也想在IT行業拿高薪,可以參加我們的訓練營課程,選擇最適合自己的課程學習,技術大牛親授,7個月後,進入名企拿高薪。我們的課程內容有:Java工程化、高性能及分佈式、高性能、深入淺出。高架構。性能調優、Spring,MyBatis,Netty源碼分析和大數據等多個知識點。如果你想拿高薪的,想學習的,想就業前景好的,想跟別人競爭能取得優勢的,想進阿里面試但擔心面試不過的,你都可以來,群號為:71859422

注:加群要求

1、具有1-5工作經驗的,面對目前流行的技術不知從何下手,需要突破技術瓶頸的可以加。

2、在公司待久了,過得很安逸,但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的可以加。

3、如果沒有工作經驗,但基礎非常紮實,對java工作機制,常用設計思想,常用java開發框架掌握熟練的,可以加。

4、覺得自己很牛B,一般需求都能搞定。但是所學的知識點沒有系統化,很難在技術領域繼續突破的可以加。

5.阿里Java高級大牛直播講解知識點,分享知識,多年工作經驗的梳理和總結,帶著大家全面、科學地建立自己的技術體系和技術認知!

6.小號或者小白之類加群一律不給過,謝謝。

目標已經有了,下面就看行動了!記住:學習永遠是自己的事情,你不學時間也不會多,你學了有時候卻能夠使用自己學到的知識換得更多自由自在的美好時光!時間是生命的基本組成部分,也是萬物存在的根本尺度,我們的時間在那裡我們的生活就在那裡!我們價值也將在那裡提升或消弭!Java程序員,加油吧!

相關推薦

推薦中...