| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2918 人关注过本帖, 2 人收藏
标题:【转】对新手程序员的一些唠叨
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
结帖率:100%
收藏(2)
已结贴  问题点数:100 回复次数:37 
【转】对新手程序员的一些唠叨
在编程这一行,我已经干了20多年了。至今为止,我也差不多写过六七门编程导论课程,教授时间总计超过1000小时。以下是我不止一次向我的学生强调过的,我多年来一系列智慧的结晶(排列顺序无特定含义)。

首先,欢迎你成为一个程序员。

编程真的很难。不管你是有多么地擅长编程,唯一能成为障碍的是大家自己学习和解决问题的能力。在这一行浸得越久,就越理解这个事实。这其实非常有意思——因为这样一来,我们就永远也不会原地踏步、满足于现状。如果你丧失了这种进取心,那么在出现异常之时,很容易对此厌倦,甚至最终放弃。

编程也是最令人沮丧的事情之一。一般而言,正常的编程体验是这样的:尝试、失败、更加用功、重新思考、灵机一动、最终 奏效。在这过程中,会感到沮丧是很正常的,而且一旦我们这会成功了,就会想着去做更难的项目,然后这个沮丧感又挥之不去了。但是这会促使我们更加努力地去 解决问题,得出一个圆满的答案。不过,在此之前,我们得自我调整,舒展自己愁云满布的心情。

再怎么复杂的问题,总会有解决方案。随着我们的编程能力增强,我们对自己将会更自信。这有利于我们及时调整各种负面情绪、更好地去解决那些难题(话说,如果太简单就丝毫没有挑战性了)。

当我们还是小孩子的时候,我们总是闯祸,但是随着年龄的增长,我们很少有机会真正办砸一件事情。请记住,编程不是一件每个人都能做的事情。所以,你很牛!

在编程过程中,第一个小时和第10个小时是不同的,第10个小时和第100个小时也大不一样。我记得有人曾在博客中描述高尔夫球这项运动到了第1万个小时,会产生质的变化,编程也是如此。

编程就像魔法,我们都是魔法师。你看,我们努力学习,专研我们的课程知识(计算机和网络),然后召唤我们的魔法(程序)。魔法师可以教授其他人如何施展魔法,而我们发明创造的充满奇幻色彩的设备却能让任何人都可以使用(如互联网和手机)。这些设备提供的各项功能,通通离不开我们程序员的技能。

有效利用网络资源。在你第一年学习编程的过程中所碰到的每一个问题,在你之前可能已经有100个人与它亲密接触过了,网上肯定会有各种解决方案星罗棋布。越快掌握如何有效网上搜索的技能,学习的进度就越快。警告:在你不知道某段代码的工作原理之前,不要轻易复制运用这些网络资源。

作为程序员,无论何时都不应该忘记我们的工具箱。这些工具是我们的左膀右臂。我们在这个领域学到的第一件事情(变量, 循环等)就像螺丝刀和锤子。这些工具将伴随着我们遨游在这个世界的每一天。而且,随着我们经验的增长,还能与时俱进学习更高级的工具,这一类的工具虽然不 是非常普及,但是更擅长解决一些特定的问题 (例如,二叉树数据结构、A*、Valgrind、调试器等)。大多数编程领域(游戏开发、Web开发、数据 库)都有自己特有的一系列解决问题的模式。

程序因代码而生。在计算机上,我们可以享用其他人写出的方案,可以借鉴、可以修改、也可以编辑,随心所欲。

想要更加擅长编程,最好的方法就是写代码,写大量的代码。努力总会有收获。作为一名教育工作者,我将竭尽所能为大家提供一臂之力。但是,如果你已经掌握了充足的知识,那么只要有足够的时间,没有我也能发现问题的所在。古语有云,“坚持就是胜利”。所以,好好练习写代码吧,骚年。

同时,我们还需要阅读大量的代码。有很多程序员在这一领域比我们更如鱼得水,他们早就写下了很多可供参考的代码。三人行,必有我师。

有人说,第二门编程语言总是最难的,因为,第一门限制了我们思考程序的方式,而当我们需要学习另一种编程语言时,我们就不得不打破原有的秩序并重新建立一 个。在学习第二语言之后,接下来要是再学其他新的编程语言就快多了。现在,我只要一周就能将任何一种给定的编程语言学的差不多。

永远不会有所谓“最好的”。有些语言和工具会在解决某些问题上比较擅长。当我们学习其他语言的时候,不要试图用旧的端口去连接新的系统,要用新语言去思考和解决问题。

学会乐在其中。编程是一个汇集了很多问题的大集合,这些问题则需要我们一一解决。给自己找点乐子,可以写点自己感兴趣的程序,兴趣是最好的老师。

优秀的程序员永远不会满足于现状,总是不断学习。如果你能做到这一点,那么你永远也不必担心自己的饭碗。

出现疑难杂症时,可以试着将程序写到纸上。这不是开玩笑,这个窍门一般人我不告诉他。

最后,我想说,还有很多其他好的建议是我没有谈及的——但是,我想说,最好的建议是,我们得找到适合自己的。

希望各位都能开开心心编程,快快乐乐写代码:D
搜索更多相关主题的帖子: 能力 课程 进取心 程序员 
2014-09-23 00:03
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:15 
的确很唠叨,看完这篇文章都要花点时间,看懂这篇文章需要更多时间

思考赐予新生,时间在于定义
2014-09-23 00:29
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用love云彩在2014-9-23 00:29:00的发言:

的确很唠叨,看完这篇文章都要花点时间,看懂这篇文章需要更多时间

值得花费的

授人以渔,不授人以鱼。
2014-09-23 00:29
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
回复 3 楼 TonyDeng
不错,别人能嘴里吐出一些经历,不管再怎么唠叨,想要从中学习,必定要用上等价的时间

思考赐予新生,时间在于定义
2014-09-23 00:37
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
读得明白这些东西,比光知道若干套路强得多,但偏偏很多新手(包括某些老手)是不屑于这些理论的。看看李小龙的讲话和言谈吧,他是哲学专业的,他讲的武术一股哲学味,但他的功夫也是真的,他为什么要从哲学的高度讲那些东西?很多人认为讲哲学是废话,那是因为他不懂。

[ 本帖最后由 TonyDeng 于 2014-9-23 00:46 编辑 ]

授人以渔,不授人以鱼。
2014-09-23 00:43
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
不管你是有多么地擅长编程,唯一能成为障碍的是大家自己学习解决问题的能力。在这一行浸得越久,就越理解这个事实


这一条就正是我经常讲的,也是我签名档中所表达的意思。不过很可惜,很多人不接受,他们宁可要鱼,不要渔,你教他渔术,他反认为你其实不懂、在讲空话。在这里引用的这段话后一句才是精华,凡是那样认为的,肯定是新手,他在这行的经验绝不会有多长的时间。

授人以渔,不授人以鱼。
2014-09-23 00:56
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
再来看看这句话:

警告:在你不知道某段代码的工作原理之前,不要轻易复制运用这些网络资源。


醒悟点什么了吗?有多少人犯这种错误呢?我是不是多次告诫过新手不要乱抄别人代码呢?你真以为抄去交货了就是你懂的?虽然人家后面说要多看别人的代码,但这跟你没弄懂那些代码的工作原理就抄黏贴过去是一回事吗?哪怕那个是顶尖高手的代码,也未必就是适合你目前需求的代码,何况你并不懂它的工作原理,想修改重新利用也不可能,最终还是去求人,那就不是你的本事,抄来干嘛呢!一个不能自己任意修改和操控的程序,就不是你的货,自己写的,即使再差再低效,也有改的基础和可能,抄别人的,想改都不可能,那就是受控于人——更糟糕的是抄多个不同人的代码,在网上乱找资源的最大弊病其实就在这里,也是我平时常说的吸星大法祸害。


[ 本帖最后由 TonyDeng 于 2014-9-23 01:13 编辑 ]

授人以渔,不授人以鱼。
2014-09-23 01:05
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
以下是引用TonyDeng在2014-9-23 01:05:50的发言:

再来看看这句话:



醒悟点什么了吗?有多少人犯这种错误呢?我是不是多次告诫过新手不要乱抄别人代码呢?你真以为抄去交货了就是你懂的?虽然人家后面说要多看别人的代码,但这跟你没弄懂那些代码的工作原理就抄黏贴过去是一回事吗?哪怕那个是顶尖高手的代码,也未必就是适合你目前需求的代码,何况你并不懂它的工作原理,想修改重新利用也不可能,最终还是去求人,那就不是你的本事,抄来干嘛呢!一个不能自己任意修改和操控的程序,就不是你的货,自己写的,即使再差再低效,也有改的基础和可能,抄别人的,想改都不可能,那就是受控于人——更糟糕的是抄多个不同人的代码,在网上乱找资源的最大弊病其实就在这里,也是我平时常说的吸星大法祸害。

哈哈,在这一点我是非常赞同的,就好比如JAVA,网上有很多开源代码,曾经我就特别喜欢直接copy别人的示例代码过来用,但是问题很快就出现了,一些简单的程序要修改的确很容易,但是如果到了一些中大型的项目中,简直不知道怎么改,也无从下手,就算有本事,修正了之后,代价也是很大,耗时太长了,而且代码重用性不高,改得乱七八糟。嫌那样麻烦了,就再也没有copy的想法了,亲身体验过才知道这种弊端,现在想起来都觉得当初好天真。

思考赐予新生,时间在于定义
2014-09-23 02:08
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
现在能在这扯到以前学编程语言的事,我离初学又远了一点。

思考赐予新生,时间在于定义
2014-09-23 02:12
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
来个顶置吧,好让新手领悟一番
也正好帮他们纠正学习态度

[ 本帖最后由 love云彩 于 2014-9-23 02:24 编辑 ]

思考赐予新生,时间在于定义
2014-09-23 02:23
快速回复:【转】对新手程序员的一些唠叨
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029194 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved