引言
本文篇幅較長,且不涉及任何技術方面的程式碼,亦可能涉及一些淺層的哲學方面的,如不喜,求放過。
經常看到在各個程式設計師論壇上,總是以術成文,鮮有以道成術,而諸多同僚大多數都追求於術,卻略於道,而經驗之談,卻是重於術數之用,故,今日開篇總結我的程式設計師之路,六年下來總結的屬於自己的方法論分享給大家,希望對各位有所幫助。
轉眼間,入行做程式設計師已經六年,我已經由剛開始的小菜鳥逐漸成長為此時此刻的老菜雞,老油條,剛畢業的時候,一個人從西安跑到了杭州,在杭州那邊找到了一份net相關的工作,至此開啟了我的程式設計師之路,猶記得剛開始的時候,我也是慫慫不懂,碰到各種問題和bug也是諮詢我的同事,剛畢業,就只會一點點的c#基礎,html,js,css都沒有寫過,由於專案是webform,多少會涉及到一些前端的知識,這塊相較c#來說是一個弱項,所以我總是時不時的請教我的同事,在這樣的砍怪升級的路上,我不斷成長,在前年的時候,我對此總結了一套屬於自己的方法論,後面的幾篇文章,也會根據這個以此來展開,我整理了很醜的一幅圖,有些東西沒有表現在圖上,但我會將我所想,一一陳述出來。
問題刨析之路
首先這個圖是根據兩個方向去看的,但是所有程式設計師都是從第一階梯最底層開始的,剛入行開始,我們要先了解我們這個行業,這個語言的基礎知識,去鞏固我們的基礎,這樣,我們才能實現技術進階,提升我們的編碼能力,至少在某些技術層面,可以很少的去打擾同事,正所謂,基礎不牢,地動山搖,基礎好了,那相應的,我們在寫程式碼的時候可以提升一些我們的編碼能力,至少在基礎層面的編碼很少犯錯,當我們的基礎到了一定程度的時候,我們會了解到,學習到高階的技術,我記得當時我學會反射的時候,那個時候很開心,覺得這個東西用起來在編碼的時候能解決很多問題,能動態的去實現我們想要的一個業務邏輯,當我們在這一階梯,鞏固好了我們的技術之後,便自然而然的問到了我們的下一步驟。
我們不管是進入到哪個行業,這其中必不可少的是學習,所以我們是需要一套屬於自己的高效的學習能力,以應對我們在工作中,在生活中所需要實現我們的想法和目標,可能有的人覺得看影片,比較適合自己,有的人覺得看書,看紙質書,電子書,這些都只是其中的術而已,而驅動你,驅動你找到高效的學習方法方為道,而我們在學習在實踐的過程中,或多或少的都會遇到一些難題,疑惑,為此我們就需要藉助各種各樣的工具去解決我們的難題和疑惑,那和此問題相關的論壇,或者相關網站,以及搜尋引擎,就派上了用場。
當然,我們在去使用以上論壇或者搜尋引擎的時候,也不能是漫無目的的去搜尋,而第一步,則需要我們去深層次的去分析這個問題或者需求的來源,例如,我們的客戶給我們提了一個程式上的需求,那我們應該先站在客戶的角度上分析這個需求給客戶帶來了什麼好處,以及我們如何去實現這個需求,如何能夠更好的去實現這個需求,或者說我們遇到了一個bug,透過列印日誌,或者去看報錯的程式碼,去分析這個bug最根源的地方是在哪,究竟是為什麼報錯所導致,目前就net而言,我們如果看不到原始碼,我自己會使用Dnspy執行程式以此來分析,程式是在哪塊程式碼段報的錯,其中有的地方會加上自己的猜想,更好的使用自己的主觀能動性,去分析這個問題這個bug,當我們找到了導致我們程式最根源的bug報錯程式碼段的時候,可能用的是第三方庫,又或者是 微軟自己的。那我們就可以藉助論壇,部落格園,MSDN,CSDN,百度,或者google,去搜尋對應的解決方案。
不過,在當今資訊洪流的世界裡,我們周邊總是被各種各樣虛假資訊充斥著,導致我們有的時候並不能分辨,哪些是我們想要的,哪些和我們想要的是無關的,這塊就需要展現我們的搜尋能力,還有過濾能力,前幾年我經常幫別人遠端解決問題,經常看到有的人百度的時候,方向都不對,前後端互動明明是後端的問題,搜尋的時候確是前端的關鍵詞語,看的我很是捉急,這雖然是一個很不起眼的一個行為,但卻展示出個人思維能力引導的問題,雖然那個問題的表象是在於前端,但是其根源是在後端,如果從表象去檢索本質的問題,那多少是有點本末倒置,這一點就需要提升我們的檢索能力,而檢索能力是和第三層的表達能力,思維能力是相關的,因為這兩個是對你檢索問題,解決問題起了一個引導性,決定性的作用,不然就是南轅北轍。
當我們透過正確的練習,提升了我們的表達能力思維能力,那相應的檢索能力也會提升,至少方向不會錯,關鍵詞不會錯,同時在檢索的結果集中,會包含著很多資訊,這其中有的是有用的,有的是無用的,這其中,就需要我們自己過濾,我們得明白,清楚,哪些是我們想要的,哪些不是,固然試試又不犯法,但試試同樣浪費時間,試試也要放在有用的試驗之上,畢竟試錯的時間也是成本,有些結果集中,包括的東西可能和我們遇到的問題表象是一樣的,但本質是千差萬別,就像當今網際網路中,抖音是最火的一款短影片平臺了,其中包含了各個方向,各個行業的影片,而我們被這些所充斥著,儘管會根據自己的點贊喜好推薦自己可能喜歡的作品,但有時候還會夾雜一些,不是我們所喜歡的作品,這個時候其實就是一種過濾,可能很多人不思考其不喜歡的背後,就是我們大腦對此類影片的一種過濾,而且,影片的背後也不一定是你所看到的那樣,所以,在面對這些資訊洪流的時候,我們得明確知道自己喜歡的是什麼想要的是什麼,以此來解決我們的問題,實現我們的業務需求。
如果工作幾年後,就是從上往下,因為那個時候,我們更應該去建設我們自己的頂層抽象能力,而不是底層的技術能力,如果前幾年沒有建設好底層的技術能力認知,那頂層去做出引導的時候,我們的認知不匹配,解決問題的時候,有時候也不是更為優雅的處理方式,僅僅是對於我們而言是最優雅的處理方式。
像我個人,比較喜歡去微軟的官方文件,去找尋我需要使用的某個類,某個方法的使用或者如何使用,找不到的話,也會藉助百度,CSDN,部落格園,等各個論壇,當然有時候也會去國外的一些網站找尋我想要的答案,如果有人說CSDN怎麼樣怎麼樣,我覺得我們的目標是在於解決問題,而不是在評判某個東西怎麼樣怎麼樣,為此我想分享一下我的觀點,除去問題本身之外,服務於這個問題的都是這個問題的工具,當然,除卻人體之外的也都是工具,在高深一點,除卻思維之外的都是工具,包括人體本身。
方法論的形成
小時候都學過的一句話,叫人有兩大寶,雙手和大腦,雙手會動手,大腦會思考,漸而養成了善觀察,喜思考,勤動手的一個習慣,而在迴圈往復的過程中,經常總結,覆盤,思考,便形成了屬於自己的方法論,在面對問題和需求的時候,我是希望自己能夠擁有一種追本朔源的能力,我不知道目前我算不算有,至少我在追求,因為在面對問題,擁有了這種能力,一眼看透問題的表象,從而找到最根本的方向,在解決問題的時候,是一種事半功倍能力,可以減少很多不必要的成本,節約時間,而在上一段中,我分享和解釋了那張圖,其中就包括了我自己的一個方法論,就是面對問題和需求的時候,先做一個簡短的分析和猜測,並在不斷的解決過程中驗證這個分析和猜測,最後在透過各方面的工具,去解決這個問題,然後去更好的解決這個問題,正如上所述,第二層的能力是和第三層息息相關,甚至,第一層也和第三層息息相關。
第三層上,思維能力,表達能力,溝通能力,最重要的當屬思維能力,因為上圖中,其實我是想把他描述成一個立體3D金字塔的,塔尖上的應該是思維能力,因為思維能力在同層的表達能力,溝通能力,還有下層的學習能力,檢索能力,過濾能力,是起了一個關鍵性的引導作用,總結作用,方法論的形成,也是思維能力的體現,同時第一層級的基礎能力,編碼能力,還有高階技術能力又依賴於第二層的各個能力,而高階編碼能力,例如所常用的設計模式,都是思維能力的體現,由此可以看出,思維能力在我們工作,生活中的一個重要性,以前讀書的時候,初中,是一個比較調皮搗蛋的人,老師經常說我說話不經過大腦,而我們在人際交往,或者學習,或者生活中的各個方面,我們都離不開思維能力,思維能力給了我們一個解決問題或需求的一個方向,直接性的決定了一個問題或者一件事的走向,如果善於思考,不難發現,思考本身就是思維能力的體現。正如大學所言:知止而後有定;定而後能靜;靜而後能安;安而後能慮;慮而後能得。
在這個社會下,我們總是扮演不同的角色,打著不同的標籤,有的標籤是與生俱來的,有的是後天形成的,白天,在公司我們是員工,又或者是同事,回家我們是丈夫,或者父親,又或者是兒子,可是什麼時候是自己?我從高中開始,養成了晚上睡覺前的一段時間,把這一段時間留給自己,因為 這段時間,我才屬於我,不屬於任何人,在這個時間裡,我會對當天的事情做一個覆盤,對後面的事情做一個規劃,也會放開所想,去想各種事情,最多的是關於宇宙,黑洞,或者哲學,古詩詞的。但我不知道其他人是否會面對自己,給自己和自己騰出時間去覆盤,規劃,利用自己的思維能力去做一些自己想要做的事情。
如果善觀察,喜思考,勤動手你會明白生活和工作中的很多事情,會逐漸明瞭很多事物的本質,可能在面對不同表象的事物或者言語,或者需求和問題的時候,根據我們以往的經驗,我們的思維能力會根據當下事務的本質,給我們一個反饋,從而更方便我們去解決當下的困惑。同時我們也需要針對某一件事情進行歸納總結,和思考,就像滾雪球一樣不斷的充實自己,這樣更能方便我們形成自己的知識庫,在使用我們的方法論去知識庫檢索,去使用工具檢索,更能提升自己,讓雪球越滾越大,在不斷的迴圈中,不斷的壯大自己的直徑。
說了這麼多,都是抽象類的東西,可能對此有些人會嗤之以鼻,正如我和我朋友所言,有的人需要碰壁才會成長,而有的人在領悟之上就可以成長,降低自己碰壁的機率,而領悟就是思維能力的體現,正所謂借假修真,借他修己。
可持續發展
從人生的角度看,短短几十年,亦如雲煙,而云煙的形成也不是突然出現,或者突然不見,都是有一個過程,而這個過程就是一個可持續發展的過程,人們常說,活到老學到老,這個學,是可持續發展的重要手段,我從小菜鳥道老菜雞,也是一個過程,是過程,就可以形成可持續發展的方向,正如我們這個行業,是一個不斷需要學習的過程,在當下這個行業,當然不僅僅侷限這個行業,在大多數人眼裡,自我提升式彷佛成為了一種內卷,你不學習,或者你減緩你可持續發展的腳步,並不能影響別人去可持續發展,而為此別人的自我提升並不是內卷,如果自我提升,也是內卷,那小到個人,大到民族,那又如何去進步,而內卷僅僅只是無意義的行為付出,需要得到別人的認可而已,你工作無意義加班,為了得到上級的認可,著本身就是一種內卷。
我從事這個行業,剛開始就是興趣驅動,到現在我也喜歡,可能勁頭沒有那麼大了,而可持續發展,是需要一種底層動力作為支撐,不管是興趣,或者是金錢,名利,等都是一個支援,如果哪天沒有堅持了,那可持續發展也就到頭了,如果是看本文的IT同僚們,還是希望諸位能夠多學一點知識,不管是金錢支撐,還是先興趣愛好,都是一個動力來源。
本段說是可持續發展,其實只是某一過程的可持續發展,這個過程的可持續發展,可能下一個過程也是,不過其方向不一樣,人生不也是一個過程,這個過程,你可以是金錢的可持續發展,學識的可持續發展等等,但最重要的是,要抓住可持續發展的決定性根源性的東西,併為此藉助方法論,或者思維能力去實現這個過程的可持續發展。
程式和生活
在剛才提及到的方法論之中,我隱約透露著方法論,不僅可以作用於工作上,也可以應用於生活中,前提是你形成了自己的這個方法論,就像最開始那張圖,他並不侷限於任何一個行業,如果把第一層的編碼能力換成其他,高階技術也換成其他行業共有的東西,那本身就是一個通用行業的金字塔結構,生活中遇到問題,同樣可以藉助問題分析,方法論,去解決現實問題,例如各種稀奇古怪的人際交往,人際交往中又出現的問題,只要你善於觀察,思考,總結,歸納,我想你肯定也會形成自己的獨到見解,只是看到分享的更多的是術數,便想說下自己的經驗之談,希望對大家有所幫助。