原文作者:Jeff Atwood
“所有人都应该学习编程”(Everyone should learn programming)——这个“病毒”已经广为扩展,达到了失控的地步,以致于纽约市长竟然也在2012年郑重宣布他要学习编程了。他在Twitter上这么说:
他摆出的这种高姿态当然是为了获取纽约技术社区的选票,但如果市长先生真的在他的工作中玩起了JavaScript代码,那么纽约州的政治必定存在一些深层次的、糟糕透顶的问题。即使Bloomberg先生真的学了编程,他最终也会对Adam Vandenberg怀有歉意,因为我们将看到的是这个:
10 PRINT "I AM MAYOR"
20 GOTO 10
而Adam早在2012年1月就在Twitter上发布过这两行代码了:
值得庆幸的是,这种奇特事情(市长开始他的技术之旅)发生的概率为零,即使只是玩玩而已。原因很简单:纽约市长应该把他的时间花在纳税人出钱雇用他去做的事情上。从市长办公室的首页(http://www.nyc.gov)公布的信息来看,市长应该致力于学校的旷课问题、公共交通的改善、每一年的城市预算……真的要我把每一项都列出来吗?
有些人鼓吹:“编程是一项基本技能,我们应该像教阅读、写作和算术一样教孩子们学习编程。”我想问问那些人:你能解释一下吗——如果Michael Bloomberg先生某天早上一觉醒来突然变成了一名Java程序员,他如何能在日常工作中更好地领导这个美国最大的城市?在我看来是很显然的:拥有娴熟的阅读技能和写作技巧,还有至少中学水平的数学功底,这些对于做好政治家这份工作才是最基本的。说到这一点,也许任何工作都是这样。但是,理解变量、函数、指针、递归也有这么重要吗?那我就不明白了……
我写过一篇博文,题为“对于编程:要么热爱,要么离开”。不难看出,我本人是热爱编程的。我也相信,在特定的情境之下,编程对于某些人来说是很重要的。但是,很多技能都是这样子的啊。我不会敦促每个人都去学习编程;相比之下,我更愿意建议每个人都去学会怎么修水管。这听起来很荒谬,对不对?
“所有人都应该学习编程”这个倡议是不对的,不仅仅只是因为它错误地把编程与一些生活的基本技能(阅读、写作、算术)相提并论,其实还有很多其他的方面:
- 它认为,这个世界天生需要更多的代码,而且多多益善。然而,经过30年的程序员职业生涯,我发现其实并不是那么回事。你应该学习写代码吗?不要。我不赞成那样。你应该学会尽可能少地写代码。(参阅《高效能程序员的修炼》的第3.2节“大道至简”。)最好一点也别写!
- 它认为,编码就是目的。软件开发者倾向于成为软件行业里的“瘾君子”,他们认为自己的工作就是写代码。其实不然!他们的工作应该是解决问题。(参阅“你的团队能通过电梯测试吗?”)请不要因为写了多少行代码而沾沾自喜;真正的得意应该表现在你完成某个解决方案的时候。我们已经有太多太多沉迷于多写一行代码的“码农”啦!
- 它搞错了先后顺序,在问题出现之前先强调方法。在匆匆忙忙开始学习编程之前,请你先搞清楚真正的问题是什么。你真的碰到问题了吗?你能以一种别人能够理解的方式解释给他们听吗?你做过研究了吗?深入探索过可能的解决方案了吗?编程能解决那个问题吗?你确定吗?
- 它认为,有更多天真无邪的菜鸟(他们甚至不确定自己是否真的喜欢编程这个行当)加入程序员的世界肯定是一件好事。也许吧,如果你认同“一个糟糕的程序员每年可以轻易创造两个新的就业机会”这种说法……其实,甚至大部分自称为程序员的人都不会编程。因此,真的每个人都能学会编程吗?请原谅我对此的怀疑。
- 它暗示,在学习编程与以编程为业(有偿)之间只是隔着一层薄膜,很容易就能“渗透”过去。看看吧,一些新手程序员在参加了两个半月的训练营之后,就能得到平均年薪79000美元的工作。也许你也可以在24小时之内自己学会Perl!尽管编程是一个机会均等的领域,学历和证书在经验面前毫无用处——这些都是我真心喜欢的——但是,你仍须像我们一样花上一万小时的时间去学习。(注:Peter Norvig写过一篇经典的文章“Teach
Yourself Programming in TenYears”,意思是要花10年时间去自学编程。)
我觉得,我还是能够支持学一丁点儿编程的,但目的只是让你对代码有一个感性的认识,并且你可以了解在碰到什么问题时通过编程来解决是合适的。不过,即使没有经过特殊的专业训练,我也能一眼看出水管问题。普通大众(以及他们的政治领袖)只要对电脑和互联网的原理有了基本的理解,也许就已经能够很好地利用它们了。善于利用互联网的能力正在成为一种基本的生活技能,我们应该首先担心的是这个,而不是冒冒失失地开始学习编程。
请不要为了学编程而学编程!更别为了高工资而从事编程这个行当。我诚挚的建议是,我们应该把时间花在:
- 学习如何贪婪地做研究,并对我们周围的事物是如何工作的有个基本的理解;
- 学习如何有效地与别人沟通。
这些技能比单单学会编程要强得多,而且会让你在生活的方方面面受益。
分享到:
相关推荐
数控 编程指令代码 数控编程技巧 学习数控编程辅助
教你怎么有效的去学习编程`是微软公司里的一个中国代表人物主讲。
收录了很多实用的,好的编程学习网站,反正我觉得对我很有帮助,有意向的可以下载
汉语编程学习资料 工具 教材 实例 学习
如何学习Linux网络编程如何学习Linux网络编程如何学习Linux网络编程
实时系统编程学习 实时系统编程学习
java编程教学,代码学习java编程教程代码学习
这是一些学习网络编程和数据库编程的学习资料,希望大家能够喜欢!
Processing编程学习指南(第2版) Processing编程学习指南(第2版)
编程学习论坛手机客户端,一个很好的掌上交流平台,编程手机客户端
在wintc下学习c语言 这些代码可以提高你的编程的基本功夫
Csharp编程的学习,很好的实践用例!
很好的关于OpenGL的编程的入门学习资料,共十七章140余页,每个章节的代码都是经过原作者调试通过的,非常适合初学者,可以在短时间内熟悉OpenGL编程(声明:非本人原创,为网络收集后整理)。
Java编程入门学习
匠心精作C++从0到1入门编程-学习编程不再难视频链接https://www.bilibili.com/video/BV1Hb411Y7E5?spm_id_from=333.999.0.0
学习csharp编程 高级篇;学习csharp编程 高级篇;;;
学习少儿编程的好处
挺全的,供学习编程的同仁一起交流,一起学习,一起进步!!!
怎么学习编程编程(五个方案).doc 介绍了5个学习编程的方案
《Linux C编程一站式学习》适合做零基础的初学者学习c语言的第一本教材,帮助读者打下牢固的基础。