结束程序员对编程的恨

用笔者的经历现身说法,编程的确是一件需要极大、极大耐心的活儿。加上使用的是Emacs编辑器(谢谢老顾的建议和他的耐心:D),会犯更多的小错误,解决起来也更加令人烦恼。耐心很重要。对于第五条,也比较赞同,笔者已经习惯了遇到错误去百度一下错误代码,同时会浏览一下相关的错误例子以及原因,学习很快。最后一条同样重要,周围的很多同学,遇到一点小问题就跑到论坛问老师,个人很反感。我想:在现在这个阶段,只要你想,应该没有你不可能独立解决的问题。

每个人刚开始的编程技术都不理想,所以我们决定列出一张清单,写上大家都能接受的理由,还有提高编程能力的建议。

1. 编程适合所有人吗?

开门见山地说,编程并不适合所有人。它比较适合那些有耐心去解决难题,改变生活的人。

我们就以一个16岁的孩子克里斯蒂安·欧文斯(Christian Owens)为例子吧,他追随他的英雄史蒂夫·乔布斯,从事自己喜欢的工作。他从7岁开始接触计算机。3年后,他获得一台Mac电脑,随后开始自学网页设 计。2008年,他建立了自己的公司。 这是一个不少人都知道的小网站Mac Bundle Box。该网站符合苹果的设计指南和风格,在两年的时间中赚到了人生的第一个100万美元。

他成功的唯一要素,就在于他做什么事都有耐心。所以,如果你发觉自己缺乏某些激励因素,或许那就是你无法取得成功的原因了。我继续研究并最终发现,金钱推动着很多人勇攀高峰。

克里斯蒂安·欧文斯

2. 编程是一项需要花时间才能掌握的技术

像其他东西一样,编程本身就是一门艺术。是的,你最初可能会遇到麻烦,但是如果你坚持下去,你的编程技术将会得到提高,你会成为一个干劲十足的程序 员。很多人被书呆子、白痴、天才儿童,甚至是编程本身吓到了。不用害怕,无视他们,把精力集中在于你的技术有关的事情上面。我在大学刚开始学习计算机时并 不是很了解编程;在我认识编程之前,我是一名敢于提出问题并面对挑战的程序员。

3. 他们的观点错误

当人们开始抱怨不懂得传授技术的专家、助教、蹩脚的编译器、集成开发环境,甚至操作系统的时候,我已经习以为常了。只要你不断的抱怨,你的编程技术只会原地踏步。所以,请用积极的态度面对问题吧。

你知道“梦幻游乐园”游戏几乎都是用汇编语言写程序吗?想想看吧。有志者,事竟成。

4.我一点都不理解抽象概念

编程需要你创造性思考(think outside the box)。当你是初学者时,你会遇到算法、数据结构、协议,还有一大堆让你摸不着头脑的东西。

慢慢来,无论开始学习什么,都要从点滴做起。如果你不了解维基百科,Google一下,或者问那些知道的人(顺便提一下,这是我学习新事物的秘方)。试着弄懂一些例子,直到你完全理解。

如果你连基础知识都不知道,你又怎么能弄懂更高深的问题呢?

5.等等,我们可以借助Google

当你在调试代码时遇到困难,或者不知道如何解决某些问题时,Google是你最好的朋友。由于代码抄袭的原因,我并不鼓励借助Google去解决问题。如今我支持这种做法,是因为有很多人也许碰到过相似的问题。你猜怎么着!其他人在Google上面帮助他们解决问题,并提供解决方案。

就这么做吧。每个人都这样,因为这是最明智的办法。

所以,如果你忘记怎么去生成一个随机数,你不理解一个程序错误,或者你只不过是解决不了某些问题,那就Google一下吧。如果你想更进一步了解如何掌握搜索技巧,请参见国外开发人员 Andriy Solovey 在他的博文《如何使用搜索技巧来成为一名高效的程序员》。

6.认真的规划和设计?对,需要未雨绸缪。

在我帮助他们编程之前,我会先看看他们的算法。如果他们无法提供的话,我会让他们先把算法写出来,然后他们就会知道为什么他们的程序不能运行了。

所有的算法都是一个框架,是一个程序的根基。很多初学者都不去设计算法,只是根据他们的想法去编程。当问题发生的时候,他们就迷失了解决问题的方向,程序变得难以调试。

所以下次,省下你自己的时间,把编程的规划写在纸上。直到你知道如何去解决问题之后才动手编程。我是这样做的,这个方法非常奏效。

你不希望你的程序看起来像个蹩脚的家伙吧。所以你在编程之前得好好地规划一下算法,未雨绸缪。这也是成为一名优秀程序员所需要知道的15件事之一。

7. 我的程序有一大堆错误!!我该怎么办??

冷静下来,放松点。错误是难免的,而且出现的频率比你想象的还要多。错误发生的时候,往往伴随着有行数、简单的说明,有时候还有一条建议。返回去尽力弄明白哪里出错了。如果还弄不明白,那就把出错信息拷贝复制粘贴到Google中。大多数时候都能找到相应解决方案。

另外我们可以试试以简短片段的方式编码和频繁地编译。这个方法可以保证你不用关注所有你不理解的错误提示信息,并且将提高你的编程速度。

8. 我不理解编程语言、语法、或者编程环境

好吧,如果你不理解这些东西,那确实是一个大问题。在我的高级设计培训班,我们正在用Ogre3D语言设计一个视频游戏。我跟你说吧,这不是最好的经历,因为我们从课程一开始我们一直在编程,从来就没有很好地认识编译环境。我们终止开始了8周的项目,不得不花费两个星期,平均每天8小时的时间去做这件事。最后几天我们花了超过14个小时的时间,同时上了3-4节其他课程……

这段经历教导我们在开始编程之前,要预先花时间去真正理解与编程语言相关的所有细节,语法、概念和编译环境有关的所有东西。这样做,节省的不仅是小时数,而且是天数。

9.但这个问题好难!

看看我是如何解决这些难题的!!

你有程序算法吗?这是你的第一个问题。如果你还没有解决,那就休息一下吧。人们在离开电脑时,往往会想出怎样去解决问题。我试过很多次在睡梦中制定出问题的解决方案。很多时候一个程序员需要的全部东西,只是一些新鲜的空气,甚至一种娱乐而已。这能让你的思维焕然一新,可能会让你看到之前你所看不到的东西。

甚至有时候,解决问题的最好办法需要一个优雅的环境。所以下次你在尝试为一个IPhone游戏提供费解的主意时,试试Doodle Jump这款游戏吧。你所需要做的只是跳跃运动,别人会设法卖出五百万张这款游戏光盘。

10. 我在等我的朋友来解决这个问题

为什么一些人编程不怎么样,这也许是上面所提到的之外的头号原因了。如果你所做的就是等你的伙伴来帮你解决问题,那么你将学不到任何东西。很明确的说,他们花了时间去试着解决问题,不过最终,经验才是解决问题的关键。

所以停止去依赖别人,以及学习如何独立做事。如果你无法这样做,或许就是你为什么不能成为一个大人物的原因了。(也许你有幸成为像Mark Zuckerberg那样的人)。

感谢Tony、Jay、 Chris、 William、Miguel、 Al、 Roby、Joseph、 Felicia、Benjamin、Jesse、 Pierre和Erick给出的建议。

原文地址:http://www.itjhwd.com/cxychouhen/

结束程序员对编程的恨

时间: 2024-10-10 22:33:05

结束程序员对编程的恨的相关文章

黑马程序员——网络编程篇

------- android培训.java培训.期待与您交流! ---------- 概述   1.网络模型        (1).OSI参考模型        (2).TCP/IP参考模型   2.网络通讯要素         (1).IP地址        (2).端口号         (3).传输协议    3.过程        1,找到对方IP. 2,数据要发送到对方指定的应用程序上.为了标识这些应用程序,所以给这些网络应用程序都用数字进行标识. 为了方便称呼这个数据,叫做端口(逻

程序员在编程开发中的10个实用技巧

程序员在编程开发中的10个实用技巧,下面是我自己在工作中学到的一些简单的技巧和策略,希望能对各位有用.1.     橡皮鸭调试法不知道各位有没有这样的经历,当你正在给别人描述问题的时候,突然灵机一动想到了解决方案?这种情况的产生是有科学依据的.高谈阔论能让我们的大脑重新有条理地组织问题.在这种情况下,你的聊天对象就是“橡皮鸭”.团队中的每个人都应该积极主动乐意地成为彼此的“橡皮鸭”.有时候,如果你幸运的话,你的“橡皮鸭”搞不好还能给出有效的建议呢.2.     快速信息反馈一旦写好代码就要尽快得

黑马程序员 网络编程 UDP与TCP

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ----------------------/* 网络编程分为两种模式:TCP和UDP 连接互联网的计算机以亿计,为了唯一的标识出每台电脑,互联网就给每台电脑分配一个 唯一独立的ip地址,通过这个ip地址就可以进行计算机之间的数据交换 我们计算机交换的数据功能我们在java中把它封住成一个叫Socket的类, 简称套接字, 端口号:计算机数据的交换一般都是电脑上的程序来维护的,而电脑上又运

黑马程序员——面向对象编程三大特性

黑马程序员——面向对象编程三大特性 ------- android培训.IOS培训.期待与您交流! ---------- 面向对象编程三大特性:封装,继承,多态,(抽象) ***封装的概念与原理*** 封装是面向对象的特性之一 封装的好处:降低数据被无用的可能性,保证数据安全性 不封装的缺点:会把自己的属性暴露给外部,失去对该属性的管理权 封装原理:实例变量默认只能被当前类的对象方法访问 **封装实现** 定义设置实例变量(setter)方法和访问实例变量(getter)方法 1)setter(

程序员的编程、调试、排错小建议

在空白的文本编辑器里打开一个崭新的文本,没有一行代码,出现在眼前的是一个充满了无限可能和希望的项目.可是,当数千行的代码写完之后,整个项目因为bug的出现而被压垮了,更别说添加什么新功能了...这也许是对程序员的最大打击,在饱满的热情上浇了一盆冷水.其实,最好的软件程序员当然知道怎样去发现并修复这些bug,在刚开始编程的时候就通过软件工程的最好方法来降低bug的出现概率. 几乎没有哪个程序员能够写出一个bug都没有的代码,但是解决方法总是比困难多得多.多实践和坚毅的决心是成功的关键,这样才能够写

为什么开源可以提高程序员的编程技能?

为什么开源可以提高程序员的编程技能? 记住开放源代码在你参与进去的时候效果最佳.代码更改在大多数项目中都是受欢迎的,但是有很多出力的方法.测试开源代码和文件错误报告:帮助完成文档集:写教程和如何做的例子:参加对话--或者仅仅只是帮助传播.每一件事都能带来改变,并且越多的人参与进来越好! 我已经写了很多年的软件.最近我意识到,我越涉及(致力于,结合于等)开源技术,我写出来的代码就更好.这不由地让我疑惑起来:难道里面有什么相关性或因果关系吗? 阅读代码能让你变得更优秀 我在编程生涯的早期就明白我阅读

无家可归的程序员和编程技术的价值

无家可归的程序员 当Patrick McConlogue首先宣布他计划教纽约无家可归的人如何编写代码时,软件程序员收到了大量好或坏的反馈.一些人称赞这个职位给Leo Grand提供了一百美元的现金和教授Javascript课程的工作,但是其他人却批评说这只是一个具有误导性并无理的冒险.纽约时报的Kevin Roose质疑说如果接受这种方式, McConlogue的免费编码课程和相应的硬件和软件都需要准备好. "如何将传奇结束?",Roose写到."熟练的黑客会在谷歌找到一份工

程序员提高编程能力万无一失的办法

那就是去读别人写的代码.读那些你常用的库.编程框架的源代码,读那些你景仰的大牛的源代码,读代码里的测试(测试本身就是一种有效的文档):读代码.改代码.运行代码. 其实,所谓写程序,大部分的时间都是花在读代码上,“写”的部分耗时极少:所以把“读”的技能训练好了,是很有好处的. 提高编程能力万无一失的办法 编注:这篇文章最初于 2010 年 5 月为 Fuel Your Coding 网站而写.不幸的是,那个网站已经不复存在了,所以我将这篇文章重新发布.为了紧跟时代步伐,我想过对其进行更新,但我又觉

一个合格的程序员的编程方式

可能在我们刚刚学习了某一门语言之后,包括HTML或者C.......我们就可以简单的写出一些代码,然后带来我们想要的效果,但是这充其量是程序员的第一个境界,但是后来随着我们知识的增长,我们可能会学习一些面向对象的变成方式例如我们学习了C++ 或者java,这时我们开始学习了大量的类库,这时要是让我们编一段 短小的程序,或者写一个工具类,可能都不在话下了,通常我们在写这一种程序的时候,通常我们我们可能也不想具体的思路,因为程序短小比较简单,遇到一些更聪明的人干脆从网上找一段程序,在自己的IDE上调