程序员的灯下黑:重知识轻技术(转)
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
程序員的燈下黑:重知識輕技術(shù)(轉(zhuǎn))
電視《雍正王朝》講了這么一個故事:大將軍年羹堯奉命到青海平叛,清軍因路途遙遠(yuǎn),軍耗巨大,因此力求速戰(zhàn)速決。但叛軍避開鋒芒,東躲西藏,年羹堯沒有辦法找到叛軍決戰(zhàn)。這時,朝廷內(nèi)外壓力越來越大,年羹堯陷入困境。這是一位謀士對年說:我知道叛軍在那里。年大喜。這位謀士指出,敵人就在不遠(yuǎn)處的一座皇封寺廟里。年不信,謀士不慌不忙地說:這就是燈下黑,離自己越近就越不可能意識到,但卻是最可能的地方。果然,大軍一出,大獲全勝。
我想講一些關(guān)于程序員對自身認(rèn)識的故事,這些故事都和燈下黑有關(guān)。只要正確認(rèn)識自己,道理非常簡單,但是,到處都可以看到燈下黑的故事。
某程序員,有一天接到一個任務(wù):公司的有一個產(chǎn)品的文件太大了,要求采用壓縮算法,減少尺寸,最好能壓縮20%。
程序員興高采烈地接受了任務(wù):以前沒玩過壓縮算法,這下可以學(xué)習(xí)新東西了!研究了幾個月后,他覺得差不多了,就交給了項目經(jīng)理。項目經(jīng)理正等著呢,高興壞了,拿著演示文件就去找產(chǎn)品經(jīng)理。產(chǎn)品經(jīng)理開始挺高興,看完臉就拉下來了。打開文件,把所有的文件尺寸一算,很淡淡的說:“才壓縮了10%,有什么用啊!”
程序員愣住了,“不會吧!我看過的,壓縮了 20%!”
產(chǎn)品經(jīng)理指著文件列表說:“你看,某文件是壓縮了20%,可你的壓縮算法增加了一個動態(tài)庫文件,尺寸還不小,總共加起來,不就只減少了10%嗎?”
各位看官,這是不是軟件公司里經(jīng)常發(fā)生的情形?
這種失敗的成因當(dāng)然是復(fù)雜的,有溝通管理方面的問題,也有程序員能力的問題。我今天想要說的是程序員認(rèn)識方面的問題。
繼續(xù)故事:
項目經(jīng)理很沒面子,回去就和程序員找原因。項目經(jīng)理是老程序員了,直話直說;終于弄清楚的事情的本質(zhì):
第一,這位程序員一個的時間讀了很多關(guān)于壓縮算法的書,會了不少算法。可是從來沒比較過算法的優(yōu)劣。這老兄覺得研究算法很有趣,樂此不彼,寫了好幾個實現(xiàn)。
第二,這位老兄在最后幾天才想起來20%的目標(biāo),也沒太放在心上,看看差不多就拿出來了。
這是典型的程序員的認(rèn)識問題,重知識而輕技術(shù)。
先從是么是知識,什么是技術(shù)說起。
知識就是知道,你知道了某件事是怎么回事,就是有了知識。
技術(shù)就是你能做出來,做得好叫技術(shù)好,做的不好叫技術(shù)差。
怎么寫操作系統(tǒng)?看完操作系統(tǒng)原理,再苦讀完源代碼,這叫有知識了。如果有本事把任務(wù)調(diào)度、內(nèi)存管理、IO什么的都寫出來,還能寫得穩(wěn)定,快速,可擴展,那是有技術(shù)。有知識和有技術(shù)可差遠(yuǎn)了。早年我在工廠實習(xí),要挫一個圓孔,拿著內(nèi)銼刀干了一天,只挫了一個橢圓;師父來了,三分鐘,比沖床沖出來還圓!我是個好學(xué)徒,使用銼刀的知識全記住的,可以寫一篇內(nèi)圓挫使用大全。知識是有了,可沒這個技術(shù)。
程序員也一樣。什么C++,Java,.net,什么STL,Struts,Spring,就是門門都滿分,這也就是有知識。算不算技術(shù)好呢?差遠(yuǎn)了。軟件工程師界就專門出這種不會寫程序的“高手”。我遇到一位老兄,精通Java知識,從虛擬機到各類框架,概念,無所不同,談起Java來,沒人說的過他。可是他的代碼永遠(yuǎn)Bug最多,而且都是最簡單的Bug,什么邏輯不對啊,功能沒實現(xiàn)啊,UI不對啊。他的領(lǐng)導(dǎo)只有又好氣又好笑。問下去,發(fā)現(xiàn)這老兄寫了幾個程序文件以后,就不感興趣了,因為所用的技術(shù)沒什么不知道的了。所以馬馬虎虎交差。
說到底,寫程序是個手藝活,就和古代的匠人一樣,是要講工藝的。比如一個玉匠,能打造栩栩如生的玉孔雀,那得打的好!要是一個玉匠說,這些手藝我都知道了,重復(fù)做東西沒勁,將就著給客人做出來吧!那他還不吃西北風(fēng)!
可是,十幾年來,程序員界有的是這樣的人,還引發(fā)大規(guī)模爭論。象什么C++和Java之爭啦,J2EE和.Net之爭啦。你看里邊的帖子,不停有人賭這個陣營那個陣營,有發(fā)誓一輩子做C++的,有發(fā)誓打倒.Net。我還奇怪了,專門沒人效忠機器碼的,那不是最難最有“學(xué)問”嗎?這都是在爭論什么知識最重要。可是啊,很少有人談?wù)勗趺醋龊卯a(chǎn)品的。
現(xiàn)在程序員最大的問題就是太看重知識,拼命追逐新玩意,而忽略了身邊的夠得著東西。好,什么C++,Window API都知道了,東西也弄出來了,可是三天兩頭崩潰,還找不到原因?為什么?有沒有看看代碼,看看是不是某函數(shù)寫了2000行,自己都看不懂?是不是全局變量亂用?是不是沒考慮前后兼容性?沒考慮冗余和故障恢復(fù)?
末了再回到開頭的故事:
項目經(jīng)理回去和程序員再重新設(shè)計,又多花了一個月,終于達(dá)到了目標(biāo)。但因為這個部分是一個大項目的一部分,整個項目不得不延遲了一個月。
年底考評的時候,項目經(jīng)理給程序員打了一個及格;程序員不服,告到總經(jīng)理那里。總經(jīng)理說:“你知足吧,給你打及格已經(jīng)看在你干的很辛苦的份上了,因為你沒有按時完成,整個項目延遲了一個月,這帳都沒找你算呢。”程序員頹然。
轉(zhuǎn)載于:https://my.oschina.net/macwe/blog/1586237
總結(jié)
以上是生活随笔為你收集整理的程序员的灯下黑:重知识轻技术(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SignalR--Web客户端
- 下一篇: 关于docker环境下mysql的使用相