回覆列表
  • 1 # 偽專家胡說八道

    寫程式碼過程中,先考慮程式碼的抽象和重構達到複用,然後逐步過渡到利用不同設計模式設計程式碼結構,接著考慮伺服器和客戶端的多變環境的適配,一步一步往上層和全域性考慮如何在儘可能少的變動適應多重情況下的變動,不能一步到位,要慢慢漸進。

  • 2 # 搞笑中的戰鬥機

    在那步就做好那步,對於一個程式設計師來說,首先要完成手頭的工作,這是不可能一蹴而就,得循序漸進,在開發的道路上漸行漸遠。

  • 3 # 焦慮老爸

    C語言程式設計,C++面向物件程式設計,C++設計模式,JAVA設計模式,作業系統原理,資料庫原理,網路原理,系統架構師(架構師考試教材),人月神話,讀完基本上就能進階了。

  • 4 # 網路圈

    一般來說,程式設計師是執行層,只需要把分配給自己的事情做好就行了,講究的是執行力和某領域的專業性。

    而高階系統架構師就沒這麼輕鬆了,當你的角色變成了架構師,你的工作重心不能完全放在技術領域上了,而更應該瞭解整個業務。架構必須基於業務,脫離業務的架構絕對談不上是好的架構。

    那麼從程式設計師到高階系統架構師該如何進階呢,以我的從業經歷可以給你一些建議以供參考:

    1、技術上深度變為廣度,這就要求你在程式設計師角色時要深耕技術,說得通俗點,你的技術能力要在公司/團隊排在前列。當你的技術能力很強時,就可以涉獵周邊技術及相關技術生態圈,做好足夠的技術知識儲備。

    2、瞭解業務,對公司產品的業務邏輯要了解透徹,這樣便於後期你站在架構師角度去考慮系統的設計合理性和可擴充套件性。由於行業不同,產品不同,所以具體該如何瞭解業務,這是需要你去思考的。

    3、調節心態,如果你是一個什麼事都以自己的想法為本的人,那你不適合做架構師。架構師的心態要平和,不是說架構師說什麼就是什麼,你要聽得進去意見,受得了質疑,有時候甚至是吃力不討好的事,也需要你來做,此時心態就尤為重要了。

    4、加強溝通能力,程式設計師的溝通能力普遍較差(都喜歡在聊天工具上聊天,不願與人面對面溝通),所以需要提高溝通能力,特別是架構師要和多個崗位角色的人打交道,溝通能力才是軟實力。

    5、肯吃虧,願意將自己掌握的知識分享出來,因為架構師不可能一行一行程式碼去架構,而是站在全域性考慮系統技術選型、業務實現邏輯,哪怕團隊成員不會某技術,或者能力較差,你也得去教會他們,這樣你才能更好的去推動架構。

  • 5 # 牛旦IT課堂

    不想成為架構師的程式設計師,

    都不是好程式設計師!

    那麼怎麼成為架構師?這有個過程。

    這裡單從JAVA領域上來叨叨——

    其實,怎樣學習才能從一名Java初級程式設計師成長為一名合格的架構師,或者說一名合格的架構師應該有怎樣的技術知識體系,這是不僅一個剛剛踏入職場的初級程式設計師也是工作三五年之後開始迷茫的老程式設計師經常會問到的問題。希望這個回答能幫助到你~~~

    一、 JAVA核心,

    要想成為JAVA(高階)專家肯定要學習JAVA。一般的程式設計師或許只需知道一些JAVA的語法結構就可以應付了。但要成為JAVA(高階) 專家,您要對JAVA做比較深入的研究。您應該多研究一下JDBC、IO包、原始碼分析、高併發、JMS、Spring、RMI、執行緒。如果可能,希望您 對JAVA的所有包都瀏覽一下,知道大概的API,這樣您就發現其實您想實現的很多功能,透過JAVA的API都可以實現了,就不必自己費太多的腦經 了。

    二、 設計模式,

    其實寫程式碼是很容易的事情,我相信您也有同感。但如何寫得好就比較難了。這個“好”字包括程式碼可重用性,可維護性,可擴充套件性等。如何寫出好的代 碼往往要藉助一些設計模式。當然長期的程式碼經驗積累,只要您用心,會使您形成自己程式碼風格。相信您的程式碼也比較符合程式碼的可重用性,可維護性,可擴充套件性。 但既然前人已經給我們總結出了經驗,我們何不踩著前人的肩膀前進?

    三、 XML,

    現在的系統中不使用XML幾乎是不可能的。XML的功能非常強大,它可以做資料轉換、做系統的配置、甚至可儲存您的系統業務資料。因此您必須瞭解 XML,包括它的語法,結構。您還需要比較熟練的使用解析XML的一些API,比如JDOM,SAX等,因為在我們一般的專案中,XML往往擔當系統配置 資訊的作用,您需要用這些API解析這些配置資訊,開發完美的專案。

    四、 精通使用一種或兩種框架,

    框架都會有許多可重用的程式碼,良好的層次關係和業務控制邏輯,基於框架的開 發使你可以省出很多的開發成本。但我這裡希望您能精通,更多的是希望您能透過框架的使用瞭解框架的思想。這樣您在開發一個專案時思路會開闊一些,比如您 會想到把SQL語句與您的JAVA程式碼分開,再比如您會考慮把您的業務邏輯配置到XML或者資料庫中,這樣整個專案就很容易擴張了。

    五、 熟悉主流資料庫,

    其實真正比較大的專案都是有人專門做資料庫的,但往往很多專案要求作為(高階)工程師的您也參與資料庫的設計以及SQL的編寫。所以為了 更好的為國家做貢獻,建議您還是多瞭解一些主流資料庫,比如SQLSERVER,ORACLE,多連線SQL和儲存過程以及觸發器。如果您不是“科班”出 身,您還需要補充一些資料庫原理方面的知識。

    六、 UML ,

    我知道您肯定想成為高階工程師,因此您有必要了解或熟練或精通UML,這取決於您有多大決心想成為高階工程師和專案經理。在比較正規的開發團隊 中,UML是討論專案的交流工具,您要想做一個軟體工程師,您至少要能看懂,您要想做高階工程師,您要能透過它來描述您對專案的理解,儘管這不是必須,但 卻很重要。

    七、 站在高度分析問題,

    這不是一個知識點,也不是透過書本就能學得到的。之所以提到這一點,是因為我比您還著急,我希望您更快的成為一個高階的軟體工程師,而 不是一個一般的軟體工程師。希望您在工作中多向您的系統分析員、需求分析員、系統設計員學習,多站在他們角度上去看您在開發的專案。在最好在專案之初先在 您的腦海裡對專案有個大致的分析、設計,然後和他們進行比較,找找差別,想想缺點。

    八、 工具,

    在這個階段可能接觸到不同的工具了,儘管您還需要使用NB或者IDEA,但能可能對 ROSE,Together要多瞭解一些,因為您要畫UML了。不要再對Dreamweaver等HTML編輯器情有獨鍾了,那些JSP頁面讓初級程式設計師 去寫吧……

    好啦,修煉去吧

  • 6 # 嵌入式宏思微想

    由普通程式設計師進階到高階架構師,是一個量變到質變的過程。除了公司內部晉升機制或職業跳槽機遇之外,最關鍵的是個人能力的成長。在軟體行業幹了十多年,下面我嘗試給大家一些建議。

    1.不斷地豐富理論知識。從廣度和深度兩個維度,不斷地拓展和深挖基礎理論,領先技術,行業方案,最優方法。

    2.不斷地熟悉業務知識。離開業務,純技術無法落地。比如寫金融軟體的就要有金融知識,寫電子軟體的就要有數電知識,寫通訊軟體的就要有通訊知識。

    3.多總結多提煉。將經歷轉化成經驗,進而轉化為知識力量。專案經驗不僅僅是經驗,更是知識體系中重要的組成部分。

    4.以全域性的,瞻遠的,擴充套件的,系統的角度去審視程式碼系統與模組,對框架,訊息,協議,標準,方案都要熟悉,並常常試著不同的角度去審閱,理解,消化。

    5.手中有碼,心中無碼。這是一種架構師高階境界,理論與程式碼互通,說論得碼,見碼知論。

  • 7 # mikechen的網際網路架構

    不管你願不願意接受,普通程式設計師是很難做到盡頭的,對工作1-3年的程式設計師來說,提前規劃自己的職業發展路徑就顯得特別重要了,程式設計師的職業發展路徑主要有兩種:進階架構師、轉型技術管理。

    本題目是“如何從程式設計師進階到高階系統架構師”,圍繞主題,我將從架構師的重要性、架構師主要職責、架構師必備能力這三個方面來分解析:

    架構師的重要性

    架構師,是一個既需要掌控整體又要洞悉區域性瓶頸,並依據具體的業務場景給出解決方案的團隊領導型人物,他需要參與專案開發的全部過程,包括需求分析、架構設計、系統實現、整合、測試和部署各個階段,負責在整個專案中對技術活動和技術說明進行指導和協調。曾有人這樣形容架構師的重要性:架構師的工作就像是他打造一棵樹的主幹和枝幹,然後程式設計師們讓這棵樹上長出樹葉和果實。

    既然架構師是「靈魂人物」,那麼,企業定義的架構師職責有哪些呢?

    架構師的主要職責

    JAVA架構師

    前端架構師

    爬蟲架構師

    簡言之,企業對架構師要求:具備多年從業經驗+專案開發經歷+精通1-2多門程式語言+具備技術廣度+熟悉資料庫。

    我最新梳理架構師的三點主要職責,大家可以瞭解下:

    1、確認需求與拆分系統

    在專案開發過程中,架構師需要依據使用者需求,將完整的系統拆分為子系統和元件,形成不同的邏輯層或服務,確定各層的介面、層與層相互之間的關係,對整個系統分層進行“縱向”分解,對同一邏輯層分塊進行“橫向”分解。

    2、技術選型

    透過對系統的一系列的分解,最終形成了軟體的整體架構,依據整體架構需要進行技術選型。

    3、製作技術規格說明

    在整個研發過程中始終保持與開發人員保持溝通,以保證開發者依照原定的架構意圖去實現各項功能。

    架構師需具備能力

    從初級程式設計師進階到中級程式設計師、高階程式設計師,最終成為一名架構師,這是一個不斷經驗積累的過程,需同時兼具技術實力(技術廣度與技術深度),除此之外,其它軟實力也不容忽視,下圖列舉了一個架構師需具備的各項能力及佔比。

    軟實力就不一一細說,大家都瞭解,關於架構師需要掌握的技術能力,下面這張架構師技能圖譜基本能涵蓋。

  • 8 # mikechen的網際網路架構

    對程式設計師來說,未來想要避開中年危機,那麼你就有必要儘早做好自己的職業發展規劃(越早越好)。架構師是技術團隊的核心,薪酬高、技術牛。因此,很多程式設計師從剛進入這個行業起,就在心裡深埋下了架構師的夢想,想起多年前我就曾在上海徐家彙美羅城的某快餐攤前,向女票立下了“要成為一名牛逼的架構師”的豪言。很幸運,牛皮變成了現實,一路堅持、一路坎坷,當年的女票成了LP,而我也實現了自己的架構師夢想,本篇我將透過梳理架構師職責與必備能力,給立志追逐夢想的程式設計師們分享一些學習方向。

    一、架構師職責

    曾有人這樣形容架構師的重要性:架構師的工作就像是他打造一棵樹的主幹和枝幹,然後程式設計師們讓這棵樹上長出樹葉和果實。架構師,是一個既需要掌控整體又要洞悉區域性瓶頸,並依據具體的業務場景給出解決方案的團隊領導型人物,他需要參與專案開發的全部過程,包括需求分析、架構設計、系統實現、整合、測試和部署各個階段,負責在整個專案中對技術活動和技術說明進行指導和協調。架構師職責簡單來說有三點:

    1、確認需求與拆分系統

    在專案開發過程中,架構師需要依據使用者需求,將完整的系統拆分為子系統和元件,形成不同的邏輯層或服務,確定各層的介面、層與層相互之間的關係,對整個系統分層進行“縱向”分解,對同一邏輯層分塊進行“橫向”分解。

    2、技術選型

    透過對系統的一系列的分解,最終形成了軟體的整體架構,依據整體架構需要進行技術選型。

    3、製作技術規格說明

    在整個研發過程中始終保持與開發人員保持溝通,以保證開發者依照原定的架構意圖去實現各項功能。

    二、架構師需具備能力

    1、架構師能力圖譜

    從初級程式設計師進階到中級程式設計師、高階程式設計師,最終成為一名架構師,這是一個不斷經驗積累的過程,需同時兼具技術實力(技術廣度與技術深度),除此之外,其它軟實力也不容忽視,下圖列舉了一個架構師需具備的各項能力及佔比。

    2、架構師技術能力

    一個能擔負起企業級應用、稱得上資深的架構師,至少需要精通1-2門技術語言,同時具備一定的技術廣度。粗略說來涉及技術範圍如下:

    1)、集合框架(原始碼)

    ListArrayListLinkedListSet:HashSet、TreeSetMap:TreeMap、ConcurrentHashMapCollection的synchronized等方法

    2)、工具類

    Google guava(推薦)Apache common lang/BeanUtils/Collctions/IOJSONfastjsongsonjackson

    3)、框架

    Spring:IOC、AOP、常用註解SpringMVCMybatisShiroNetty

    4)、安全

    單項雜湊演算法:MD5、SHA對稱加密:DES非對稱加密:RSA、HTTPS

    5)、JVM

    Java虛擬機器(Hotspot實現)類載入機制記憶體模型GC:回收演算法、垃圾收集器調優工具:jstack、jmap、jconsole

    6)、併發程式設計

    Executor框架Fork/joinhappen-before資料結構:ConcurrentHashMap執行緒池:引數設定、原理、拒絕策略執行緒狀態Lock/synchronized原子操作類併發工具類:CountDownLatch、Semaphore、CyclicBarrier、ExchangerIO、BIO、AIO、NIO

    7)、資料

    NoSQL:MongoDB

    分散式快取:Memcached、Redis(推薦)

    關係資料庫

    MySQL引擎InnoDB(支援事務)分庫分表CobarMycat

    8)、SQL最佳化

    索引主鍵索引組合索引explain儲存過程SQL注入:使用#而不使用$

    9)、事務隔離級別(ACID)

    原子性一致性隔離性永續性

    10)、鎖

    表鎖行鎖悲觀鎖

    11)、大資料

    HadoopHbaseSparkStorm/JStorm

    12)、演算法與資料結構

    陣列連結串列棧佇列樹二叉樹B Tree/B+ Tree紅黑樹雜湊

    13)、分散式系統

    從集中到分散式分散式Session:Session複製、Session繫結、Session伺服器(靠譜)分散式快取:Redis、一致性Hash演算法資料庫:讀寫分離、主從熱備、分庫分表、一致性分散式事務、CAP、BASE、2PC/3PC分散式鎖Redisson負載均衡、硬體、F5、軟體、LVS、Nginx訊息佇列:RabbitMQ、ZeroMQ、ActiveMQ、Kafka(推薦)服務化:服務註冊與發現、Zookeeper架構微服務Spring BootDubboRPCSOA虛擬化Docker

    從程式設計師進階成為高階架構師,並非一蹴而就,需要系統化、階段性學習,並且在實戰專案中融會貫通,這如同打怪通關,我們得一關一關突破,每攻破一個關口,技能值就增長一點,直至大獲全勝。堅持學習加上點滴積累,最終成就夢想。原創碼字不易,覺得不錯請點贊支援,送你【分散式架構設計23期原創集合】,回覆【架構】,立即領取。

  • 9 # 泛搜

    技術積累,尤其是全架構體系設計上的積累,可以參考架構師的招聘要求,結合自己的工作實際情況 專案情況,積極參與到架構設計的工作任務中去

  • 10 # 大奇的改變

    跟時間、學歷都沒有關係啦。

    程式設計師,這只是做軟體開發的入門級別,而系統工程師可以說是網際網路公司裡較核心的職位了,要想從程式設計師一步跨越到核心職位,肯定不可能,但是我們跟他們在同一個專案、公司裡,那我們就可以多跟他們交流交流、互動,尤其是井對專案架構上的互動,看看他們是怎麼思考、解決這些問題的,回去後好好舉一反三,形成可以落地的部落格或者文章都可以,這樣你堅持個一年的時間,就可以慢慢的離他們越來越近了,後面換工作時可以大膽嘗試應聘試試看看。

  • 11 # 架構研究所

    首先要做的是打牢基礎,在此基礎上依次進行以下步驟:

    1. 瞭解技術的底層實現

    2. 瞭解常用基本框架

    3. 對所在領悟的架構、業務熟悉

    4. 對行業發展熟悉

    以上都做到熟悉掌握後,加上5-10年工作經驗,就有可能成為工程師。

  • 12 # aaaaa12322

    架構師就是一個水平高,經驗豐富,對產品要求高,作為負責人做過大專案的程式設計師,本質就是一個程式設計師,很反感總把架構師掛在嘴邊的,眼高於頂的人

  • 13 # 微服務佈道者

    一直做軟體架構設計,也有7~8年了,主要說下個人理解吧。

    1、視野要寬闊

    2、業務經驗要豐富

    3、有實戰型的一套技術體系,從前端到後端都要有了解,從開發到交付都有落地經驗

    4、善於總結、樂於分享給同事

    5、及時更新自己的技術棧,逐步迭代專案中覺得不合適的架構設計

    目前就想到這麼多,共勉。

  • 中秋節和大豐收的關聯?
  • 工傷達不到級別該怎麼賠?