知識只有經過整理才能形成技能
一、煩惱絲
1、技術池太淺
作為開發者,工作了幾年,也總覺得技術棧和剛畢業區別不大,用的技術還都是N年前的,每每看到新東西,也只心裡哇塞驚歎一下,然後就迴歸於忙碌。怪自己的技術池太淺
,熱門的令人稱奇的技術也都是在其他巨人的肩膀上產生,但自卑還沒夠到巨人肩膀,便覺得新技術(相對於自己的技術程度)離我們好遠,對它也無能為力,不瞭解能否解決當前的痛點?應用成本高嗎?就像爬山1W個臺階,站在9K臺階處的人就會覺得容易些,站在1k臺階處的就感覺高不可攀。邁出第一步,跟上前面登山的人。
經常會看見公司框架裡那些前人寫的程式碼,還是.NET早些版本1.0,2.0時代的,雖然語法還比較low,但設計卻讓人驚奇,身邊也少見架構師可以求問學習。我們是從事GIS行業開發,可能著重在於GIS功能的開發,其實有點本末倒置
。GIS只是開發中的一個外掛,我們的根本應該還是要先把.NET玩溜,很多像效能瓶頸、版本相容跨平臺等問題也就迎刃而解。
2、乾貨太少
有時候看不懂的設計程式碼就去查,當下明白了,某天又忘記了,也不會使用。網上資源太多隻能用來解決某個特定問題,如某個bug,某個安裝,這是你快速解決遇到的某個問題的好途徑。系統的提升還是需要有個全域性系統的知識脈絡,像書籍,課程。在系統性的學習之後,會對.NET有個相對全面認識,工作中遇到的一些棘手問題,也都有對應成熟解決方案,根本不會說解決不了,只能曲線求國。很簡單的功能設計因為認知不足,浪費大量的人力,設計出龐大難以維護的系統,這是開發者最不能期許的。還有目前.NET很熱很成熟的框架都用到高階語法(僅區別於基本語法),反射啊,委託啊、非同步多執行緒啊,還有很多令人拍案叫絕的設計思想。不整明白以後更加忐忑,對新技術淺嘗輒止也不會剖析更不敢應用到實際專案中,永遠只是個旁觀者,只在山腳下叫苦
。
想起大學時不務正業沒正經上過幾次課,畢業前開始有點恍惚,逼著自己系統學習了下C#基礎,雖然輕鬆畢業就業,就業後做過.NET的CS/BS開發,做過Java的BS開發,但都是瞭解了基本語法就提槍上陣了,靠運氣躲過技術難題。那時沒想到要整理,好多書籍課程資料也因搬家都丟棄了。有些時候忘記的知識點還要去網上查詢,一下找著正確的還好,找不到又還看到部落格論壇還在轉發一個錯誤的示範(我知道有可能只是環境不同沒能像文中描述那麼順暢),心裡就開始mmp了。
所以寫技術文章,一定要經過驗證,交代自己的驗證環境。
3、記性太差
這次準備把自己整理時候的知識點記錄下,按俗套姑且取名.NET進階篇
,以便自己以後查閱,好多東西你一定做過,但你就是暫時想不起來了
。爛筆頭記一下,想不起來也好找。自己動手記錄,會不自覺看很多遍,修改很多遍,思路也會更加清晰。作為職業Coder,說實話寫文章方面文筆就糙了點,大多時候寫字隨心所欲,與其咬文嚼字,不如多關注些自己知識的盲區。但會盡量要求程式碼比文字嚴格精煉,一行程式碼勝千言就更好。
二、章節分佈
1、大綱
我會在整理了一些知識點的時候發出來,連著白瞟好幾集的感覺應該很爽。整個進階篇的章節分佈如下(後面估計會調整,大章節分佈不會變,可能納入些新的東西)。
我用了一個新的輕薄本(本來買來專作開源GIS的,都快落灰了,如果能堅持把這一系列寫完,它也算立大功了),宇宙最強IDE-VisualStudio 2019(線上安裝比較慢,離線包有20G左右,後面會上傳),在週末假期做拆解,合併,驗證,整理工作(原諒我們工作日很難跳出工作狀態,下班有空也多是關注工作中遇到的問題)。一個知識點的相關書籍課程拆出來,為了保證質量,可能需要挺長時間。希望做到一個知識點看這一篇就夠了的地步
。直接複製安裝可用的框架程式碼我們還沒能力整理出,此篇更多的是指導思想、原理解析,以點帶面,當然會用些經典小例子,所以別太指望能直接複製貼上到自己系統中F5就能執行成功。定位是高度總結概括,面向抽象
,比如像正則可能就不會介紹,我們也記不住。到了應用的細節地方可能還需要去查閱詳盡的資料,但知道怎麼用,怎麼查,出問題也不慌張,面對新奇熱門的框架也不怵,這是我們期望的。
2、簡介
語言章會讓你認識C#一些高階的語言特性原理,作為後面的鋪墊,設計框架離不開這些東西。設計章總結常用的設計套路,不敢說融會貫通下筆如有神,起碼會讓你編碼過程中能嗅出設計的壞味道,然後著手重構,重構的過程,會慢慢發現自己的設計竟然和成熟框架設計思想越來越像、如出一轍。框架章會了解常用框架的原理應用,工作中可以快速選型和應用,也對目前開源.NET環境深入認識。
當然,做的越多錯的越多
,沒有信心說沒有錯誤,更歡迎讀者能指出來。一起進步,少走彎路,促進行業發展,社會進步。沒錯,我的夢想是推進世界進步。我們能遇到的每個問題都在某個地方被某人解決過,交流是一種快速且有效的處理問題方式。讀書旅行交友都是在交換著我們對世界的認知,瞭解的越多,被你掌控的事物就越多。我們隨時都有Plan B,還怕啥。
二、後話
其實語言層面很多.NET開發者不願承認,Java熱度確實總比C#高,以前也覺得.NET挺low的,給人總是後知後覺的感覺,畢竟商業運作嘛,要經過很多過程抉擇的。一方面可能與我從事的行業相對網際網路比較閉塞有關,實際用到的.NET技能也不是很多,也沒有大而全的認識。另一方面也與我慵懶佛系的性格有關吧,不爭第一,凡事只做第二就好。千年老二其實挺好的,恰到好處,有餘力有餘地。
所以也沒想過切換自己的主語言,如果需要Java開發者,一個優秀的.NET開發者肯定也能冒名頂上。語言真的是一通百通,設計思想更是放之四海而皆準,只是自己主語言開發起來會更順手罷了,就像經常開自己家的車會比較順手一樣。一般開發者都會不止一種語言。沒有最好的語言,適合自己的就是最好的
。你第一次學習接觸的語言理應當做你的母語,如果你問我什麼是世界上最好的語言?那我不知道,我只知道C#也會是之一。
如果手機在手邊,也可以關注下vx:xishaobb
,互動或獲取更多訊息。當然這裡也一直更新de。