【經(jīng)驗分享】編程五年,才發(fā)現(xiàn)原來我還只是一個高級新手?
我大二開始接觸編程,如今已經(jīng)過了五年,本以為自己即使沒有多厲害,但是也好歹可以在社區(qū)指點(diǎn)一二了,但是最近發(fā)現(xiàn)自己不過是個高級新手而已!

今天,我就來分享,我的所思所得,也希望忙于需求和解bug的程序員們來駐足一下,重新審視自己的思維方式。
我的辦法
我自己在需求中遇到編程難題時,經(jīng)常是這樣解決:
將報錯信息或者疑惑在google中搜索,大概率看到stack overflow網(wǎng)站出現(xiàn),往后會有csdn,博客園等。
點(diǎn)進(jìn)去,不看問題,先看最高贊的描述,如果意思和我的想解決的是同一個問題,就復(fù)制代碼,大致改改,黏到我的項目中。
如果生效并有時間,我會認(rèn)真理解這段代碼,確保沒有副作用;如果沒時間,就直接過了,反正,能跑就行。

如果不生效,從步驟1再開始,如果stack overflow沒有了,就選csdn……
靠著上面的步驟,我曾經(jīng)解決過無數(shù)問題,但是有什么問題呢?我們來看下面的模型。
德雷福斯模型
這個模型,主要是按照水平將程序員分為5個階段:

下面的加粗部分是水平的核心描述詞,大家可以對照下自己處于的水平。
新手:靠著指令清單可以解決問題,但是需要脫離情境
但是一旦遇到與清單不符的事情就沒轍,比如各種裝機(jī),配環(huán)境教程,一般新手遇到與教程不符合的場景就沒辦法了,所以這類教程一般需要詳細(xì)再詳細(xì)
高級新手:可以獨(dú)立嘗試完成任務(wù),但是很難靠自己完全解決,高級新手不想要全局思維
他們想要快速獲取信息。例如,當(dāng)學(xué)習(xí)一門新語言或API時,你可能會感覺到這點(diǎn),你發(fā)現(xiàn)自己會快速瀏覽文檔以尋找一個方法定義或參數(shù)列表。你不想在此刻尋根究底,或者重新溫習(xí)一遍基礎(chǔ)知識。
高級新手能夠根據(jù)過去的經(jīng)驗,逐步在正確的情境中采納建議,但比較吃力。同時,他們能夠開始形成一些總體原則,但不是“全貌”。他們沒有全面的理解,而且的確不想有。

上面這段話,完全匹配我我解決編程遇到問題時的情景……讀得我后背發(fā)涼,手心冒汗,要是我繼續(xù)以前的方法,估計我就算工作十年,也仍然是一年經(jīng)驗循環(huán)十年的高級新手
勝任者:能夠建立問題域的概念模型,有效地使用它們,并解決問題
我覺得一般每個組里面都有那么兩三個人很讓人很放心,幾乎沒有出過錯,每次問進(jìn)度都是順利完成那種……
精通者:需要全局思維。他們將圍繞這個技術(shù),尋找并想了解更大的概念框架
這種就屬于架構(gòu)師級別了,一個很大的需求,能夠拆解出對應(yīng)的技術(shù)棧,分配給到對應(yīng)的人處理,一般這種人都能當(dāng)上leader,或者是組里面的救火隊員,僅僅憑借聽你的問題描述就大致猜出問題所在
另外,精通者屬于靠近專家的水平,從勝任者到精通者是質(zhì)的飛躍,大部分人一生只能到勝任者
專家:靠直覺工作,多的就不說了,這不是光靠努力就能達(dá)到的,不在我們今天的討論范圍
不知道你屬于哪種水平,我現(xiàn)在,且預(yù)計未來兩年內(nèi),可能都還是處于高級新手的行列,因為坦白講,在我做需求時,我經(jīng)常會遇到靠我自己無法解決的問題與知識缺漏,沒有谷歌,我早失業(yè)了……
也不是說勝任者就不需要谷歌,只是也許不應(yīng)該像我現(xiàn)在這么頻繁。
關(guān)注情景,系統(tǒng)思維
我想大多數(shù)人都處于新手或者高級新手的行列,而高級新手要想達(dá)到勝任者,其實也是質(zhì)的跨越,因為有一個思維的鴻溝需要跨越,如果不是天賦異常,或者讀書,靠自己恐怕很難琢磨清楚
而現(xiàn)在,我就要告訴你,這個鴻溝是什么,以及去嘗試跨越他
我先問個問題,人是什么?

如果你沒有想過這個問題,可以先思考下,再繼續(xù)看
古人說:人是沒有羽毛的兩腿動物
然后有人就將雞拔掉了羽毛,說,這就是你定義的人
那么人到底是什么?
你會發(fā)現(xiàn),從這個思路上走,你需要說無數(shù)個限定詞,人是,
沒有羽毛,但有頭發(fā),但也可能沒有頭發(fā)
兩腿,但也可以一條腿或者沒有腿
雙眼,但也可以一只眼或者沒有眼
……
根本無法下定義,因為你犯了上面模型中說的“新手”錯誤,也就是
新手:靠著指令清單可以解決問題,但是需要脫離情境
人的狀態(tài)實在太多了,任何脫離情境的指令清單都無法全部囊括,只有勝任者的問題模型 和精通者的全局思維能夠描述
比如馬克思的:人是一切社會關(guān)系的總和
這句話,將人放入了社會當(dāng)中,人不是獨(dú)立的個體,而是系統(tǒng)特定功能的一部分
人的狀態(tài)是無窮的,系統(tǒng)的一部分組合也是無窮的,無窮就可以窮盡無窮,只需要找到系統(tǒng)中具有共性的一部分作為人的定義即可

同樣的道理
問題是什么?問題也不是獨(dú)立存在的實體,是系統(tǒng)內(nèi)部的元素交互產(chǎn)生的錯誤關(guān)系,我解決的不是某個獨(dú)立的問題,而是將系統(tǒng)內(nèi)部某些部分的錯誤關(guān)系,修正了
在解決問題時,除了看問題本身,還要看到背后的系統(tǒng)關(guān)系,抽絲剝繭,順藤摸瓜,不斷完善,即使前路漫漫,但這是從高級新手邁向勝任者的必經(jīng)之路,也是建立問題模型的必要考驗
這條路注定枯燥,所以需要有效的方法,每個人的方法各不相同,但是究其本質(zhì),需要滿足以下四點(diǎn)
(1)需要一個明確定義的任務(wù)。
(2)任務(wù)需要有適當(dāng)難度——有挑戰(zhàn)性但可行。
(3)任務(wù)環(huán)境可以提供大量反饋,以便于你采取行動。
(4)提供重復(fù)犯錯和糾正錯誤的機(jī)會。
比起更加枯燥的理論學(xué)習(xí),編程開發(fā),所見即所得,也許是最適合滿足上面要求的領(lǐng)域之一了,畢竟當(dāng)編譯代碼的時候,編譯器永遠(yuǎn)永遠(yuǎn)忠實的告訴你,你到底出了多少錯誤。
掘金作者:小松漫步

對啦對啦!另外的話為了幫助大家,輕松,高效學(xué)習(xí)C語言/C++,我給大家分享我收集的資源,從最零基礎(chǔ)開始的,幫助大家在學(xué)習(xí)C語言的道路上披荊斬棘!可以來我粉絲群領(lǐng)取哦~
微信公眾號:C語言編程學(xué)習(xí)基地
整理分享(多年學(xué)習(xí)的源碼、項目實戰(zhàn)視頻、項目筆記,基礎(chǔ)入門教程)最重要的是你可以在群里面交流提問編程問題哦!
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!大家也要把握住有限的時光,抓住成長的每一次機(jī)會哦~
編程學(xué)習(xí)書籍分享:

粉絲編程交流:
