如何成为一个好学生

如何成为一个好的程序员

每个人都有自己的学习方法,也许这种方法对我来说有用,但不见得就对所有的人有用。所以,请不要盲目的跟着别人的学习方法学习。
一、要思考属于自己的学习方法
1)学习应该从基础打起,不要一开始就尝试最高深的技术。
2)每看一本书,不要说这章我以前学习过了,也掌握的很好,因此我可以跳过这一章看更重要的了。
3)对于作业,遇到不会的尽量不要立刻向别人请教。如果实在解决不了的问题,可以先完成你会的,然后把一些特别的难点提炼出来,向高手请教。
3)不要指望书本和行家能帮你解决一切问题,因为并不是所有问题都能由别人教给你。 
4)向别人请教问题应该把问题说明白。对于错误提示信息应该原样提供出来,不要按自己理解的信息提供。因为既然你自己做不了,说明你理解一般都有问题。
5)问问题最好能带代码。
6)不要说“编译通过,可是运行时...",因为编译错误和运行错误可能根本没有关系。 一般来说,编译是语法问题,而运行是逻辑问题。
7) 书看千遍不如做程序一遍,应该尽量尝试去写程序。
8)做程序千个不如做好程序一个。应该尽量完善你现在做的程序,而不要不断开新的计划,而每个计划都虎头蛇尾。
9)要想到你不是一个人写程序,而是和大家一起写程序。
10)高深的技巧虽然显示了高深的本领,但是对于合作往往是有害的,应该尽量写出简单易读的代码。
11)编制程序应该尽量做到自注释,即代码本身一读就懂,好象自己在说明自己的逻辑一样。
12)复杂的代码如果实在做不到自注释,应该给出适量的注释。
13)注释在修改代码的时候应该相应修改,不能用陈旧的注释去误导别人。
14) 代码应该尽量可重用,相同功能的代码应该由相同的函数完成,重要函数应该给出调试信息,以便调试时及早发现问题。
15)应该尽量写小函数,每个函数尽量不要超过40行或者更少。这样不用滚动屏幕也许就可以读完整个函数。
16)对于switch语句,尽量不要有过多的分支,如果分支太多,可以考虑用跳转表。
17)尽量少使用一些有争议的语句,如goto和三目运算符,既然有争议,它肯定有一定的缺点。
18)对于goto,许多工程师技术高到可以合理使用,而不至于导致问题。但是你的程序并不一定给你同水平的人看和修改,他们可不能保证合理的读和修改这些相关代码。
19) 代码编写时应该有一定的格式,其基本要求是对理解代码有一定帮助。
20)如果数据是多个模块共有的,应该提供一个封装的类来管理它,并提供一个合适的接口给各个模块。这样,如果数据内容有重大修改,则只要接口不变,基本上可以保证程序不要很复杂的修改。
21)应该尽量考虑到数据的并发控制。
22)数据的并发控制应该封装在接口内,而不要暴露给其他模块,这样可以减少因为并发原因导致的程序死锁。
23)数据本身结构不可以太复杂。应该尽量把不相关的数据分割成为两组数据。
24)对于数据量比较大的情况,应该考虑数据库。
25)数据库接口应该采用标准ODBC或者ADO接口,尽量不要根据实际数据库DBMS提供的接口来处理,因为你可能在实际使用中更换DBMS。
26)小的数据可以考虑文件,文件路径应该必须设计成相对路径。
27)在一个函数中,应该尽量打开文件后使用完后立刻关闭,这样其他程序可能使用文件。
28)不要尝试把文件全部读到内存中,应该分次处理大文件。
29)编写程序应该提供相关的测试程序,以提供测试手段。
30)应该考虑代码、函数的使用情况,不要超越函数可以使用的范围使用之。
二、学习语言的几个原则是要遵守的:
1. 坚持,坚持,再坚持。
首先要有毅力,对编程的狂热也可以在一定程序上起到帮助。我就是这样的。起初,我学习 VC 是三天打鱼两天晒网,学习进度很慢,幸好对编程的执著,使得自己坚持下来了。我周围有几个人,他们比我先学 VC 近半年,但现在仍然学不会;而我现在虽说不是很厉害,但基本的应用程序是不在话下。我就是天天看书,上机实践,几乎所有的时间都泡在里面,有时连吃饭都在想,为什么?因为我确实想啃下这块硬骨头,我不想半途而废,我觉得学习 VC不仅仅是学到了更多的东西,最主要的是培养了我们自己一种坚持克服困难的毅力。

2. 实践,实践,再实践。
当你学到了一种新的技术或知识时,多实践是巩固学习的一种最好最有效的方法。这个实践不是照著书上的例子做一遍,而是根据自己的能力,给自己出题,然后去完成它。只有这样,你才能发现自己的不足,同时又增加了编程经验。但要成为合格的程序员,光会写代码是远远不够的,更重要的是思考。谋定而后动,是不变的真理。
3. 掌握编程思想。
学一门语言,不能仅仅是语言,还要注重语言背后的思想方法,获得提出问题,分析问题,解决问题的能力,不是为编程而学习。看它是如何来解决某一问题的,为什么要这样去做,他总是要符合客观事实的,就像人说的话一样,存在某种逻辑,数据的组织,信息的传递,靠你自己的头脑去建立,然后看该怎么样用编程语言来表达自己的想法。只要你认真实践,努力去做,寻求乐趣,就会达到目标。
4. 耐心、细心、平常心、团队协作精神。
在这个网络时代,资料到处都有,无论什么先进的技术,只要查到资料,不会的快的学上几天慢的一两个月也能学会。现在已没有写不出的程序了,写不出是因为你没有写完它。我以为现在的程序员不一定要多么聪明,而更需要他有完成枯燥项目的耐心,找 BUG 的细心,对于金钱的平常心(不要为了早日拿到钱而赶进度),最后最重要是有顾全大局,团队协作的精神。
三、怎么才能学习编程语言
1. 扎实的基础。
数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。
2. 丰富的想象力。
不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。
3. 最简单的是最好的。
这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。
4. 不钻牛角尖。
当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。
5. 对答案的渴求。
人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。
6. 多与别人交流。
三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。
7. 良好的编程风格。
注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。
8. 韧性和毅力。
这也许是"高手"和一般程序员最大的区别。A good programming is 99 weat and 1ffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。 

四、学习的方法 
1、 比较宽的知识面,并且能够时时补充自己的知识和完善自己的知识结构 
2、耐心好,特别是在调试和学习阶段,世界上没有聪明的人只有刻苦的人。做开发其实就两件事情学习和改错,在这两件事情中间的开发过程其实是比较简单的 
3、永远记住:代码是给人看的而不是给机器运行的,计算机在执行程序时是不怕累的,而人在看代码时是非常累的 
4、 良好的编码习惯,至少保证自己能够随时看懂几个月前自己所写的代码 
5、尽量让你的代码能够很容易的被别人理解,写代码时想想你会不会在两个月后被别人骂 
6、 不要容忍自己犯重复的错误和写重复的代码 
7、知道如何做比得到代码更重要 
8、 尽量不要做已经有很多人已经做过的事情 
9、 学会尊重别人的开发成果,除非不得已不要下决定全面替换以前的系统 
10、 珍惜自己的时间与工作成果,尽量让别人分享自己的开发成果 
11、 避免假设,多思考极端情况与引起错误的可能性,努力减少低级错误 
12、 不要相信至少是不要轻信自己为自己所做的测试结果 
13、 懂得坚持自己的开发思路,并懂得理解与吸收别人的思想 
14、 学会与其他人保持一致,但不能放弃自己的开发特色 
15、 懂得向你周围的人学习,不论是开发能力上的还是开发经验上的 
16、 懂得软件结构的的重要性,分析代码前先分析代码的结构 
17、 学会总结,定期总结自己所学会的知识,看看自己前段时间因为各种原因所浪费的时间 
18、学会计划,尽量不要认为通过延长自己的工作时间来完成任务 
19、学会正确估计自己的能力和工作时间 下面这些是我认为一些比较适合我自己的方面,不一定对每个人都合适: 
20、多看些杂志,没事情的时候可以看看以前看过的参考书,书中很可能有你以前没有注意到的一些细节 
21、 不要太早去做一些与开发无关的事情,因为学习的黄金时期是很短暂的 
22、学会分析别人的系统,多看看别人所开发的系统的先进的一面。这里包括别人的开发思路,实现时所采用的结构 
23、时常感到自己将被淘汰,经常埋怨自己的不努力 
24、 知道自己缺少什么 
25、 强迫自己做一些自己不喜欢做的事情,比如说写文档 
26、能够有勇气重写自己所开发的系统,但当你重做时你应该采取和前一次不同的工作方式和方法,否则重做就没有必要 
27、将问题简单化而不是复杂化 
28、 将维护时会产生的一部分问题转移到开发时或是设计时来解决 
29、有时候也不妨问问自己:我不做开发时去做什么 
30、坚持为自己做每周的开发计划,在事情没有做完以前不要轻易转移自己的注意力 
31、 尽可能多的将你所做的教给别人,因为你有一天可能不再负责这个系统 
32、做事一定要有始有终,除非是有不得已的理由否则不要在工作完成前提前离开 
33、不要将你为公司做的东西带走,你因该带走的是开发经验和对开发的认识而不是代码和产品 

附注:

1.好的程序文件和作业指导书有什么特点?

答:具体清晰。清楚地规定哪个部门的哪个人员在什么时候做哪些工作,如何做,以及填写哪些表格,形成什么记录;使用简易。可以使新手很快了解,并让职务代理人能够迅速地代理工作;实际可行。简单扼要,容易遵循,可操作性强,不前后矛盾;达成共识。所有的规定均来自于使用者的共识。

2.一个好的程序员应该有哪些特点?

答:我从编程中悟出八个字:1专 2静 3谦 4筹 5悟 6慎 7透 8恒
1"忽如一夜春风来,千树万树梨花开."现在的技术百花齐放,切忌不可贪.不要盲目的追求新技术,唯有算法才是灵魂.
2"非淡泊无以明志,非宁静无以致远."要想达到高的境界,必须能够心静.年轻的程序员都很浮躁,这一点对于他们来说尤为的重要.
3谦不仅指技术,而且还指人.一门实用的技术,无论多么容易掌握.只要你深入的研究,都会挖掘出很多新东西来.对于人来讲,你可能会就某些方面向其他人请教.如果你不谦虚,请教的结果肯定会不很理想.
4"凡事预则利,不预则废."在编程的过程中,如果你没有做好事前的分析工作.你会发现自己慢慢就会陷入思维混乱中,最终导致失败.当你把一切都筹划好,那种"运筹帷幄决胜于千里之外"的感觉多爽啊!
5程序中蕴含着很多的道理,唯有大彻大悟者方能体会其中的奥妙.
6内存无论在怎么发展,它都会有一个容量的限制.因此你应该堤防着它. 你的程序如果导致内存泄漏,是程序员很可耻的事情.
7对于问题的理解,一定要透彻.这样你才能实质的解决问题.
8做技术一定要一颗恒心,这样才不会半途而废.

给一些建议: 
1、不要玩游戏,至少不要玩网络游戏。(我认识专业比较好的大学朋友中没有一个玩游戏的)
2、不要用分数衡量自己专业能力。(多去写程序,多去看代码肯定是对的)
3、培养学习的能力。(老师带领下学会一个东西很容易,尝试之前自己去学习,然后再去学,这样可以学习可以发现自己什么地方学习能力不足)
4、培养团队意识,不要吝啬自己的代码,多去主动分享,好的代码都是改出来的)
5、把自己放到软件行业去衡量,而不是自己的学校。(软件专业是没有年龄的)
6、不要忽视基础。(基础像地基,如果没有基础房屋到后面就很难扩展了)
7、生活中有一些事情即使不感兴趣也必须做,好在它们不需要做一辈子。
!真羡慕你们,现在能这天一个环境里工作和学习,每天可以收获新的知识。所以我觉得最重要的是学会找到生活的新意。有位老师对我说,生活每天都是现场直播,今天过了再也不会有了,有多少研究生,多少就业者后悔没有好好地利用有效时间做上列的事。
写得好,不如说得好,说得好,不如做得好,干得好,不如干得巧,我的追求是高质量+好的方法+正确的心态 !
原文地址:https://www.cnblogs.com/wangcheng1990/p/2845803.html