『壹』 程序框架是什麼
問題一:程序開發中的框架是什麼 我們目前先不要了解那麼多 框架是為了方便我們程序員開發 減貳代碼量 及代碼質量的工具
框架(Framework)是整個或部分系統的可重用設計,表現為一組抽象構件及構件實例間交互的方法;另一種定義認為,框架是可被應用開發者定製的應用骨架。前者是從應用方面而後者是從目的方面給出的定義。
可以說,一個框架是一個可復用的設計構件,它規定了應用的體系結構,闡明了整個設計、協作構件之間的依賴關系、責任分配和控制流程,表現為一組抽象類以及其實例之間協作的方法,它為構件復用提供了上下文(Context)關系。因此構件庫的大規模重用也需要框架。
java開發中的框架不是太多 我們可以慢慢學習 先慢慢了解一種。
問題二:什麼是程序框架 不僅僅是類庫這么簡單。我個人的理解是:完成某項業務流程或者功能的具體方案。框架採用了相對比較成熟的方式或者步驟或者流程去做這件事情,讓程序員只專注於邏輯本身或業務本身,省去了很多繁瑣的步驟。
問題三:什麼是應用程序框架 就像蓋樓的框架一樣。每個樓外觀不一樣。但是每個樓的基本的框架是一樣的。
程序的框架就是針對程序的特點。把程序的共同特績提取出來。能進行多次的開發利絕乎廳用。提高開發效率。
問題四:Java中的三大框架分別有什麼用 一、Spring
Spring是一個解決了許多在J2EE開發中常見的問題的強大框架。 Spring提供了管理業務對象的一致方法並且鼓勵了注入對介面編程而不是對類編程的良好習慣。Spring的架構基礎是基於使用JavaBean屬性的Inversion of Control容器。然而,這僅僅是完整圖景中的一部分:Spring在使用IoC容器作為構並隱建完關注所有架構層頃乎的完整解決方案方面是獨一無二的。 Spring提供了唯一的數據訪問抽象,包括簡單和有效率的JDBC框架,極大的改進了效率並且減少了可能的錯誤。Spring的數據訪問架構還集成了Hibernate和其他O/R mapping解決方案。Spring還提供了唯一的事務管理抽象,它能夠在各種底層事務管理技術,例如JTA或者JDBC事務提供一個一致的編程模型。Spring提供了一個用標准Java語言編寫的AOP框架,它給POJOs提供了聲明式的事務管理和其他企業事務--如果你需要--還能實現你自己的aspects。這個框架足夠強大,使得應用程序能夠拋開EJB的復雜性,同時享受著和傳統EJB相關的關鍵服務。Spring還提供了可以和IoC容器集成的強大而靈活的MVC Web框架。
二、STRUCTS
Struts是一個基於Sun J2EE平台的MVC框架,主要是採用Servlet和JSP技術來實現的。由於Struts能充分滿足應用開發的需求,簡單易用,敏捷迅速,在過去的一年中頗受關注。Struts把Servlet、JSP、自定義標簽和信息資源(message resources)整合到一個統一的框架中,開發人員利用其進行開發時不用再自己編碼實現全套MVC模式,極大的節省了時間,所以說Struts是一個非常不錯的應用框架。
三、Hibernate
Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱資料庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序實用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。
問題五:Java程序的基本框架是什麼? public class Hello
{ public static void main(String[] args)
{
System.out.println(Hello World!);
}
}
每本介紹Java編程的書籍 講Java編程結構是必講的第一個程序;
問題六:軟體架構師主要是做什麼啊? 你既然已經工作了,我覺得你就應該多少了解一點把,一般公司也都有架構師的存在呀。
架構師主要工作算是系統分析師,制定架構,以及開發時使用框架,類似於工程裡面的總設計師。
確認和評估系統需求,給出開發規范,搭建系統實現的核心構架,並澄清技術細節、掃清主要難點的技術人員。
要求你就必須從程序員轉型到架構師,可以看看一些架構師的書,其實最做的來源於你平時的積累。對技術理解很透徹。另外就是對框架特別熟悉。當然這些都必須你擁有很豐富的項目經驗
問題七:C語言的基本框架是什麼意思? main函數是程序執行的入口函數,也就是程序啟動時就從這個函數開始,這個函數有很多形式,例如void main(),void main(void), int main(), int main(void),其中void有無是一樣的,void本來就是沒有的意思,另外最正規的形式是int main(int argc, char *argv[]); 其中argc是argv這個字元串數組的長度,argv是從命令行接受的參數
問題八:什麼是框架?框架中要包含什麼?為什麼要開發框架?如何做框架? 以Java 為例子。 java 之前沒有框架,或者說 自己公司封裝了自己的框架。為什麼要封裝穿? 因為1 在實際開發中 很多代碼重復再敲,浪費時間就是浪費金錢。
如: jsp+javabean+servlet 開發 jsp中的數據通過request-------》filter(自己解析了 封裝成對象)-----》servlet 這還是好一些的。起初是 :request-------->servlet------>servlet 自己解析 通過request.getparxxxx(參數名) ------》封裝到javabean 代碼重復比較大。
如果 用springmvc 就好多了 jsp 通過form 表單提交 直接映射到 controller 方法中的參數 (一句話 就是省代碼)
框架的好主要作用是: 快速開發。
好的框架設計 的作用: 松耦合,便於後期維護。減少多餘的代碼量。
框架包含了 許多 反射機制。
設計模式。
如何做框架:根據你的需求來設計。。。。。。
問題九:程序設計中的架構到底是指什麼? 架構=框架與構造,假如將一個應用程序看做一輛車,程序員就是生產製造人員,程序中的每個關鍵詞、常量、變數是製造汽車用的各種原材料,而函數、類、功能模塊、定義就是使用原材料製造的不同級別的零部件,然後程序員將這些部件組裝起來。而架構就是指導程序員如何組裝程序的圖紙。
架構規定了函數、類、模塊之間的關系、邏輯、運行機制。那麼架構師就是規劃程序項目的人,架構師可以不懂編程細節,但是他必須懂得合理安排各功能塊之間的關系,使整個項目具有很高的可維護性、很低的維護成本、很高的開發效率。
順便說下,雖然我也是個程序員,但程序員就是打工的,俗稱「碼農」,架構師的工資比程序員高多了。當然一些小項目,當你自己規劃程序的時候,你也在小規模地架構程序,比如決定是否將一個函數封裝在A類,或是B類中。
問題十:java的框架是什麼意思? 精華答案╄→小胖妞4級2010-06-12 框架就是一些類和介面的 *** ,通過這些類和介面協調來完成一系列的程序實現。JAVA框架可以分為三層:表示層,業務層和物理層。框架又叫做開發中的半成品,它不能提供整個WEB應用程序的所有東西,但是有了框架,我們就可以集中精力進行業務邏輯的開發而不用去關心它的技術實現以及一些輔助的業務邏輯。大家熟知的Structs和Spring就是表示層和業務層框架的強力代表。一般的公司面試時看你是否涉及過J2EE的開發,總會考察你有沒有這方面框架的認知力。好的框架應當是考慮:穩定、靈活(在某個開發領域,或某個行業來說,不要搞成絕對通用,目前很難) 、容易維護(一致的表現,裡面的凡是相同意義的操作都有一致的面孔)、新手容易上手、利於迅速開發N多項目(項目之間知識可以不斷積累,通用功能的與項目專用功能分離)。對於當然首先要理解框架是什麼?字面含義就是條條框框組成的一個架子,這個架子怎麼理解呢?
1)框架可以這樣來理解,如建一座房子,先把房子的擰⒅子建起來,這就是一個房子的框架。至於房子內部怎樣,哪裡是房間,哪裡是客廳,就看設計者。軟體也是一樣,把一個軟體的大概的擰⒅子建起來,就是軟體的框架。一個軟體半成品,幫你做了一些基礎工作,你就可以在這個基礎之上,來定製適合你自己的應用。流行的框架非常靈活,以適應不同的需求。打個比方,如果你輸入到屏幕上用System.out.println()如果println方法都要自己去實現,那麼是不是很恐怖。所以框架在解決大規模的問題上,這些基礎工作是必需的。2)框架就是一顆松樹,你只要在上邊掛點裝飾物和幾片小雪花,裝幾個小電燈,它就可以變成炫目喜慶的聖誕樹。3)框架象相框一樣,做好相框,只要往裡邊放相片,隨意你怎麼放相片,大的,小的,都可以。 相框是不變的,相片里隨你換,如果相框太小放不進相片就是框架沒做好啊。 所以這里可以稍微擴展一下,一個框架的復雜程序以及載入東西的多少,是十分關鍵的。現在就有個別人批評spring框架過大,局限過多。 如果一個項目就是一個學校的話,struts就是開學的時候負責報名接待的部門,來了個學生(請求),他們會根據你的姓名(請求路徑)查找你是那個系,那個班的,把你帶到相應的地方(action),然後就是那個對應你的組織(action)來處理你了。他的花名冊就是配置文件(sturts-config。xml),上面可以配置你的姓名(請求路徑),是否驗證你身上帶沒帶學費(viladate),把你讓誰(request)帶到你的組織里去,放你行李的小車(formbean)的編號等等。xml里的struts配置就是保安要驗證的信息,看你是不是有這個學校的錄取通知書。等你大二大三了,你成了接待人員(action),你只要知道你去組織那些學生(配置struts-config。xml),怎麼處理他們(調用那個service方法),著就是struts了。spring 的IOC就是本應該有學校做的招聘工作,交給的獵頭公司(控制反轉)然後把招聘到的人員交給學校使用。 模式更側重於框架內部,也就是房間內部各傢具之間如何擺放的組合思考方式。
『貳』 開發主流框架有哪些優缺點
在進行軟體開發的過程中,了解軟體開發的主流框架是非常重要的,主流框架主要有哪些呢?Hibernate、Struts和Spring是現在使用最主流的三種框架,很多人對軟體開發框架的了解非常少,在開發過程中不知道應該選擇哪種框架進行使用,這三種框架有哪些優缺點呢?下面電腦培訓為大家介紹這三種主流框架的優缺點。
一、Hibernate
Hibernate書屬於一種開放源代碼的對象關系映射框架,在使用過程中,它能夠對JDBC進行對象封裝,讓程序員在開發過程中進行隨心所欲的使用對象編程。
優點:Hibernate使用能夠起到Java的反射機制,並不是使用位元組碼程序進行使用的。在使用過程中具有很好的性能,並且還是一個輕量級的框架程序,有很好的靈活性。Hibernate能支持很多種關系資料庫,能夠處理一對一和多對多的各種關系。
缺點:Hibernate在使用過程中受限於所使用的對象模型,它所獨有的界面和市場范圍是非常不穩定的,並且在使用過程中,IT培訓認為它所具有的強大發展動力能夠減少這些風險。一般情況下,它所具有的開源持久性框架只有一些,市場沖擊力並不大。
二、Struts
Struts框架具有很好的組件模塊性,在使用過程中有很好的靈活性和重用性,在使用過程中主要基於MVC的web程序開發。
優點:像許多Apache項目一樣,如Tomcat和Turbine,Struts是一個開源軟體,這是一個很大的優勢。很多開發人員能夠更深入地了解其內部實現機制。如果是考慮頁面導航,那麼昆明北大青鳥認為這是一種以後的發展方向,這樣的方法對於後期的維護有著非常大的好處。
缺點:在進行學習的過程中,很多人都知道Taglib是Struts使用中的一大優勢,對於初學者來說,這並不是最好的選擇,因為在學習開發的時候,這是一個持續學習的過程。如果是沒有經驗的初學者,在使用過程中會被打亂自己編寫代碼的習慣,要是能夠熟悉這種編程方法,對後續的學習有很大的幫助。
三、Spring
這是一個很好的開源項目,在使用過程中非常的活躍,能夠和IoC、AOP的框架結構結合使用,這種框架不需要在每一層進行使用,它的模塊化是非常好的,使用的時候可以選擇任何一個模塊進行使用,並且能夠實現MVC,對於數據能夠提供統一的介面。
優點:無論您是否選擇使用EJB,Spring都可以有效地組織您的中間層對象。Spring消除了在許多項目中常見的Singleton的過度使用。北大青鳥雲南計算機學院認為這是一個非常嚴重的問題,會降低系統的可測試性和面向對象的程度。
缺點:這種框架的使用並不是很多,很多人不會選擇,在使用在JSP中需要寫很多的代碼,並且控制器過於靈活,在使用過程中缺少公用控制器。
『叄』 程序開發中的框架是什麼
程序開發中的框架(例如1000萬+行的Qt)往往是對常見功能的封裝(類似於成語對常用含義的代指,不同點在於應用框架最終對CPU表達含義時候會把成語替換為原本含義-通過函數調用),拋開框架,程序會變得因缺少一些'固定成語'(函數)的'釋義'(函數實現)而變得無法執行。
所以,程序框架理解為基礎或者機械標准件(例如螺絲螺母這些有明確標準的機械部件)更為貼切。
這樣理解,假如你要造一輛馬車,在沒有框架的情況下,你需要自己去伐木,去把木頭做成木板,木棍,然後組成輪子,門,等部件,然後組裝起來,但如果你用了框架,就相當於你有現成的輪子,門等部件,你只需要組裝一下就可以了。
可以說,一個框架是一個可復用的設計構件,它規定了應用的體系結構,闡明了整個設計、協作構件之間的依賴關系、責任分配和控制流程,表現為一組抽象類以及其實例之間協作的方法,它為構件復用提供了上下文(Context)關系。因此構件庫的大規模重用也需要框架。
框架(Framework)是整個或部分系統的可重用設計,表現為一組抽象構件及構件實例間交互的方法;另一種定義認為,框架是可被應用開發者定製的應用骨架。前者是從應用方面而後者是從目的方面給出的定義。
『肆』 php開發需要框架嗎
php中也存在框架,如國內比較常用的thinkphp、brophp。國外的Laravel。但使用其也用利弊,分析如下:
框架是非常好的,它能讓決定更連貫。框架能避免我們寫一大堆自定義模塊來實現這些性能,我們所需要做的就是將這些共用模塊放在框架中實現。框架節省了我們不少的時間和精力,並且讓擴展變得更容易。但是這也是問題的根本所在。
對錘子來說,所有事物都是釘子
Abraham Kaplan說過的一句話能最好地控訴工具的缺點:把錘子給一個小孩,他會用錘子槌遇到的所有事物
這就是衡量你是否更職業的時候了,交付對未來擴展最好的代碼而不是交付最容易實現的代碼。是為了以後的需求更好的設計你的代碼還是讓以後的人做需求的時候再考慮,這就是程序員的責任感問題了。作為一個更職業的開發者,我們必須不依賴框架獨立思考。
這就是你的錯
是不是經常聽到某人在抱怨某個框架?我已經聽見好多人抱怨過Rails了:「Rails應用總是糟糕的結構」或者「Rails測試總是這么慢」。最開始,我也曾經這么認為。但是現在,每當我聽到這些抱怨的時候,我就會意識到其實抱怨者是懶惰的。Rails,或者其他框架,只是一個工具而已,你要做的是控制它。把壞代碼歸咎於無生命的框架只能說明你的不專業。
選擇正確的工具,或者正確地使用工具
決定變得更專業
我們必須根據基本的需求來選擇工具。框架確實能做很多事情,並且需求會決定整個代碼結構。有的時候框架會很適合某個需求。但是當框架不適合某些需求的時候,你就有責任為了代碼的清晰和干凈修改框架或者封裝框架。
作者Myles Megyesi正文結束讀後感文章中提到框架只是一個工具,你不能用這個工具來滿足你的所有需求,當框架無法清晰完整地滿足你的需求的時候,你要做的不是寫一大堆垃圾麻煩的代碼來實現需求,更不是修改你的需求來滿足更容易實現這件事。作為更專業的你,你需要修改框架,或者使用抽象等思維來使你的代碼達到清晰干凈。
這點在實際開發中會遇到非常多。當別人問你:這里的代碼為什麼這么寫? 如果你的回答是:沒辦法啊,因為框架是這么這么做的,我只能這么這么做。這就說明了你已經被框架束縛住了。不要認為框架是權威,框架也是別人寫的,它寫的時候不會考慮到你的需求。只要你的需求是團隊的公共需求,需要修改,增加框架的時候,你就應該修改框架。
代碼是讓人更清晰自然的閱讀和開發的,如果被一個框架捆綁住,實際上就是本末倒置了。
『伍』 為什麼有人說大部分碼農做不了軟體架構師
從事軟體開發多年,在編程行業真正的架構師比例少的可憐,就目前國內軟體開發環境而言,真正意義的架構師還不是很多,因為大部分的代碼框架幾乎從開源代碼社區裡面拿出來,然後定製成自己公司產品需要的,其中研究框架的時間比較長的,並且能夠深度定製的程序員就算是高手了,因為很多開源的代碼更新速度非常快速,能跟上開源社區的代碼更新速度的企業已經是實力非常強的公司了,國內企業現在真正意義上的從頭開始設計一個框架然後推向市場相對比較少。
經過十幾年的發展,國內編程人才的平均水平已經上來了,雖然在頂級程序員由於在編程底蘊以及生態系統這塊有差距,但基層的程序員水平已經上來了,國內很多互聯網公司做的產品有些已經不弱於歐美等企業,這些都是國內程序員水平提升的結果,而且現在由於培訓行業在國內普及,入門級別的程序員在國內數量巨大,所以很多人喊著國內程序員行業已經飽和了,已經不適合再去從事程序員的工作了。
事實上國內軟體行業內需依然足夠多,特別是現在的三四線城市都陸續出現了軟體公司,而且規模和數量都在提升,國內企業對中高級程序員的需求量還是非常巨大,五六年大小公司對於這類的人才招聘一直沒有停止過,而且薪資水平還維持在非常高的水準,了解這個行業現狀對於規劃自己的職業生涯還是有著非常大的好處。
架構師這種職位可遇不可求,基本上國內架構師都是自己本公司內的優秀的軟體工程師,成為了優秀的程序員並且在公司內部深得公司的信任願意給這種突破的機會,抓住了後邊的就會給與架構師的待遇,不是每個程序員天生就是做架構師的料,關鍵還在於平時的積累,有了機會抓住了,要成為架構師先要自己成為一個優秀的程序員,優秀的程序員需要具備什麼樣子的因素,現在就根據自己技術生涯的一些經歷分享給大家。
基本功扎實。 很多程序員在入門之前由於在學校裡面比較重視基礎,還能看看基礎,在成為了程序員之後就開始放鬆了對這方面的要求,所以導致很多程序員見到有筆試的公司,直接就選擇了放棄走人,不能講這類的程序員水平不行,但起碼不是優秀程序員的范疇, 優秀的程序員是經得住基本功考驗的,是不怕這些所謂的筆試題目的。
演算法扎實。 很多程序員做了很長時間還不覺得演算法挺重要,演算法貫穿整個技術生涯,如果沒有意識到這點說明意識層面還沒理解到,證明需要彌補的東西還是非常多,有些程序員可能是學習了一門編程語言就匆匆去找工作了,運氣還不錯還找到工作了,沒有很好的規劃技術生涯路線,一個標準的程序員需要的一門基礎的編程語言,熟悉數據結構,並且穿插著學習演算法,這三樣也是優秀程序員的標配,學習技術不是由著自己性子去做事,需要有規劃,這其中不能少了演算法的因子。
錘煉編程思想。 很多程序員覺得能夠寫代碼,時間長了經驗到位了慢慢就能熬成資深技術專家了,程序員不是靠著熬日子過的,需要不斷的提煉編程思想,舉個簡單的例子,做網路編程如果懂得了一門編程語言的編程經驗,相信切換到別的語言只需要很短時間內就能搞定,而且積累總結類似的場景以後遇到這種場景都能靈活應對,還能同步遷移到類似的場景,不能只是為了做而作,僅僅就是為了完成任務,那麼提升的空間有限,不能因為工作承擔的東西就這么點,而不去補充其餘的東西,善於總結也是優秀程序員需要具備的一種意識。
成為架構師沒有所謂的模板,而且有些人一輩子也沒有這種機會,但想要達到這種境界就需要先讓自己成為一個優秀的程序員,這樣子遇到有理想的企業抓住機會就上去了,一旦進入這個級別後面的編程生涯就會有根本的變化了,關鍵在於平時一點一滴的積累,讓自己長期處於一種高效的學習狀態,有太多的程序員經歷了幾年的適應期就提前讓自己進入了舒適期,結果隨著年齡的增長技能沒有相應的跟上導致年齡大了競爭力下降,出現了老了被企業淘汰的悲劇,什麼樣子的態度決定什麼樣子的人生,也就決定了什麼樣子的結局,希望能幫到你。
作為一名IT行業的從業者,同時也是一名計算機專業的研究生導師,我來回答一下這個問題。
首先,目前IT行業內大量的程序員確實無法成長為架構師,主要原因集中在三點,其一是自身的知識結構不足以支撐向架構師方向發展;其二是崗位工作任務受限;其三是行業迭代速度太快,學習壓力較大。
早期的架構師主要集中在後端領域,針對於不同的開發領域,對於架構師的要求也不盡相同。總的來說,架構師的任務主要集中在三個方面,其一是整體技術框架設計;其二是技術選型;其三是解決難點問題。所以對於程序員來說,如果想成長為架構師,需要做好以下幾個方面的知識儲備:
第一:豐富的開發經驗。 開發經驗通常是軟體架構師的基本要求,通常軟體架構師都是從初級程序員、主力程序員、研發級程序員等崗位一步一步成長起來的,每一個階段都會積累一定的開發經驗,這些經驗對於架構師的方案設計會起到重要的作用。對於大量的程序員來說,從主力程序員向研發級程序員發展會存在較大的困難,主要原因就是基礎知識結構的問題,不少程序員通過讀研的方式完成這一步升級。
第二:豐富的知識結構。 架構師的知識結構不僅僅局限在技術層面,還需要掌握大量的行業知識,不同行業領域往往有不同的特點,要能夠根據這些特點來完成具體的方案設計。
第三:緊跟技術發展趨勢。 架構師一定要緊跟技術發展趨勢,同時能夠對於未來的發展方向有較強的認知能力,這對於架構師的方案設計會起到重要的作用。對於技術趨勢的認知能力,是判斷一名架構師能力的重要因素。
架構師並不是一個很好玩的升級路線。
相對於架構師的開發工作。研發工作更有趣,更容易得到 社會 的承認,不論是圖形學,還是人工智慧,區塊鏈,甚至黑客(網路安全),憑借你的智慧和努力,可以在短時間內取得成就,並達到一個很漂亮的高度。研發方面是拼年輕,智商和體力的工作,有眾多的天才少年取得漂亮的成果,每年有大量新的技術突破和文獻等著大家研究。你做的每一件事情,都能表現出漂亮的成果,全局光照,計算機視覺。或者很容易賺到很多的錢,自動駕駛或者區塊鏈ico,就算做 游戲 外掛,其收入也大得超乎你的想像。
而架構師不是,架構師拼的只有經驗,正確的方法和項目數量。《C++程序設計新思維》裡面有一句話:「只有天才的程序員沒有天才的構架師。」 在構架師的世界裡不存在天才,只存在重構。一定要有正確的方法(敏捷開發),然後就是無數個項目和時間的鋪墊。然而對一個架構師應該明確,我們的職責是內部質量而不是外部質量,我們要把軟體做的強壯且易易擴展。但你會發現,對於外行麻瓜來說,這根本不吸引人,麻瓜老闆經常說一句話:你功能做不出來我們公司就破產了,別他媽的再花時間重構了。
至於為什麼架構師很少
內部原因是: 架構師太無趣了,相對於圖形學光照演算法,你卻強調測試驅動重構持續集成。研發工程師會得到大量的外部激勵,所有人都去贊揚他們的成果。而構架師需要從自身產生激勵的能量,比如對代碼的潔癖,重構在不改變功能的情況下不斷優化代碼質量,一個分層,一個正確的依賴關系,甚至一個精簡美麗的命名,都需要由衷地感到興奮和刺激。否則很難熬下來。
外部原因是: 浮躁的 社會 容不下一個架構師成長的時間和空間。一個框架師需要大量的項目經驗,超級長的編碼時間。堅持正確的方法和一個融洽配合的團隊。國外的架構師都是大鬍子,而國內程序員到30歲,老婆就催著要去做管理崗位了。和研發工作拼智商不同,架構師就拼的是經驗,沒大鬍子沒五六十歲很難成為xx之父這個級別。
行業原因是: 架構師容不下架構師。架構是藝術不是科學,沒有一個統一的標准,每個成型的架構師心裡都有一套屬於自己的程序結構和原則,你可以看到十個圖形學程序員基於一個演算法合作,但你很難看到兩個架構師做一個項目不打架的。架構師需要有自己的團隊來驗證自己的觀點和共同進步,但就如同食肉動物永遠是食草動物的十分之一,行業也沒那麼多團隊給架構師來糟蹋。
經歷過很多項目洗禮,並有自己的想法和能力的架構師,必然是稀有動物。
但看起來無聊的架構師有什麼用呢?
他是輔助英雄,給整個團隊加各種屬性光環:降低代碼中的混亂(熵),讓團隊中初級的程序員做出高級的代碼,提高單位時間效率避免加班,讓團隊更容易進入未知領域,大幅度降低企業成本。
我現在做的混合現實領域,這是一個新的領域,有一個優秀的架構師可以在沒有前人經驗的情況下開疆闢土,並且可以帶起來整個團隊的開發質量,降低成本給客戶更多的獲利空間。
這個問題不知道提出來的緣由是啥,其實問題不是很合適,不過還是一分為二的來回答一下,如下:
架構師不是誰都能做到的,我想說如下幾點:首先,應具備的素質應該是快速的學習能力,需要從平常的任何工作活動中,快速學習,包括從自己的本質工作完成,以及與他人的交流中,而後者又尤其重要,從別人那兒學來,而快速形成自己的理解並超越對方,而這,從自然規律角度上來講,這只有少數人能做到;
其次,需要具有全局的視野,能平衡整系統各子系統之間的解耦與耦合,這個需要積累,需要在各子系統內有實際項目的、比較成功的設計編碼的問題處理能力,而尤其是問題處理能力又尤為重要,這也不是段時間能達到。
第三,在這個行當內,能靜下心來踏踏實實,保持飢渴的學習,保持積極正向的心態,不斷的越挫越勇,始終往設計架構方面努力,在當下整個行業浮躁的環境下,很對都想通過不斷的跳槽來達到漲薪的目的,這又會淘汰一大部分人。
最後,即便具備了素質,你能否當上架構師,取決於客觀因素了。因為一個架構師,決定了他所在領域的發展規劃,以及當前的問題現狀的改進,這個位置至關重要,不是那個人,上一層組織關系是不會讓你做這個位置的,上層組織還會考察你除了技術能力以外的,諸如與人溝通,管理你的上下級,包括你的上級的上一級到連三級的關系,關繫到你的直接老闆的,這些其實就很難說了。
呵呵,當然了,還有其他很多了,靠這個問題是說不清道不全的。
真正的軟體架構師對各方面的職業素養都要求比較高。架構師的工作,不是平時工作的簡單堆疊,除了專業技能要過硬外,還要思維活,想東西細致全面,需要自己去主動去接納工作以外的大量知識。此外,在性格方面也有一定要求,一個軟體架構師往往還需要具備善於溝通的品質。
總而言之就是要技術好、思維活、會交際。大多數程序員做不到架構師的位置主要是因為自身能力達不到,其次是一個公司裡面架構師佔比本來就想小。
一般程序員在公司負責的工作主要是維護日常的需求,在原有的架構上進行修改,所以很少會接觸到架構層面的東西。長期缺少接觸相關的知識及業務的機會,久而久之離架構師的標准也會越來越遠。
年輕的程序員在知識儲備上無法達到成為架構師的標准。
現代的高可用架構一般為:RDS、Cache、MQ、後端服務、監控服務。而隨便拿其中一個點,都有著非常多的技術點知識點需要掌握。
比如在多系統交互中,如何保證MQ中的消息能被對方系統消費,如何設計高可用的服務負載均衡,這些都是需要很多經驗才可以解決,但是一般的程序員又不容易接觸到架構設計。
而年紀大點的程序員要麼是後期缺少折騰的的動力,要麼在職業發展途徑走到不同的分岔路口,最終走上架構師這個樹枝上的寥寥無幾。
小富即安的心理。很多程序員滿足於現狀,缺少堅持不斷學習不斷提高的動力,每個月拿著萬把塊錢的工資,心安理得,懶得去折騰。
一個公司架構師在廣大碼農裡面佔比還不到10%,能成為架構師的一般都在公司里擔任研發和管理的角色,想像一下公司團隊的人員金字塔你就知道競爭力有多大了。
平常,開發的團隊一般都是10多人組成。幾個團隊間一般會存在一個技術面最廣、技術經驗較充足的人,叫做架構師或者說是TL。而架構師的存在,一般在眾多的碼農中占的比例少之又少,可能連碼農總人數的10% 都達不到。軟體架構師也存在初中高級。
碼農都會寫代碼,對計算機編程語言都有自身的理解。但是很多時候,程序員或者說是碼農只是機械的完成自身的編碼工作。為了完成任務,成長有限。
看到這里,很多人都會說:編碼時間長了,經驗積累的足夠,自身也就逐漸成為了資深技術專家。想法其實不能說是不正確,在一個人見多識廣後,自然自身的內涵也就足夠的豐富。從碼農的角度出發。除了架構師,很少有35歲以上的人士會在互聯網做程序開發。而一個人想要通過機械性質的編碼積累經驗。需要多少年成長才能見多識廣呢?是否會有碼農堅持到那一時刻呢?一個值得商榷的問題?
碼農是一份年輕人為主的職業。平均從業者的年齡都是20多歲。慢慢熬、慢慢積累在碼農中也不能說錯。但是很多人在軟體開發領域積累一定的經驗後就會轉型不做開發。
所以說,長久時間的碼農很少。而在短暫的碼農開發軟體的工作中,脫穎而出,成長起來的人更少。
些許拙見,供您參考。
從事互聯網開發多年,歡迎大家騷擾
小團隊一般 10 人左右,其中常常是技術最牛的人做架構師(或TL)。所以,架構師在廣大碼農中的佔比大概平均不到 10%。而架構師也可以分為初級、中級、高級三檔,江湖上真正高水平的軟體架構師就更少了。
所以,大部分(超過九成的)碼農幹上許多年,還是做不了架構師,這是什麼原因造成的呢?
1:碼農分為真的能寫代碼的,以及自認為能寫代碼的。
2:真的能寫代碼的碼農又分為自認為寫的不錯的,以及真的還不錯的。
3:真的能寫不錯代碼的碼農又分為會鑽研會不斷優化的,以及安於現狀的。
4:會鑽研的碼農又分為喜歡廣度了解新技術蜻蜓點水的,以及深入鑽研用到知識的。
了解廣度的碼農又有少部分願意深入某些技術,喜歡深入研究的又往往缺乏廣度知識。
6:為業務而技術的深度廣度都了解的碼農,又需要有良好的溝通能力。
7:而溝通好的,又有一部分當PM去了。
8:然後剩下的,又有一部分慢慢脫離實際開發(不再做任何實現)或者開始依靠拿各種中間件搭積木來作為「架構」手段。
9:除去這些,剩下對業務有一定了解,對技術廣度上有多種涉獵,深度上對部分技術研究徹底,還有很重要的一點,考慮問題足夠細致全面。
10:細致全面善於溝通,技術上深度廣度都沒問題, 又喜歡這個工作,還會不時做底層實現,從業務和開發兩個角度出發,搭出「架構」來是為了開發效率,為了運行效率,為了開發質量,為了業務靈活和運行穩定,為了維護方便等等這樣的人,個人認為可以稱為「架構師」。
而真能滿足這種需求的,別說題主的10%的比例,1%能不能達到我也持懷疑態度。其實現在的「架構師」大多數都停留在8這個層次,甚至很多在5這個層次就當上title上的架構師了。
總之,成為架構師,不僅僅是工作上的簡單積累,更需要主動接納工作外的大量知識,同時,對性格上對於非技術能力上也有一定的要求,不僅如此連思維方式都很重要,外加職業發展中又有很多岔路,最後走到架構師這根樹枝上的就寥寥可數了。
如果你想要往架構師的方向發展的話,那或許你可以看一下我分享給你的這份進階路線圖,主要針對2到5年及以上工作經驗的Java開發人員,裡面的技術包涵了Java高並發、分布式、微服務、源碼分析、高性能等技術,這些也是目前互聯網企業比較常用的技術,那麼來詳細看看。(圖片可以保存)
一:常見模式與工具
學習Java技術體系,設計模式,流行的框架與組件
常見的設計模式,編碼必備
Spring5,做應用必不可少的最新框架
MyBatis,玩資料庫必不可少的組件
二:工程化與工具
工欲善其事必先利其器,不管是小白,還是資深開發,玩Java技術體系,選擇好的工具,提升開發效率和團隊協作效率,是必不可少的:
Maven,項目管理
Jenkins,持續集成
Sonar,代碼質量管理
Git,版本管理
三:分布式架構
高並發,高可用,海量數據,沒有分布式的架構知識肯定是玩不轉的:
分布式架構原理
分布式架構策略
分布式中間件
分布式架構實戰
四:微服務架構
業務越來越復雜,服務分層,微服務架構是架構升級的必由之路,Java技術體系,和微服務相關的技術有哪些呢?
微服務框架
Spring Cloud
Docker與虛擬化
微服務架構
五:性能優化
任何脫離細節的ppt架構師都是耍流氓,向上能運籌帷幄,向下能解決一線性能問題,Java技術體系,需要了解:
性能指標體系
JVM調優
Web調優
DB調優
如何一起學習,有沒有免費資料? 有需要的滴滴滴哦
軟體架構師?似乎是個明確的職位或者崗位了。然而,他在軟體產品開發過程中,充當什麼角色?起什麼作用?確眾說紛紜,缺乏共識。成為一名架構師,碼農根本沒有明確的努力目標。這是問題的關鍵,架構師,是上級領導、老闆對某些軟體開發人員的「認同」,是某種管理理念的體現,不是軟體產品生產活動中某個具體的崗位、角色。