WEB架構師成長之路

一 、你必須學習面向對象的基礎知識,若是連這個都忘了,那你的編程之路註定是在作原始初級的重複!程序員

    不少程序員都知道類、方法、抽象類、接口等概念,可是爲何要面向對象,好處在哪裏,要解決什麼問題?只是明白概念,就是表達不清楚,而後在實際工做中也 用不上,過了一段時間,面向對象的東西又模糊了,結果是大多數程序員用着面向對象的語言作着面向過程的工做,所以要學習面向對象,首先應該明白麪向對象的 目的是什麼?數據庫

面向對象的目的是什麼?編程

開發語言在不斷髮展,從機器語言,到彙編,到高級語言,再到第四代語言;軟件開發方法在不斷髮展,從面向過程,面向對象,到面向方面等。雖然這些都在不斷髮展,但其所追求的目標卻一直沒變,這些目標就是:
   1.下降軟件開發的複雜度
   2.提升軟件開發的效率
   3.提升軟件質量:可維護性,可擴展性,可重用性等。設計模式

     其中語言的發展,開發方法的發展在1,2兩條上面取得了極大的進步,但對於第3條,咱們不能光期望開發方法自己來解決。性能優化

提升軟件質量:可維護性,可擴展性,可重用性等,再具體點,就是高內聚、低耦合,面向對象就是爲了解決第3條的問題。所以要成爲一個好的程序員,最繞不開的就是面向對象了。服務器

 

2、 要想學好面向對象,就必須學習設計模式。架構

假定咱們瞭解了面向對象的目的,概念了,可是咱們coding過程當中卻發現,咱們 的面向對象的知識彷佛一直派不上用場,其實道理很簡單,是由於咱們不知道怎麼去用,就像游泳同樣,咱們已經明白了游泳的好處,以及游泳的幾種姿式,狗刨、 仰泳、蛙泳、自由泳,可是咱們依然不會游泳。。。。併發

所以有了這些基本原則是不行的,咱們必須有一些更細的原則去知道咱們的設計,這就 有了更基礎的面向對象的五大原則,而把這幾種原則更詳細的應用到實際中來,解決實際的問題,這就是設計模式,所以要學好OO,必需要學習設計模式,學習設 計模式,按大師的話說,就是在人類努力解決的許多領域的成功方案都來源於各類模式,教育的一個重要目標就是把知識的模式一代一代傳下去。負載均衡

所以學習設計模式,就像咱們在看世界頂級的游泳比賽,咱們爲之瘋狂,爲之着迷。高併發

 

三 學習設計模式

正像咱們並不想只是看別人表演,咱們要本身學會游泳,這纔是咱們的目的所在。

當咱們看完幾篇設計模式後,咱們爲之精神振奮,在新的coding的時候,咱們老是想努力的用上學到的設計模式,可是常常在誤用模式,折騰半天發現是在脫褲子抓癢。。。

當學完設計模式以後,咱們又很困惑,感受這些模式簡直太像了,不少時候咱們分不清 這些模式之間到底有什麼區別,並且明白了設計過程當中的一個致命的東西--過分設計,由於設計模式要求咱們高擴展性,高重用性,可是在需求提出之初,咱們都 不是神,除了依靠過去的經驗來判斷外,咱們不知道哪些地方要擴展,哪些地方要重用,並且過去的經驗就必定是正確的嗎?因此咱們甚至不敢再輕易用設計模式, 而是還一直在用面向過程的方法在實現需求。

 

四 學習重構

精彩的代碼是怎麼想出來的,比看到精彩的代碼更加使人期待,因而咱們開始思考,這 些大師們莫非不用工做,需求來了沒有領導規定完成時間,只以設計精彩的代碼爲標準來開展工做?這樣的工做太爽了,也不可能,老闆不肯意啊。就算這些理想的 條件他都有,他就一開始就設計出完美的代碼來了?也不可能啊,除非他是神,一開始就預料到將來的全部需求,那既然這些條件都沒有,他們如何寫出的精彩代 碼?

Joshua Kerievsky在那篇著名的《模式與XP》〔收錄於《極限編程研究》一書)中明白地指出:在設計前期使用模式經常致使過分工程(over- engineering)。這是一個殘酷的現實,單憑對完美的追求沒法寫出實用的代碼,而「實用」是軟件壓倒一切的要素。

在《重構-改善既有的代碼的設計》一書中提到,經過重構 (refactoring),你能夠找出改變的平衡點。你會發現所謂設計再也不是一切動做的前提,而是在整個開發過程當中逐漸浮現出來。在系統構築過程當中,你 能夠學習如何強化設計;其間帶來的互動可讓一個程序在開發過程當中持續保有良好的設計。

總結起來就是說,咱們在設計前期就使用設計模式,每每致使設計過分,所以應該在整 個開發過程,整個需求變動過程當中不斷的重構如今的代碼,才能讓程序一直保持良好的設計,因而可知,開發過程當中須要一直重構,不然不管當初設計多麼的好,隨 着需求的改變,都會變成一堆爛代碼,難以維護,難以擴展。所謂重構是這樣一個過程:「在不改變代碼外在行爲的前提下,對代碼作出修改,以改進程序的內部結 構」。重構的目標,就是設計模式,更本質的講就是使程序的架構更趨合理,從而提升軟件的可維護性,可擴展性,可重用性。

《重構-改善既有的代碼的設計》一書也是Martin Fowler等大師的做品,軟件工程領域的超級經典鉅著,與另外一鉅著《設計模式》並稱"軟工雙雄",不可不讀啊。

 

五 開始通往優秀軟件設計師的路上

經過設計模式和重構,咱們的所學和咱們工做的coding終於結合上了,咱們能夠 在工做中用面向對象的思惟去考慮問題,並開始學習重構了,這就像游泳同樣,咱們看完了各類頂級的游泳比賽,明白各類規則,名人使用的方法和技巧,如今是時 候回家去村旁邊的小河裏練練了,練習也是須要有教練的,推薦另外一本經典書叫《重構與模式》,引用他開篇的介紹,本書開創性地深刻揭示了重構與模式這兩種軟 件開發關鍵技術之間的聯繫,說明了經過重構實現模式改善既有的設計,每每優於在新的設計早期使用模式。本書不只展現了一種應用模式和重構的創新方法,並且 有助於讀者結合實戰深刻理解重構和模式。

這本書正是咱們須要的教練,值得一讀。

 

六 沒有終點,只有堅持不懈的專研和努力。

通過了幾年的堅持,終於學會了靈活的運用各類模式,咱們不須要去刻意的想用什麼模 式,怎麼重構。程序的目標,就是可維護性,可擴展性,可重用性,都已經成了一種編程習慣,一種思惟習慣,就像咱們聯繫了幾年游泳以後,咱們不用再刻意的去 考慮,如何讓本身能在水上漂起來,仰泳和蛙泳的區別..... 而是跳進水裏,就天然的遊了起來,朝對岸游去。可是要和大師比起來,嘿嘿,咱們還有很長的路要走,最終也可能成不了大師,但不管能不能成爲大師,咱們已經 走在了成爲大師的正確的路上,咱們和別的程序員已經開始不同,由於他們不管再過多少年,他們的水平不會變,只是在重複造輪子,惟一比你快的,就是 ctrl+c和ctrl+v。

正確的路上,只要堅持,就離目標愈來愈近,將來就必定會是一個優秀的架構師,和優秀架構師的區別,可能只是時間問題。

 

注:不要成爲一個代碼的搬運工!!!必定在寫任何代碼的時侯要多想,怎麼才能作的更好( 可維護性,可擴展性,可重用性 ),提醒同行,同時也是提醒自已!選擇這條路就註定要比通常要辛苦,但選擇了,就要把它作到最好。

 

目標:

1、 架構師有優秀的編碼能力,解決開發人員沒法解決的難題。

2、 架構師對系統的大數據容量高性能高併發高容錯的網站有架構設計和開發經驗。

3、 架構師對操做系統、數據庫、服務器各類軟件使用的配置比較瞭解,好比Linux、Web負載均衡、反向代理、數據庫集羣、容災等比較瞭解。

4、 架構師對軟件開發過程有清晰明確的認識,也就是對軟件工程有有明確的認識,並能把需求進行分析、建模。

5、 架構師學習能力很強、接觸知識面要很寬廣、喜歡關注和接觸各類新的技術。

6、 架構師溝通能力很強。

7、 架構師對從事的行業的業務要有深入的瞭解。

 

學習技術:

1、面向對象編程、UML畫圖、設計模式、代碼重構

二、 經常使用ORM工具

三、  MVC,WCF,XMl, JQuery ,SQL以及性能優化

四、 FrameWork一些深刻的知識

五、 高性能代碼,好比靜態化,MemCached等手段。

六、 最好也瞭解一些其餘語言,好比Java,PHP等。

七、 經常使用數據庫,MSSQL、MySQL、Oracle,性能調優熟練,備份、負載均衡、集羣、容災熟練

八、 大數據量處理熟練

九、 各類數據庫監控軟件

十、 各類Web負載均衡的硬件,好比F5,軟件,好比Nginx等原理和配置

十一、 反向代理加速,好比SquID等

十二、 操做系統,Linux是必須懂的,各類好的工具都在Linux下。

1三、 各類性能監控軟件。

相關文章
相關標籤/搜索