别为了学编程而学编程
“所有人都應(yīng)該學(xué)習(xí)編程”(Everyone should learn programming)——這個(gè)“病毒”已經(jīng)廣為擴(kuò)展,達(dá)到了失控的地步,以致于紐約市長(zhǎng)竟然也在2012年鄭重宣布他要學(xué)習(xí)編程了。他在Twitter上這么說(shuō):
他擺出的這種高姿態(tài)當(dāng)然是為了獲取紐約技術(shù)社區(qū)的選票,但如果市長(zhǎng)先生真的在他的工作中玩起了JavaScript代碼,那么紐約州的政治必定存在一些深層次的、糟糕透頂?shù)膯?wèn)題。即使Bloomberg先生真的學(xué)了編程,他最終也會(huì)對(duì)Adam Vandenberg懷有歉意,因?yàn)槲覀儗⒖吹降氖沁@個(gè):
10 PRINT "I AM MAYOR"
20 GOTO 10
而Adam早在2012年1月就在Twitter上發(fā)布過(guò)這兩行代碼了:
值得慶幸的是,這種奇特事情(市長(zhǎng)開(kāi)始他的技術(shù)之旅)發(fā)生的概率為零,即使只是玩玩而已。原因很簡(jiǎn)單:紐約市長(zhǎng)應(yīng)該把他的時(shí)間花在納稅人出錢(qián)雇用他去做的事情上。從市長(zhǎng)辦公室的首頁(yè)(http://www.nyc.gov)公布的信息來(lái)看,市長(zhǎng)應(yīng)該致力于學(xué)校的曠課問(wèn)題、公共交通的改善、每一年的城市預(yù)算……真的要我把每一項(xiàng)都列出來(lái)嗎?
有些人鼓吹:“編程是一項(xiàng)基本技能,我們應(yīng)該像教閱讀、寫(xiě)作和算術(shù)一樣教孩子們學(xué)習(xí)編程。”我想問(wèn)問(wèn)那些人:你能解釋一下嗎——如果Michael Bloomberg先生某天早上一覺(jué)醒來(lái)突然變成了一名Java程序員,他如何能在日常工作中更好地領(lǐng)導(dǎo)這個(gè)美國(guó)最大的城市?在我看來(lái)是很顯然的:擁有嫻熟的閱讀技能和寫(xiě)作技巧,還有至少中學(xué)水平的數(shù)學(xué)功底,這些對(duì)于做好政治家這份工作才是最基本的。說(shuō)到這一點(diǎn),也許任何工作都是這樣。但是,理解變量、函數(shù)、指針、遞歸也有這么重要嗎?那我就不明白了……
我寫(xiě)過(guò)一篇博文,題為“對(duì)于編程:要么熱愛(ài),要么離開(kāi)”。不難看出,我本人是熱愛(ài)編程的。我也相信,在特定的情境之下,編程對(duì)于某些人來(lái)說(shuō)是很重要的。但是,很多技能都是這樣子的啊。我不會(huì)敦促每個(gè)人都去學(xué)習(xí)編程;相比之下,我更愿意建議每個(gè)人都去學(xué)會(huì)怎么修水管。這聽(tīng)起來(lái)很荒謬,對(duì)不對(duì)?
“所有人都應(yīng)該學(xué)習(xí)編程”這個(gè)倡議是不對(duì)的,不僅僅只是因?yàn)樗e(cuò)誤地把編程與一些生活的基本技能(閱讀、寫(xiě)作、算術(shù))相提并論,其實(shí)還有很多其他的方面:
- 它認(rèn)為,這個(gè)世界天生需要更多的代碼,而且多多益善。然而,經(jīng)過(guò)30年的程序員職業(yè)生涯,我發(fā)現(xiàn)其實(shí)并不是那么回事。你應(yīng)該學(xué)習(xí)寫(xiě)代碼嗎?不要。我不贊成那樣。你應(yīng)該學(xué)會(huì)盡可能少地寫(xiě)代碼。(參閱《高效能程序員的修煉》的第3.2節(jié)“大道至簡(jiǎn)”。)最好一點(diǎn)也別寫(xiě)!
- 它認(rèn)為,編碼就是目的。軟件開(kāi)發(fā)者傾向于成為軟件行業(yè)里的“癮君子”,他們認(rèn)為自己的工作就是寫(xiě)代碼。其實(shí)不然!他們的工作應(yīng)該是解決問(wèn)題。(參閱“你的團(tuán)隊(duì)能通過(guò)電梯測(cè)試嗎?”)請(qǐng)不要因?yàn)閷?xiě)了多少行代碼而沾沾自喜;真正的得意應(yīng)該表現(xiàn)在你完成某個(gè)解決方案的時(shí)候。我們已經(jīng)有太多太多沉迷于多寫(xiě)一行代碼的“碼農(nóng)”啦!
- 它搞錯(cuò)了先后順序,在問(wèn)題出現(xiàn)之前先強(qiáng)調(diào)方法。在匆匆忙忙開(kāi)始學(xué)習(xí)編程之前,請(qǐng)你先搞清楚真正的問(wèn)題是什么。你真的碰到問(wèn)題了嗎?你能以一種別人能夠理解的方式解釋給他們聽(tīng)嗎?你做過(guò)研究了嗎?深入探索過(guò)可能的解決方案了嗎?編程能解決那個(gè)問(wèn)題嗎?你確定嗎?
- 它認(rèn)為,有更多天真無(wú)邪的菜鳥(niǎo)(他們甚至不確定自己是否真的喜歡編程這個(gè)行當(dāng))加入程序員的世界肯定是一件好事。也許吧,如果你認(rèn)同“一個(gè)糟糕的程序員每年可以輕易創(chuàng)造兩個(gè)新的就業(yè)機(jī)會(huì)”這種說(shuō)法……其實(shí),甚至大部分自稱(chēng)為程序員的人都不會(huì)編程。因此,真的每個(gè)人都能學(xué)會(huì)編程嗎?請(qǐng)?jiān)徫覍?duì)此的懷疑。
- 它暗示,在學(xué)習(xí)編程與以編程為業(yè)(有償)之間只是隔著一層薄膜,很容易就能“滲透”過(guò)去。看看吧,一些新手程序員在參加了兩個(gè)半月的訓(xùn)練營(yíng)之后,就能得到平均年薪79000美元的工作。也許你也可以在24小時(shí)之內(nèi)自己學(xué)會(huì)Perl!盡管編程是一個(gè)機(jī)會(huì)均等的領(lǐng)域,學(xué)歷和證書(shū)在經(jīng)驗(yàn)面前毫無(wú)用處——這些都是我真心喜歡的——但是,你仍須像我們一樣花上一萬(wàn)小時(shí)的時(shí)間去學(xué)習(xí)。(注:Peter Norvig寫(xiě)過(guò)一篇經(jīng)典的文章“Teach Yourself Programming in TenYears”,意思是要花10年時(shí)間去自學(xué)編程。)
我覺(jué)得,我還是能夠支持學(xué)一丁點(diǎn)兒編程的,但目的只是讓你對(duì)代碼有一個(gè)感性的認(rèn)識(shí),并且你可以了解在碰到什么問(wèn)題時(shí)通過(guò)編程來(lái)解決是合適的。不過(guò),即使沒(méi)有經(jīng)過(guò)特殊的專(zhuān)業(yè)訓(xùn)練,我也能一眼看出水管問(wèn)題。普通大眾(以及他們的政治領(lǐng)袖)只要對(duì)電腦和互聯(lián)網(wǎng)的原理有了基本的理解,也許就已經(jīng)能夠很好地利用它們了。善于利用互聯(lián)網(wǎng)的能力正在成為一種基本的生活技能,我們應(yīng)該首先擔(dān)心的是這個(gè),而不是冒冒失失地開(kāi)始學(xué)習(xí)編程。
請(qǐng)不要為了學(xué)編程而學(xué)編程!更別為了高工資而從事編程這個(gè)行當(dāng)。我誠(chéng)摯的建議是,我們應(yīng)該把時(shí)間花在:
- 學(xué)習(xí)如何貪婪地做研究,并對(duì)我們周?chē)氖挛锸侨绾喂ぷ鞯挠袀€(gè)基本的理解;
- 學(xué)習(xí)如何有效地與別人溝通。
這些技能比單單學(xué)會(huì)編程要強(qiáng)得多,而且會(huì)讓你在生活的方方面面受益。
from:?http://blog.csdn.net/happydeer/article/details/18134919
總結(jié)
以上是生活随笔為你收集整理的别为了学编程而学编程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: AVI文件格式
- 下一篇: 程序员要学会读源代码