有時候同學(xué)們把程序員看的太神,其實他們并比大家在編程上強(qiáng)出多少。只是他們工作時間長,一部分經(jīng)驗上的差距確實是有的。但要找問題,找錯誤,他們也只能依靠“調(diào)試”來解決,沒有其他辦法。
如果認(rèn)真的講,初級開發(fā)者和一個優(yōu)秀的開發(fā)者之間的唯一差距就在于優(yōu)秀的開發(fā)者會利用各種工具分析解決問題,而現(xiàn)在大多數(shù)的同學(xué)還沒有具備這個能力???。。。這恰恰是編程最重要的能力,對是“最”重要,沒有之一。
我記得我在上高中的時候,那時候Web剛剛興起,QQ空間很流行。如果你想讓你的QQ空變的好看,那么在當(dāng)時有兩種選擇:
1.購買黃鉆使用騰訊的模板。
2.自己去寫一些腳本通過QQ空間的模塊加載來實現(xiàn)裝飾空間。
所以我當(dāng)時就對HTML和JS特別的有興趣。可當(dāng)時網(wǎng)上的資源并不豐富,教程極少,知識非常的分散,更不要說有現(xiàn)在這樣成套的付費的教程給你學(xué)習(xí)。往往要學(xué)習(xí)一個知識點,你只能在網(wǎng)上去搜集一些零散的資料,再通過自己的思考來學(xué)習(xí)。這個學(xué)習(xí)過程,毫無疑問會遇到無數(shù)的問題。
但遺憾的是,你沒有人求助。我也曾嘗試著在CSDN等社區(qū)發(fā)帖,但說實話這個等待回帖和回帖的質(zhì)量實在是讓你失望透頂。漸漸的,我養(yǎng)成了自己獨立思考獨立解決問題的習(xí)慣,這是一種無奈,但這種習(xí)慣所帶來的解決問題的能力:真的是,受益終身。
再回顧這幾年的編程經(jīng)歷,認(rèn)真的講,我沒有問過其他人什么問題。有時候不是別人不告訴你,而是我覺得編程者有時候要有一種霸氣,你會的,我也能通過自己的研究來學(xué)會。這樣的習(xí)慣一旦養(yǎng)成了,你會發(fā)現(xiàn)自己解決問題研究方案的成就感,是別人告訴你所不能比擬的。我追求的就是解決問題后的那種成就感,否則編程有什么樂趣呢?
面向?qū)ο笾匾獑??基礎(chǔ)語法重要嗎?編程思維重要嗎?重要,但遠(yuǎn)不及培養(yǎng)自己分析和解決問題的能力更加重要。
有些同學(xué)說,我不知道怎么培養(yǎng)這種能力。這個能力的培養(yǎng)說難也難,說簡單也簡單,但無外乎2點:
掌握必要的調(diào)試工具
憋著,靜下心來。
第一點就不解釋了,調(diào)試是必須要掌握的。關(guān)于第二點,我統(tǒng)計了下,提問區(qū)里90%的問題是代碼疏忽了,沒有按照代碼規(guī)范里的來寫;9%是語法錯誤;剩下的1%才是真正的問題。
所以,只要你仔細(xì),認(rèn)真,問題不可能解決不了。寫代碼的每一步都要非常清晰,我從來不跳代碼,每一步的運行結(jié)果都會展示出來。即使真的有問題,那也是深層次的BUG,不可能讓代碼報錯或者運行不起來。如果有問題,我會第一時間修正,并通知大家。
但我看到很多問題,我其實挺著急的,著急的不是我無法回答,而是著急很多同學(xué)沒有找到入門編程的正確路徑。我從來不把會某種語言定義成“會編程”,只有你會解決問題,學(xué)會分析問題,才算是入門編程。
別人幫你解決的問題,永遠(yuǎn)沒有自己解決帶來的收益高。你解決了這個問題,但丟失的卻是一次鍛煉自己思維能力機(jī)會。
學(xué)習(xí)一門語言是暫時的,學(xué)會一項技術(shù)也不是永久的,當(dāng)年dephi的隕落,C#的崛起就是很好的證明(有興趣的同學(xué)可以看一下《Borland傳奇》,看看當(dāng)年Borland是多么牛X的一家公司)。這個時代技術(shù)更迭的迅猛,早已是人盡皆知,你永遠(yuǎn)有學(xué)不完的知識。
那么對于編程,什么是永恒?我的答案依然是 解決問題和分析問題的能力。
這種能力甚至可以影響到你對于人生的思考和選擇,你說,這個能力重不重要?