① 程序框架是什麼
問題一:程序開發中的框架是什麼 我們目前先不要了解那麼多 框架是為了方便我們程序員開發 減貳代碼量 及代碼質量的工具
框架(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就是本應該有學校做的招聘工作,交給的獵頭公司(控制反轉)然後把招聘到的人員交給學校使用。 模式更側重於框架內部,也就是房間內部各傢具之間如何擺放的組合思考方式。
② 程序員做外包有前途嗎
本人剛畢業時,在一家外包公司工作過,但是由於我對外包工作弊端認識很清楚,只工作了一個月的時間,我就離職了(當時是剛畢業,短期先幹了一個月賺生活費)。下面我介紹下我對做外包工作沒前途這個觀點的看法。
外包工作的弊端
外包程序員與人溝通少。程序員干外包的工作,基本很難與客戶直接接觸,也就無法直接與客戶溝通需求,時間一長,導致程序員思維固化,很難擁有產品人員的思維,而且大多數工作都是參照文檔進行。久而久之,腦子裡面就只有代碼,,缺少與人、需求打交道的基本技能;容易在後續工作中出現只按照程序邏輯思考問題,不會從客戶角度出發,另外,在與人交往的過程中,也會有不太善於與人溝通的標簽出現。
外包機構的技術老舊。為了追究研發周期短、程序穩定,一般來說,外包公司都使用的是相對比較老的技術棧和老的基礎組件,程序員都是用來搬磚,磊業務代碼的人員,外包公司純做技術研究的人少之又少,所以一般程序員進去,對技術能力的提升相對有限。
解決問題能力很難得到提升。由於外包公司大多數是開發業務程序,基本上很難遇到比較難以處理的技術問題,因為技術問題通常是在底層代碼中處理過了。所以他們對遇到技術問題的處理思路、處理方式都比較難以得到鍛煉。
技術架構能力弱。和上面一樣,由於都是寫業務代碼,技術架構都是公司現有的,基本無法從實際中得到鍛煉,架構能力也就無從談起。
純項目思維,而非產品思維。這點對一個程序員來說可以說是致命的,因為很多時候,程序要寫的好,需要很長時間的重構、優化,但是外包項目一般是項目類型,不是產品,也就意味著時間短,項目類型一般是瀑布式,只能給你很短的時間實現功能,很少讓你有思考架構、程序優化的機會,產品開發不一樣,產品開發要求程序員有延續性思維、不斷的自我革命,優化程序。
甲方給的時間少,加班多。一般來說外包工作都是時間比較緊急的項目,而不是一個時間長的產品開發,所以加班就在所難免,生活上的時間少之又少。
外包工作的好處
工作時間長,收入高。外包公司一般來說為了趕項目,通常在保證利潤的前提下,會多給點錢給程序員,讓他們心甘情願的加班,所以,加班時間可以換了高額的加班費,與其他人早早下班相比,單位時間的收入提高了。
短期內,技術會有所提升。如果你是從一個公司換到了外包公司,那麼外包公司的現有的技術棧,你可能在短短的半年就能夠摸透,因為你日常開發都要使用這項技術,而且是成套的完整的技術棧。這種情況是說:你現在使用的技術棧和外包公司的不一樣,所以你可以短時間內學會外包公司的技術。
積累人脈,以後私活項目不斷。由於你在外包團隊干過,你會認識很多非專業公司的人員,時間一長,很多人認識你,如果後續再有類似的公司,他們很自然的會找你個人進行開發,你的私活就多了。
總結
總結來說,我個人認為外包工作的弊端大於好處,所以如果讓我選,我肯定會選擇非外包公司。只有一種情況我會選擇,那就是我畢業2-3年,有能力短期內學習很多新技術,而且對薪資的要求比較高,我可能短期內會選擇1年的外包公司,學習知識,賺錢薪資。只要有選擇,我可能不會選擇外包。
③ java 框架師和程序員的區別
程序員 是泥瓦工,搬磚壘牆的
架構師 就是房屋設計師。
架構師 設計好結構,程序員就只能在這個結構里折騰。
架構師 也分很多種,我知道有應用程序架構師和框架架構師。
想當架構師,至少有五年的編碼經驗,二到三年的管理經驗,剛開始別想這個了。
你所說的ssh三大框架,只能算是基本框架,就算是一個地基吧,把范圍定下來了,
如果直接那這個來開發,不是不行,但約束性無法保證,因為個人編碼習慣的不同,直接用
代碼就沒法看了。
我做使用它們做一些重構,這個就算是業務框架吧,只是針對具體項目來制定的,使項目開發更容易一些。代碼的規范性得到一定的控制。
至於是干前台還是後台,那就看你公司了,以前我們是包畫面做,前後台都得干。
④ 框架的底層是什麼意思
程序員所說的底層到底是什麼?
我們日常開發都使用框架,面試中也經常被問到XX框架的底層你了解嗎?XX技術的底層你了解嗎?
那麼底層到是什麼?
Java?C?還是機器語言?照此論推的話,下來就是硬體了,CPU,集成電路,半導體,正負電荷,然後再研究一下原子構成?
我認為其實 「底層」 就是一個技術實現的思想,就比如把session比作成一個盒子,把cook比作一張名片,把ioc比作一個容器…任何技術都在現實生活中有相應的映射,這也就是所謂的面向對象編程;
那麼先吃蘋果還是先吃梨就看你心情了,你也可以認為一口蘋果一口梨比較好吃,所以說每個人實現技術的想法各有千秋,而部分優秀的人考慮問題比較全面,也就形成了市面上各種優秀的框架,這也是我們為什麼要學習他的原因——學習框架的設計思想。
有人學習底層會走入一個誤區,認為牛人之所以牛是因為他們能手寫框架,所有的方法都是自己寫的,其實不是,能手寫方法的人很多,這個只是經驗的問題,最重要的是思想,他們思考問題的角度(我也不太懂從那個角度思考問題,或許某些技術也只是作者的靈光一現)
關於底層和學習技術的看法我是這樣認為的,大家有不同見解的可以評論區留言,歡迎大家討論!
⑤ android 所謂的修改框架是指什麼
首先,修改框架不是做應用程序員的事,一般是一些手機廠商需要定製自己的android系統才去修改框架,例如修改一些啟動界面,替換一些圖片,修改底層庫等,修改完成後再自行編譯,便成了自己的定製版android系統。如小米手機,魅族手機需要自己定製的android系統,
其次,Android的開發分為三個類型:
a,移植開發移動設備系統;
b,android系統級開發
c,android應用程序開發。
1、移植開發移動設備系統: 移植開發移動設備涉及到linux內核(包括其驅動);主要是一個手機製造商
2、Android系統級開發,指的是擴展android的框架或者是修改bug,這方面比較少,
除非有些開發移動設備的廠商,比如做gps,可以往裡面加入一些自己的特定系統東西,這可能導致一些不兼容。當然也可能是簡單的修復bug,android系統級開發涉及到C/C++庫的開發及給上層java框架;其產品是不同的android應用程序,
3、開發應用程序,這應該是比較主流的開發,也就是給android系統寫應用程序。android應用程序開發就是調用java的框架寫應用程序,簡單的從上到下.
adroid開發就分為居於sdk開發和源代碼開發。
1、SDK開發,主要是應用程序開發,就是我們平常的android 應用開發
2、源代碼的開發,主要在獲取所有源代碼的基礎上進行,可以開發Android應用程序,進
行系統移植或者開發Android系統本身而SDK源碼的修改,也就是我們在創建項目時需導入那個android.jar 包不再是android官方下載SDK文件夾下各個平台中那個andorid.jar
包了,而是得導入自己修改後的android.jar包,這就是所謂的SDK源碼修改,但是一般的應用開發是完全沒有必要去修改SDK源碼的,因為它需要相應的硬體支持。
⑥ 程序開發中的框架是什麼
程序開發中的框架(例如1000萬+行的Qt)往往是對常見功能的封裝(類似於成語對常用含義的代指,不同點在於應用框架最終對CPU表達含義時候會把成語替換為原本含義-通過函數調用),拋開框架,程序會變得因缺少一些'固定成語'(函數)的'釋義'(函數實現)而變得無法執行。
所以,程序框架理解為基礎或者機械標准件(例如螺絲螺母這些有明確標準的機械部件)更為貼切。
這樣理解,假如你要造一輛馬車,在沒有框架的情況下,你需要自己去伐木,去把木頭做成木板,木棍,然後組成輪子,門,等部件,然後組裝起來,但如果你用了框架,就相當於你有現成的輪子,門等部件,你只需要組裝一下就可以了。
可以說,一個框架是一個可復用的設計構件,它規定了應用的體系結構,闡明了整個設計、協作構件之間的依賴關系、責任分配和控制流程,表現為一組抽象類以及其實例之間協作的方法,它為構件復用提供了上下文(Context)關系。因此構件庫的大規模重用也需要框架。
框架(Framework)是整個或部分系統的可重用設計,表現為一組抽象構件及構件實例間交互的方法;另一種定義認為,框架是可被應用開發者定製的應用骨架。前者是從應用方面而後者是從目的方面給出的定義。
⑦ 為什麼有人說大部分碼農做不了軟體架構師
從事軟體開發多年,在編程行業真正的架構師比例少的可憐,就目前國內軟體開發環境而言,真正意義的架構師還不是很多,因為大部分的代碼框架幾乎從開源代碼社區裡面拿出來,然後定製成自己公司產品需要的,其中研究框架的時間比較長的,並且能夠深度定製的程序員就算是高手了,因為很多開源的代碼更新速度非常快速,能跟上開源社區的代碼更新速度的企業已經是實力非常強的公司了,國內企業現在真正意義上的從頭開始設計一個框架然後推向市場相對比較少。
經過十幾年的發展,國內編程人才的平均水平已經上來了,雖然在頂級程序員由於在編程底蘊以及生態系統這塊有差距,但基層的程序員水平已經上來了,國內很多互聯網公司做的產品有些已經不弱於歐美等企業,這些都是國內程序員水平提升的結果,而且現在由於培訓行業在國內普及,入門級別的程序員在國內數量巨大,所以很多人喊著國內程序員行業已經飽和了,已經不適合再去從事程序員的工作了。
事實上國內軟體行業內需依然足夠多,特別是現在的三四線城市都陸續出現了軟體公司,而且規模和數量都在提升,國內企業對中高級程序員的需求量還是非常巨大,五六年大小公司對於這類的人才招聘一直沒有停止過,而且薪資水平還維持在非常高的水準,了解這個行業現狀對於規劃自己的職業生涯還是有著非常大的好處。
架構師這種職位可遇不可求,基本上國內架構師都是自己本公司內的優秀的軟體工程師,成為了優秀的程序員並且在公司內部深得公司的信任願意給這種突破的機會,抓住了後邊的就會給與架構師的待遇,不是每個程序員天生就是做架構師的料,關鍵還在於平時的積累,有了機會抓住了,要成為架構師先要自己成為一個優秀的程序員,優秀的程序員需要具備什麼樣子的因素,現在就根據自己技術生涯的一些經歷分享給大家。
基本功扎實。 很多程序員在入門之前由於在學校裡面比較重視基礎,還能看看基礎,在成為了程序員之後就開始放鬆了對這方面的要求,所以導致很多程序員見到有筆試的公司,直接就選擇了放棄走人,不能講這類的程序員水平不行,但起碼不是優秀程序員的范疇, 優秀的程序員是經得住基本功考驗的,是不怕這些所謂的筆試題目的。
演算法扎實。 很多程序員做了很長時間還不覺得演算法挺重要,演算法貫穿整個技術生涯,如果沒有意識到這點說明意識層面還沒理解到,證明需要彌補的東西還是非常多,有些程序員可能是學習了一門編程語言就匆匆去找工作了,運氣還不錯還找到工作了,沒有很好的規劃技術生涯路線,一個標準的程序員需要的一門基礎的編程語言,熟悉數據結構,並且穿插著學習演算法,這三樣也是優秀程序員的標配,學習技術不是由著自己性子去做事,需要有規劃,這其中不能少了演算法的因子。
錘煉編程思想。 很多程序員覺得能夠寫代碼,時間長了經驗到位了慢慢就能熬成資深技術專家了,程序員不是靠著熬日子過的,需要不斷的提煉編程思想,舉個簡單的例子,做網路編程如果懂得了一門編程語言的編程經驗,相信切換到別的語言只需要很短時間內就能搞定,而且積累總結類似的場景以後遇到這種場景都能靈活應對,還能同步遷移到類似的場景,不能只是為了做而作,僅僅就是為了完成任務,那麼提升的空間有限,不能因為工作承擔的東西就這么點,而不去補充其餘的東西,善於總結也是優秀程序員需要具備的一種意識。
成為架構師沒有所謂的模板,而且有些人一輩子也沒有這種機會,但想要達到這種境界就需要先讓自己成為一個優秀的程序員,這樣子遇到有理想的企業抓住機會就上去了,一旦進入這個級別後面的編程生涯就會有根本的變化了,關鍵在於平時一點一滴的積累,讓自己長期處於一種高效的學習狀態,有太多的程序員經歷了幾年的適應期就提前讓自己進入了舒適期,結果隨著年齡的增長技能沒有相應的跟上導致年齡大了競爭力下降,出現了老了被企業淘汰的悲劇,什麼樣子的態度決定什麼樣子的人生,也就決定了什麼樣子的結局,希望能幫到你。
作為一名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調優
如何一起學習,有沒有免費資料? 有需要的滴滴滴哦
軟體架構師?似乎是個明確的職位或者崗位了。然而,他在軟體產品開發過程中,充當什麼角色?起什麼作用?確眾說紛紜,缺乏共識。成為一名架構師,碼農根本沒有明確的努力目標。這是問題的關鍵,架構師,是上級領導、老闆對某些軟體開發人員的「認同」,是某種管理理念的體現,不是軟體產品生產活動中某個具體的崗位、角色。