㈠ 架構師跟程序員有什麼區別呢
程序員:做編程的底層開發工作,寫代碼,不停的寫代碼
軟體設計師:其實這個概念不太清楚,跟架構師類似,就是要分析設計這個軟體的整體概念,就像蓋房子要先畫圖紙,然後分給不同部門的人去建造,其實在現在,一般叫項目經理,或叫開發經理
網路工程師:設計整體的網路的人,跟軟體設計師差不多,不過做的是網路工程。
網路管理員:與程序員類似,重復性的技術工種。
系統分析師:這個也是個比較模糊的,系統分析類似醫生的,可以通過自己的經驗和從業經驗,對某各軟體或某項工程進行分析,優化,從而幫助架構師或項目經理用最短的時間做出最滿意的東西來。
其實你分的這幾個,都是計算機里的職位,你重新分一下類好了
軟體開發裡面分為:程序員,軟體工程師,軟體架構師和系統分析師
網路工程裡面分為:網路管理員,網路工程師,網路架構師和系統分析師
如果是工資高,級別高的,就是架構和分析了,但是。。。。強調一下,這兩個職位不是有技術就可以的,需要大量的經驗,一般都是從程序員開始做起的,才有資格。
㈡ 從程序員到架構師要經歷哪些階段
架構師是什麼?
架構師這詞其實很有意思,很多人的Title是這個,但其實我們對架構師都干什麼並沒有太統一的認識。往大了說,比爾蓋茨當年好像也稱自己為架構師,往小了說隨便一個小的軟體上做設計的也說自己是架構師。所以如果把這個詞泛化而不局限於特定的場景,估計單是說清楚什麼是架構師就要花費不少口水。下面我們用一個取巧的辦法,在一個具體的場景下來看看,架構師都該干什麼,而不把這個詞泛化,如果在特定場景下這個角色應該干什麼清楚了,那它就可以為其它場景下提供不錯的參考。
我們只考慮從頭開發一款產品的場景,不考慮這款產品可能是個家族,可能需要在公司里與許多東西配合這樣繁瑣的事情。這樣問題就簡化成:當我們要開發一款新產品的時候,架構師都要幹些什麼?為讓事情更具體,我們進一步假設公司想做一個Trello,Worktile這樣的協同辦公工具。
在產品初期除了UI這類東西,還能明確的一些關鍵需求大概是這樣:
簡單、迅速,追求極致的用戶體驗,這時也許能想到看板這樣的功能
打入社交元素(任務分配與溝通時打入信息流的機制)
移動端支持
公司判斷:如果產品能在1年內上線,時機比較好
其他的需求呢就是感覺上肯定有,但暫時說不清楚
基於這樣的簡單提示,長做程序的可能腦子里會立刻冒出來無數東西,比如:
快的確保?
看板里拖動的實現?
SaaS時伸縮性的確保?
資料庫中表的設計?
資料庫類型的選擇?
移動端的支持方式?
人員的現狀?
迭代式開發的支持?
... ...
但顯然不是每個事情都要在架構設計階段搞定,否則等於是被弄蒙了,這時候架構師的一個關鍵職責就是要能區分出哪些東西預先需要搞定,而哪些東西則要在迭代過程中解決。
一般來講重置成本越大,牽涉的人越多的事情越應該由架構師預先搞定,否則就容易做無用功,對開發工作產生致命傷害。具體來講這類事情由三個核心部分組成:
選定Tech Stack
概要設計,確立分工的基礎
協同方式
下面來分別解釋下這三個方面的具體含義。
選定Tech Stack是指要選定包括編程語言,基本框架等一系列東西,比如Trello選完之後大致是下面這個樣子:
http://www.csdn.net/article/2014-07-28/2820883
㈢ java程序員如何成為優秀的架構師
架構師,有過項目開發經歷,精通多門編程語言且熟悉資料庫。
架構師的主要職責
1 確認需求
2 系統分解
3 技術選型
4 制定技術規格說明
㈣ 程序員,架構師,軟體工程師的區別
1、程序員,架構師,軟體工程師的能力要求不同,程序員是從事程序開發、程序維護人員,但是不擅長寫文檔。軟體工程師的技術要求比較全面,會熟練的寫語言代碼,也會寫一些項目的文檔。架構師是軟體開發過程中的重要人物,主要負責大系統項目的架構設計。
2、程序員,架構師,軟體工程師級別不同,程序員分為初級程序員、中級程序員,軟體工程師是從事軟體職業的人員的一種職業能力的認證,架構師是團隊領導型人物,是需要從資深軟體工程師裡面提升為架構師。
3、程序員,架構師,軟體工程師平均年薪不同,美國谷歌程序員的工資最低年薪平均水平為12.8336萬,軟體工程師平均工資較高,谷歌軟體工程師年薪平均水平為25-30萬美元,架構師的工資水平是最高的,谷歌大數據架構師年薪為50-60萬美元。
㈤ 程序員,如何少走彎路,成為一名技術專家或者架構師
#1 專業技能
@首先當然基礎知識要扎實,一些經典的專業書籍一定要看。比如,設計模式,演算法,數據結構,所在領域的編程語言的專業書籍等.關於不同的能力階段,需要讀取什麼類型的書籍,請參考ThoughtWorks(中國)程序員讀書雷達,每年都有更新。
@作為架構師,review別人的代碼並給出合理的建議是基本功,比如變數或者方法命名的規則;所以代碼大全,重構,改善既有代碼的設計,Clean code 等等肯定需要看。
@ 對於某一個技術領域或者業務領域,一定要有一門技術是精通的,因為這樣你才能體會到以後遇到自己不懂的技術的時候,如何能夠快速成為這一方面的行家。
@ 平常有時間一定要多多進行代碼的訓練,也就是Martin Flower常說的Kata練習,這個比喻來自於跆拳道,跆拳道選手一般每天都會找一些基本的招式,進行反復的練習,從而訓練肌肉的條件發射,那麼對於我們程序員來說,一定也要進行持續的編程訓練,比如上面提到的那位同事,給的建議是,雖然把大部分時間花在了溝通和協調上面,沒有機會寫代碼,但是自己一定要利用業余時間,自己找一些例子來聯系,比如,參與開源項目,或者到網上去搜索一些大師的經典Kata聯系的例子;或者看工作裡面是否有一些小工具,是否能夠提升自己的溝通效率,當然已經天天寫代碼的童鞋們除外。請參考我轉發的另外一篇文章和另外一篇介紹能在線練習Kata code的文章.
@ 最好能夠在精通一門語言的基礎之上,學習其他的語言,從而站在一個更高的角度,對於程序語言有一個更高層次的抽象認識,比如,學了Java之後,可以學學Ruby,Groovy,C#等等,其實語言之間都是相互借鑒的,比如Lamba表達式,連java也慢慢的向函數式編程方向靠攏。
@ 如果有時間,一定要自己維護一個博客,既然選擇了架構師,就決定了自己以後不僅僅是一個技術專家,同時也要成為一個佈道師,為企業組織或者社會上的其他IT同行們貢獻自己的一些微薄之力。
@ 多參加一些社會上舉辦的軟體專業會議或者活動,了解當前比較流行的技術和框架。
@ 這條不提倡,我以前有一個同事,幾乎每年都要更新簡歷1~2次,目的不是真正的換工作,而是通過面試得到當前市場上大部分公司正在使用什麼技術和框架。對於這條,請慎用!!!!
@如果有結對編程的機會一定要好好珍惜,特別是和高手大拿一起結對的時候。
@如果大家上面都已經做的非常的好了,這個時候可以看看架構設計方面的書籍,比如企業應用架構模式,架構之美等等。
@ 去51Job上搜索架構師這個職位標簽,看看不同行業的企業對於架構師的技術要求和標准,然後結合自己當前所處的行業和你自己的技術特點,比如擅長前段或者後端,有選擇性的學習一些自己感興趣的技術或者方法。
@ 關於常用的網站,沒有定論,筆者主要是根據搜索的結果去發現適合自己的網站,所以需要讀者掌握一定的搜索的技巧,筆者一般喜歡用英文搜索,這樣的話資料比較全也比較新;如果下載電子書的話或者查看博客的話 一般會首選CSDN;如果是解決工作中的問題的話,在StackOverFlow上面被解答的概率是最大的,此外平常自己也需要去積累一些自己感興趣的技術的人氣比較旺的網站列表,比如一般和Window相關的就是MSDN;如果對Java入門比較感興趣,可以看看這個網站。對於一些開源的框架,一般都會有想對應的社區,google一搜索,很快就能找到。另外一個德國人寫的博客的非常的精緻,如果對Eclipse插件開發特別感興趣的朋友們可以去參考它。
@大家如果時間和精煉允許,最好能在Github開源和分享自己平常寫的代碼。這樣一方面可以熟悉git用法,另外一方面也可以把自己平常練手的代碼免費保存,何樂而不為呢?
@如果大家平常遇到什麼問題,可以到StackOverFlow上面去尋找答案;當然,如果你能自己注冊一個StackOverFlow賬號那是最好不過的,這樣不但可以提問,還可以幫助別人,同時上面還有很多工作簽證的工作機會。
#2 軟技能(現代社會,一個合格科學家不僅僅是某一個行業的技術專家同時也是一名專業的社會活動家)
@遇到問題,一定要多想,遇到一個問題,如果解決了,就要反思為什麼能夠解決,如果以後遇到類似的問題,
如何更快速的解決。
@英語的重要性,不言而喻,因為現在很多新技術的框架的中文文檔非常的少,即使翻譯成中文,也是二手的了(國內自己的開發的一些開源框架除外)
@ 有時間的話,看一些溝通方面的書籍,如果有參與溝通的機會的時候,一定要想如何把溝通做的更好更舒暢。
@ 如果有機會的話,可以參加PMP的考試,關於如何備考PMP,請大家參閱另外一篇文章:如何備考PMP,但是如果不想參加的話,也沒有關系,至少要涉獵到項目管理方面的書籍,否則以後如果成為架構師之後,客戶或者管理者給你說一些項目管理上一些專業術語時,到時候就會一頭霧水。
@架構師其實從某種意義上就是一種角色,而不是一種職位。一定要時時刻刻保持空杯心態。
@一定要有一顆保持飢渴學習和耐得住寂寞的赤子之心。
@當前的技術節湊是非常快的,特別是結婚以後又有小孩了。一定要好好的利用自己碎片時間,對於一些技術,當時讀不懂不要緊,但是一定要記住和了解其關鍵詞,這個主要是為了拓寬自己的視野。比如,當前你想自己開發一個系統,結果已經有一個開源框架實現了,而且還很穩定,這個時候,自己就沒有必要重復發明輪子了。
@與不同的技術、編程語言、設計模式和結構等(甚至是它並沒有在日常中給予你直接的幫助)打交道。你永遠都不知道這些知識是否會在未來派上用場,但是對你絕對是有益無害。
@在工作中,能夠幫助到別人解決技術難題,一定要盡量全力以赴,因為這不但可以贏得同事的好感和口碑,同時也能增長你解決問題的經驗和提高你的技術思維能力
@ 一定要掌控好自己的時間,對工作沒有幫助的會議,能不參加盡量不要參加,當然,企業安全,公司規章制度如果是強制性的,該參加還得參加,但是如果沒有工作效率和扯皮的會議,盡量避免參加。
@程序員要耐得住寂寞,要在自己的領域深挖,不能看啥火,就學啥,一定要有自己的想法和判定,如果決定不了,可以向資深的同事或者朋友溝通。
@盡量參與到項目中的編碼,因為架構師不能與項目脫離。
@ 如果有機會可以鍛煉一下自己在大眾環境下的演講和PTT的能力。
@有機會多做知識分享,因為你一旦分享了知識,你就會對這門技術有深刻的印象,同時也能樹立在同事中的良好的技術形象,從而贏得更多的專家影響力而不是職位影響力。
上面只是我當前能想到的,知易行難,知道了上面的一些經驗,並不代表年輕程序員們就能馬上成功,畢竟這需要一個鳳凰涅槃和實踐的過程,但是肯定能幫助有志於於此的年輕程序員們少走一些彎路,限於筆者水平,如有總結不恰當或者不到位的地方,還望批評指正。
㈥ 程序員往上做是什麼軟體分析師、架構師、工程師有什麼區別
程序員往上做是軟體分析師、架構師這些高級技術人員。要說層級關系軟體分析師、架構師、工程師比程序員高級,這些都是從基礎程序員做起的。
(6)程序員架構師擴展閱讀
對於軟體工程師,不太重視學歷,但並不是對學歷沒有要求,重點關注項目的經驗和學習知識的能力,能否利用軟體工程專業知識來解決問題,根據崗位不同,對軟體工程師的要求也有所不同。
具體能力要根據崗位和自己的興趣愛好選定自己的職業規劃方向,一方面要詳細了解軟體工程師的要求,可以關注企業的招聘信息;一方面自己要貯備通用的知識技能。
可以確定的是軟體工程師的前途在未來的發展依然是不斷升溫的職業,比較需要有技術和良好前景的專業。
參考資料
網路—軟體工程師
網路—程序員
網路—系統架構設計師
網路—系統分析師
㈦ 運維架構師是程序員還是運維人員
屬於運維人員。
運維工程師負責維護並確保整個服務的高可用性,同時不斷優化系統架構提升部署效率、優化資源利用率提高整體的ROI。運維工程師面對的最大挑戰是大規模集群的管理問題,如何管理好幾十萬台伺服器上的服務,同時保障服務的高可用性,是運維工程師面臨的最大挑戰。
在初級階段,優秀運維人員會體現出格外出眾的主動性和責任心,面對陌生的業務會主動學習和拓展自己對業務對認識和相應的知識范疇,以能夠足夠的勝任業務的獨立維護。在逐步的發展階段中,注重總結反省的工程師會逐漸成長為高階運維人員,他們會有比較體系化的服務運維理解。也有一部分工程師由於出色的項目管理規劃能力,逐漸成為項目經理。
(7)程序員架構師擴展閱讀:
運維工程師要求規定:
1、產品架構設計的合理性評估,包括是否存在單點,是否可容錯,是否有強耦合等,同時需要提供產品設計的合理性建議以使產品能夠滿足上線發布並穩定運行的基本要求。
2、資源評估,包括所需的伺服器資源、網路資源以及資源的分布等,同時把相關產品對資源預算申請的合理性,控制服務成本。
3、對服務運行的狀態進行實時的監控,隨時發現服務的運行異常和資源消耗情況;輸出重要的日常服務運行報表以評估服務/業務整體運行狀況,發現服務隱患。
㈧ 如何從程序員到架構師
程序員到架構師的技術成長之路分為幾個典型的階段:工程師 - 高級工程師 - 技術專家 - 初級架構師 - 中級架構師 - 高級架構師,總的成長原則是每個階段都需要「積累經驗、拓寬視野、深度思考」。
㈨ 為什麼大部分的程序員成不了架構師
① 碼農分為真的能寫代碼的,以及自認為能寫代碼的。② 真的能寫代碼的碼農又分為自認為寫的不錯的,以及真的還不錯的。③ 真的能寫不錯代碼的碼農又分為會鑽研會不斷優化的,以及安於現狀的。④ 會鑽研的碼農又分為喜歡廣度了解新技術蜻蜓點水的,以及深入鑽研用到知識的。了解廣度的碼農又有少部分願意深入某些技術,喜歡深入研究的又往往缺乏廣度知識。
而真能滿足這種需求的,別說題主的10%的比例,1%能不能達到我也持懷疑態度。其實現在的「架構師」大多數都停留在8這個層次,甚至很多在5這個層次就當上title上的架構師了。