程序員爲何熱衷於造輪子,升職加薪嗎?


做者:小傅哥
博客:https://bugstack.cn - 原創系列專題文章html

沉澱、分享、成長,讓本身和他人都能有所收穫!😄

1、前言

哪一個架構師沒造過輪子?git

你想過這樣一件事嗎?是先具有能力在安排職位,仍是先安排職位在學習? 🤬什麼?走後門,你出去! 程序員

就像咱們上學考試、跆拳道考段、晉升答辯同樣,都是先具有了可勝任上一階段的能力,纔給予相應的職位。因此,架構師造輪子從作程序員時候就開始了,只不過到了架構師階段能夠造出更好的輪子。github

鑑於實際業務開發的緊急程度,不會容許你造輪子。但造輪子,幾乎是每一個程序員突破技術瓶頸的最佳方式。千萬不要由於一句,不要重複造輪子的藉口,給本身一個不學習的理由!web

2、我造過的輪子

我多是癡迷於造輪子! 面試

瞭解小傅哥的粉絲可能都知道,個人第一份工做是寫了兩年的 C#,但爲了避免放下我寫好的 Java,在工做之餘就用 Java 語言把我能接觸到到的項目,都用 Java 寫了一遍,包括;串口打碼機服務、中繼器對接、PLC數據採集等等。算法

等到正式進入互聯網後,像是爲我打開了新的大門,這能接觸到的知識太niao性了,盤它!來,看我造過的輪子spring

1. RPC 通訊組件

  • 文章:手寫RPC框架第三章《RPC中間件》
  • 源碼:https://github.com/fuzhengwei/itstack-demo-rpc
  • 難度:⭐⭐⭐
  • 15年初進互聯網,驚訝的發現原來兩個工程之間還可使用RPC通訊,之前公司使用的仍是http或者webservice,因此這部分知識給我帶來了很大的衝擊。爲了能更明白的瞭解它,找到了一些git中的源碼,像Dubbo、gRPC,進行學習。學着學着,就開始動手本身實現一次,實踐的過程學到了大量的知識,包括;結合Spring開發中間件、自定義配置、主定義註解、切面攔截、Netty通訊、編解碼器、流量整形等等。這些知識也爲我後續開發其餘中間件,打下了一個很好的基礎。

2. 編寫JVM虛擬機

  • 文章:用Java實現一個JVM虛擬機
  • 源碼:https://github.com/fuzhengwei/itstack-demo-jvm
  • 難度:⭐⭐⭐⭐⭐
  • 這是一個用不上的輪子,同時這麼幹可能有點虎🤔,整整寫了一個月,寫了幾十萬行代碼,才能運行幾個簡單的HelloWorld。,由於我不想聽別人吹着一些理論詞忽悠了個人編碼生涯,也不想看幾本不能實操落地的書就感受學會了。因此,我才願意投入大量的時間進行實踐,雖然我不能完整的編出一個能夠用到生產使用的JVM,但我經過這樣的學習,瞭解了JVM的基本功能;搜索和解析class、字節碼指令集、運行時數據區、虛擬機棧、棧針、局部變量表、操做數棧、寄存器等,是如何一步步把Java代碼跑起來的。

3. 基於SpringBoot的分佈式任務中間件

4. 服務治理中間件

  • 文章:服務治理中間件之統一白名單驗證-%E6%9C%8D%E5%8A%A1%E6%B2%BB%E7%90%86%E4%B8%AD%E9%97%B4%E4%BB%B6%E4%B9%8B%E7%BB%9F%E4%B8%80%E7%99%BD%E5%90%8D%E5%8D%95%E9%AA%8C%E8%AF%81.html)
  • 源碼:https://github.com/fuzhengwei/door-spring-boot-starter
  • 難度:⭐⭐⭐
  • 服務治理是什麼?其實服務治理包括的內容也比較多,例如;從部署層面、管理層面、應用層面、網關層面等等,而這裏的服務治理說到的是應用層面,簡單來講,例如你有不少個服務系統,每一個服務的對外層都須要白名單,那怎麼辦呢?不太可能每個系統都重複的開發相似的功能,這樣也很難管理。因此咱們但願把業務系統中,非業務邏輯的通用性核心功能抽離出來,開發成統一的業務組件,來幫助服務解耦,讓業務系統更關心業務流程開發。那麼這就是服務治理其中的一個做用。

5. Netty仿桌面版微信

6. 還有不少造過的輪子

  1. 數據庫分庫分表路由中間件
  2. Redis緩存讀寫引擎中間件
  3. ES + Ibatis結合使用中間件
  4. 全鏈路業務流程監控

除了,這些造的輪子還有不少,其餘的不一一列舉了。固然我不僅造輪子,還造各類小工具,甚至還包括js寫的散列路由計算器。總之,我可能在造輪子的路上越走越遠,是由於過於癡迷🧐!sql

3、造輪子升職加薪嗎?

造輪子自己不必定升職加薪,若是你第一次造,也許會被扣薪。數據庫

若是是運用到業務系統中的造輪子,不一樣於CRUD,每每須要瞭解 Spring 或者 SpringBoot 部分源碼,以及動態代理和反射等知識。而且在設計實現上也要考慮的很是全面,不然出了事故就不僅是一個系統,而是全部使用你這個輪子的系統都須要隨着你升級改造上線。因此,造輪子不必定升職加薪!

但,造輪子可讓我的的技術棧獲得很全面的成長,也許還能讓你在某個階段突破現有的技術瓶頸。由於造輪子你須要學習以往別人的輪子、組件的源碼、拓展的技術棧以及更加全面的思考🤔。

最後是你造的輪子要能經受起驗證,也要能適應業務需求進行拓展,而且這可能仍是一份除了你平常業務系統開發外的其餘工做。是否能經受起這份考驗,也就決定了你能收穫多少知識。而這份別人沒掌握的知識纔是你升值加薪的籌碼!也是你能留下的本事和走出去的能力!

4、有人反對你造輪子?

不要重複造輪子、不要重複造輪子、不要重複造輪子

不少時候你是否聽到這句話,而把本身心裏的小火苗澆滅。其實這句話從某些時候來講不必定是錯的,由於一個項目的開發到上線,須要對時間成本、項目質量、可靠度進行評估,誰也不敢貿然使用一個沒有驗證過的新功能,也不敢讓你拿着練手。

固然,有時候咱們造的輪子不必定是重複的,多是創新的。但這個輪子的階段,不該該是新項目啓動時候開始,最起碼應該是你在這以前就寫過,已經驗證過,已經投入生產過,纔敢讓你造了用。對於當前此次開發,若是很是緊急,那麼最好的是求穩,並在這個項目裏吸取更多的經驗。並總結若是是用了你的輪子,那麼這個輪子能支持多久,還須要擴展嗎,會不會有問題。

這一切的學習、總結、應用,最終都是能夠爲你技術棧成長鋪路的。不要因別人反對就放棄,也不要倔強的就非要怎樣,並且遊刃有餘的成長和學習。有準備的人,老是會在必要的時候給力😎!

5、總結

  • 沒有一句話能評論造輪子的錯和對,即便是已經有了的輪子,那麼你以學習爲目的呢?你以能夠拿出更優的方案爲導向呢?因此,想造就造吧,只不過千萬要驗證在使用!
  • 造輪子能咱們學到不少業務系統開發之外的知識,這些知識能拓展你的技術棧,掃描掉一些技術盲區,爲你之後的晉升答辯或跳槽面試鋪好夠到更高薪資的墊腳石。
  • 想造輪子要學會讀源碼、學會技術遷移、學習數據結構、學習算法、學習設計模式,必定是先提高技術視野了,才能讓本身有造輪子的想法,而不是硬造。

6、系列推薦

相關文章
相關標籤/搜索