在公司技術架構部呆了快兩年了,做了一些中介軟體,也做了很多專案的重構、技術公升級或者code reviewe等工作,對專案的架構設計、技術運用有了一點兒的感悟,寫一下算拋磚引玉。
所有的技術的出現都是為了滿足業務的需要,這是基礎,在基礎之上有了我們需要的合理的專案、架構、模式設計。這是為了節約成本,成本在哪體現呢?成本在於專案的開發維護成本(人工),伺服器成本,寬頻成本,溝通成本,運維成本等。
如果乙個專案乙個節點的部署就抵得上五個節點部署的效能,那節約了成本嗎?節約了,節約了成本就意味著為公司提高了效益。
如果乙個良好設計的專案,乙個初中級程式設計師只花了一天就可以很清楚的了解專案的設計思想,知道他需要修改的**在哪個模組兒,並且整個專案感覺條理清晰,**整潔,那麼他的效率就發生了提高,節約的是人工成本,同時也是提公升了效益,可是如果反過來說,乙個專案模組兒不清楚,專案雜亂無章,乙個中級程式設計師需要三天時間才能run起來,而且不知道自己將要做的功能,**應該寫在哪,那麼這個專案時間久了就成了「垃圾」,而且為公司降低了利潤。
如果乙個程式設計師寫出來的**,效能極好,比如,單執行緒換成了多執行緒,比如socket換成了netty,同步換成了非同步,輪詢變成了監聽,各個地方都做到了極好,原來需要20個節點才能扛起來,現在只需要五個,那麼它節省的也是一大筆費用,要知道乙個阿里雲4核16g的機器也得3000多一年。
可是乙個程式設計師怎麼才算是好的程式設計師呢?
我認為,乙個能理解簡單業務需求並獨立完成開發並解決簡單問題的是初級。
能搞定複雜業務需求,多模組兒開發並完成部署,建表,壓測等功能的是中級。
乙個能解決疑難問題,完成95%的疑難業務的開發,或者一整個專案的開發是高階,且能對開發出來的**保證效能,保證穩定性和擴充套件性、維護性,且在一定級別上保證自己寫的**為最優,不需要自己編寫中介軟體,但對各種中介軟體、框架、技術的原理及特性或核心原始碼有一定的了解為高階。
那架構是什麼呢?有人說架構就是架構不用寫**,我想說qnmd吧,乙個架構必然是由初中高一步一步上來的,如果乙個所謂的架構師對語言的核心思想、特性,對各種中介軟體、框架、技術沒有很充分的理解,甚至修改原始碼的能力,他怎麼能夠保證他能把這個中介軟體放置在專案合適的位置呢?那也就是說我認為乙個架構,不僅要對各種中介軟體瞭如指掌,針對業務設計合適的技術樣本,並且要有充分的技術把控管理能力,其次還要有自己獨特的思想,自己的思想體現在專案的設計中,使專案可以預知一些將來可能出現的變化,並使專案能夠很簡單的適應這些變化。
先到這兒。
設計模式的作用
構建乙個優秀的系統最困難之處不在於編碼 coding 而是在早期 做出的設計 design 上的決定。設計是軟體開發生命週期中的關鍵階段,好的設計能產生好的產品,而不當的設計則會影響最終產品的質量。設計的重要性 已經深入人心,這從人們熱烈討論和研究設計模式就能看出來。設計模式是擁有多年開發設計經驗的...
什麼是設計模式?及它的作用
設計模式六大原則 概念 設計模式是一套被反覆使用的 多數人知曉 經過分類編目的優秀 設計經驗的總結。特定環境下特定問題的處理方法。1 重用設計和 重用設計比重用 更有意義,自動帶來 重用 2 提高擴充套件性 大量使用面向介面程式設計,預留擴充套件插槽,新的功能或特性很容易加入到系統中來 3 提高靈活...
論架構技術在專案中的具體應用
架構平台在專案開發中並非是必須的,從軟體專案的整體角度來看,其實質僅為在開發工具的平台之上根據軟體專案的業務特點抽象地提取一些基礎類或實現一些基本功能,輔以開發規則的約定和約束,通過系統地組織以構成乙個整體,以達到輔助專案和開發人員進行開發的目的。在物件導向開發方法過程中,從程式設計的技術角度來看,...