編程能力的四種境界

人類心理學研究中的一個基礎支撐科目就是分析人的潛意識和意識。 弗洛伊德是最早的一位能夠清楚的認定和描述我們的心理活動“領域”的人。 在他這著名的一生的早期,他就指出我們的意識里分“潛意識”,“前意識”,“意識”。

如 果我們想能清楚他們分別跟我們的思想、感覺、認知、判斷和動機(這這些在我們每天的生活,職業生活中都是關鍵因素)有什么關聯,我們可以把我們自己描述成 一個冰山。 冰山的尖端,唯一能從水面看到的一部分,可以當作是我們的的意識。 它是有邏輯、有組織的,我們可以控制它,但這部分很小。 這龐大的水下的部分是我們的意識不到的。 它們是無組織、無邏輯、無關聯的,但它們取能決定我們的行為特征。

現代心理學上一直試圖通過觀察一個人能夠在這個冰山上打多深的孔來分析一個人能夠什么程度的掌握一種技能。 人們把一個人能夠到達的能力描述成四個階段。 這篇文章里,我將試圖把這種分類應用的我們每天都會應用的技能上,它就是編程。

階段一:無意識,無能力

約 翰是一個年輕的網站開發者。 他以前是一個法律科的學生,但是他認為他的錢途不在這方面,所以他眼睛一轉,做了轉行的決定。 他曾經幫他的朋友修過計算機,而且很成功,所以他認為這方面應該都很容易。 他很快找的了一些能夠讓他學習這些工作的地方(當然,都是靠近他家的地方)。 六個月后,他開始聲稱自己是個網站專家了,他的簡歷上已經列舉了不少編程語言、應用程序,以及開發平臺。

約 翰,實際上,是一個冷酷的“拷貝/粘貼”者。 他以為能夠成功的顯示一個windows提示框,就表示對Javascript已經掌握了。 PHP? 簡單:他成功的安裝了Wordpress。 Linux? 他從LiveCD上啟動了Ubuntu系統,他能夠搭建一個Apache負載均衡集群服務器。 他的意識告訴他,他已經無所不知了。

問 題就在于,約翰沒有意識到他可以學到更多的東西,所以他就簡單的停止學習了。 他一直處在一個氣泡中,他經常訪問的在線論壇和郵件列表里有很多人都非常客氣的告訴他,他的問題在于他膚淺的知識,但沒有人能捅破他的氣泡。 而且更悲哀的是,他在論壇里的能力值比你我加起來都高。

約翰是無意識的無能力。

階段二:有意識的無能力

馬 克是個數學老師。 他在一個小鎮的大學里工作,他希望他的大學里能夠擁至少是五倍于現有數量的資料庫。 他知道在科技領域方面他的大學先對于其他研究機構落后很多,所以他決定自己動手去做這個工作。 他想建立一個在線平臺,能在社團里共享他們的課程。

馬克是天生的邏輯型的思維。 他知道為了實現這個東西,他需要去做研究,搜集信息。 他的搜索從維基百科開始,但最終在大量的瀏覽閱讀后他明白其實世界上已經有不少團隊對他的這種問題提供了開源方案。

他 從那些工程中選擇了一個最能滿足他的需求的一個。 他開始著手閱讀在它的網站上找到的文檔和手冊,最后他把源程序下載下來。 他的興奮狀態逐步退去,因為他看到了’數據庫連接錯誤’。 他試了又試,不至三次的檢查他的每一步驟,還是不成功。 馬克并不惱怒,因為他知道自己在這個領域并不是專家。

他開始轉向它郵件列表平臺,在里面,他用他所知道的(其實很少)最精確的語言描述了他的問題。 他提醒每個人,他并不清楚他所做的這個東西,所以,他希望能得到更多的文檔去閱讀,或人們給他提供這方面的提示。 他不需要等待很久就能得到解決方案,因為他采取了正確的方法。

馬克是有意識的無能力

階段三:有意識的有能力

自 從阿德拿起他的第一本HTML書至今已經有兩年了。 很顯然這是一條不歸路,對于阿德來說,每天思考的問題都是如何去提高自己喜愛的這個專業。 在他拿起第一本書幾個月后他得到了他第一個作為自由工作者的身份開發一個網站的工作,他投入了極大的熱情,不管這個工作的薪酬有多低,這個工作有多基礎 (甚至是對于他的水平)。

他深信一點:最好的學習的方式就是堅持不懈,屢戰屢敗,屢敗屢戰。 他經常去研究如何以最好的方式執行一個功能,因為他知道最好的代碼不是第一次就能獲得的。 他必須去優化代碼,他一遍又一遍的審查。 他一次又一次的修正。

之 后,他又給他自己寫了一個大概有30到40行的程序。 幾天之后,他忍不住感到失望,因為他在上網時發現了一段更省事的、而且更簡潔的程序,代碼行只有他的一半。 他渴望知道何時他才能輕松的寫出如此高質量的代碼。 然而,經過一段思考之后,他開始分析他自己的代碼。 他知道必須去重寫這些代碼,否則睡覺都不會安穩。 他不愿意去拷貝粘貼它們。

阿德正走在成為一個優秀的專家的路上,但他不會給自己加上這個稱號,他愿意去等。

阿德是有意識的有能力。

階段四:無意識的有能力

這是編程水平的終極階段。 它不僅僅是知識積累的結果,更是一系列的邏輯規則在數年里慢慢的刻印到一個人的腦海里的結果。

我們面對這樣的一個人時不得不由衷的佩服他對如此復雜的問題能更如此輕松的應對。 這種編程者看起來就像是能夠嗅出問題的解決方案,而不是思考出的。

優化的編寫,可維護的、安全性的程序,應用各種設計模式,使用正確的開發工具組合,這些會自動的在他的工作中體現出來。 這種人能夠輕松的使用多種語言在多種操作系統平臺上工作。

結束語

經過閱讀上面的例子,我希望你能夠跟我一樣信服:心理學的這種分類模式用在我們這個特定的專業領域是有效的。

值得一提的是,一些作者提出第五中階段:成熟的有能力,定義為有能力去教育和傳承他所學的、甚至是還未意識到的知識。 我們可以從一些才智超凡的人哪里看到這些特征,他們可以教學和講解(甚至在大廳廣眾),這些很顯然是后天培養的技能。

本文轉自:http://blog.csdn.net/poem_qianmo/article/details/8644750

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/247178.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/247178.shtml
英文地址,請注明出處:http://en.pswp.cn/news/247178.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ファイルアップロード関連のjQueryプラグイン10攻略

ファイルアップロード関連のjQueryプラグイン10ファイルアップロードといってもSWFを使ったりAJAXを使ったりと方法が色々あって、いろんなやり方ができるjQueryプラグインです。望みの挙動に近いものを選んでカスタマイズすれば作りたいものが最速で作れ…

HTTP報文(轉)

HTTP報文http://www.cnblogs.com/kissdodog/archive/2013/04/01/2993228.html之前寫過一篇HTML報文,但是感覺寫完之后還是不懂,最近終于有時間開始看《HTTP權威指南》,看完之后覺得還是比之前的理解更加深入了,提取HTTP報文出來做…

C#基礎-應用程序域

文章導讀同一臺計算上的應用程序是通過進程來隔離的,每個應用程序都是加載到不同的進程中,從而達到應用程序的互不影響。操作系統【OS】通過進程控制塊【PCB】感知進程的存在,分析【PCB】的數據結構可以發現,【PCB】維護進程運行的…

Java生鮮電商平臺-微服務入門與服務的拆分架構實戰

Java生鮮電商平臺-微服務入門與服務的拆分架構實戰 剛開始進入軟件行業時還是單體應用的時代,前后端分離的概念都還沒普及,開發的時候需要花大量的時間在“強大”的JSP上面,那時候SOA已經算是新技術了。現在,微服務已經大行其道&a…

詳解MTK系統中字符轉換問題

詳解MTK系統中字符轉換問題 2011-09-05 19:02 佚名 互聯網 字號:T | TMTK系統中字符轉換問題是本文要介紹的內容,主要是來了解并學習MTK中一些小案例的應用,具體內容來看本文詳解。 AD:2014WOT全球軟件技術峰會北京站 課程視頻發布…

Java生鮮電商平臺-微服務架構概述

Java生鮮電商平臺-微服務架構概述 單體架構存在的問題 在傳統的軟件技術架構系統中,基本上將業務功能集中在單一應用內,或者是單一進程中。盡管現代化的軟件架構理論以及設計原則已推廣多年,但實際技術衍化的速度遲緩并且變革動力不足。 其中…

Jensen不等式及其證明

? 詹森不等式以丹麥數學家約翰詹森(JohanJensen)命名。它給出積分的凸函數值和凸函數的積分值間的關系。 關于凸函數: if (-f)是凸函數(convex),則f是凹的(concave…

ios自帶NSURLConnection下載文件

//同步下載,同步請求的主要代碼如下 - (IBAction)downLoad:(id)sender { NSString *urlAsString"http://7jpnsh.com1.z0.glb.clouddn.com/TravelDemo.plist";//文件地址 NSURL *url[NSURL URLWithString:urlAsString]; NSURLRequest *request[NSURLRequest requestWi…

國外程序員整理的機器學習資源大全

本列表選編了一些機器學習領域牛B的框架、庫以及軟件(按編程語言排序)。 C 計算機視覺 CCV —基于C語言/提供緩存/核心的機器視覺庫,新穎的機器視覺庫 OpenCV—它提供C, C, Python, Java 以及 MATLAB接口,并支持Windo…

五款幫助創業者迅速熟悉互聯網創業的在線學習工具

相信很多有志青年都想借助互聯網開拓自己的事業,可是經常面臨一個很現實的問題——缺乏一定的專業知識和技能。沒關系,互聯網中的豐富教育資源就可以讓你迅速地跨越這一障礙,熟悉與創業相關的運營、管理、融資等操作技巧。下面介紹的五個在線…

C++ 中復雜的聲明

1、方法也是有類型的,方法的類型由返回類型和形參表決定。比如int F (int)的類型就是去掉方法名,int (int)。 2、對于方法類型,在返回類型和形參表之間,加上一個名稱F,就表示一個特定的方法F。 3、思考,如果…

caffe 下測試 MNIST數據

詳細說明可參考網頁:http://blog.csdn.net/wangchuansnnu/article/details/44341753http://blog.sina.com.cn/s/blog_49ea41a20102w4uu.htmlhttp://www.cnblogs.com/yymn/p/4553671.html caffe 下 mnist 進行實驗: MNIST,一個經典的手寫數字庫…

Java生鮮電商平臺-秒殺系統微服務架構設計與源碼解析實戰

Java生鮮電商平臺-秒殺系統微服務架構設計與源碼解析實戰 Java生鮮電商平臺- 什么是秒殺 通俗一點講就是網絡商家為促銷等目的組織的網上限時搶購活動 比如說京東秒殺,就是一種定時定量秒殺,在規定的時間內,無論商品是否秒殺完畢&#xff0c…

LInux 下安裝 python notebook 及指向路徑,運行計時,炫酷的深藍午夜主題,本地登陸遠程服務器

1. 安裝 pip工具 sudo apt-get install pyton-pip 2. 安裝ipython及其依賴包 sudo apt-get install ipython ipython-notebook 3. 安裝可選的附加工具(需要時間較長) sudo apt-get install python-matplotlib python-scipy python-pandas python-sympy python-nose 4. 測試i…

對TypeScript進行研究

1.npm install -g typescript 在編輯器,將下面的代碼輸入到greeter.ts文件里: function greeter(person) {return "Hello, " person; } let user "Jane User"; document.body.innerHTML greeter(user); 我們使用了.ts擴展名&…

caffe 提取特征并可視化(已測試可執行)及在線可視化

網絡結構在線可視化工具 http://ethereon.github.io/netscope/#/editor 參考主頁: caffe 可視化的資料可在百度云盤下載 鏈接: http://pan.baidu.com/s/1jIRJ6mU 提取密碼:xehi http://cs.stanford.edu/people/karpathy/cnnembed/ http://lijianch…

ncnn:提取所有層特征值

官方代碼托管地址&#xff1a;https://github.com/Tencent/ncnn 在Extractor類中添加以下方法&#xff1a; int Extractor::extract_all_blobs() {for (int blob_index 0; blob_index < blob_mats.size(); blob_index){Mat outMat;extract(blob_index, outMat);// write to…

Caffe + Ubuntu 15.04/16.04 + CUDA 7.5/8.0 在服務器上安裝配置及卸載重新安裝(已測試可執行)

本文參考如下: caffe 安裝所需的所有資源可在百度網盤下載 鏈接: http://pan.baidu.com/s/1jIRJ6mU 提取密碼&#xff1a;xehi 在服務器上為每個子用戶拷貝caffe 使用 Linux探索之旅 | 第一部分第四課&#xff1a;磁盤分區完成Ubuntu安裝 Ubuntu16.04 1080Ti深度學習環境配…

ASP.NET MVC Action向視圖傳值之匿名類型

在使用ASP.NET MVC過程中想必大家都有遇到過一個問題就是我們的Action如何向視圖傳遞匿名類型的值呢&#xff0c;如果不做特殊處理則無法實現。 接下來我們來看一個示例&#xff1a; 在我們的控制中&#xff1a; using System.Collections.Generic; using System.Web.Mvc;names…

2015倫敦深度學習峰會筆記(轉載)

摘要&#xff1a;在倫敦舉行的第三屆深度學習峰會由RE.WORK主辦&#xff0c;匯集了從工業領域到學術領域不同背景的專業人士&#xff0c;本文是該峰會第一天的筆記。包括Koray Kavukcuoglu、Sander Dieleman等知名深度學習專家分享了自己的經驗。上周&#xff0c;我有機會參加在…