作为一名优秀的程序员,要具备哪些基本功

我本科是学电子的,学的比较广,不精就是广的另一成意思了,现在想在软件开发方面发展,想让这一行业的精英们给我指导一下,让小弟少走徘徊之类,可以推荐几本经典的教材,主要是java方面的。
程序员(英文Programmer)是从事程序开发、维护的专业人员。
作一个真正合格的程序员,需要具备:
1:团队精神和协作能力
团队精神和协作能力是作为一个程序员应具备的最基本的素质。
2:文档习惯
文档是一个软件系统的生命力。作为代码程序员,必须将30%燃扮顷的工作时间写用于技术文档。没有文档的程序员势必会被淘汰。
3:规范化的代码编写习惯
知名软件公司的代码的变量命名、注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。
4:需求理解能力
程序员要能正确理解任务单中描述的需求。
5:模块化思维能力
作为一个优秀的皮陆程序员,其思想不能在局限当前的工作任务里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。
6:测试习惯
测试是软件工程质量保证的重要环节,但是测试不仅仅是测试工程师的工作,而是每个程序员的一种基本职责。程序员要认识测试不仅是正常的程序调试,而要是要进行有目的有针对性的异常调用测缺乎试,这一点要结合需求理解能力。
7:学习和总结的能力
程序员是很容易被淘汰的职业,所以要善于学习总结。
学习程式设计不必苛求一定要从某一种语言入手,可以选择自己比较容易接受的一种进行学习。从中主要学习的是编程本身的思想,学习的是用程式设计的眼光来看待问题。或许,学习的效果不能马上看到,但是可以学到扎实的基本功,而这对於将来的进一步发展是有很大好处的。这些基本功包括:
一、强化逻辑分析和建立数学模型的能力
编程的目的是什麽?是要解决现实中的问题。而现实中的问题是用自然语言描述的,目前的电脑对其无法理解。我们要做的就是必须用电脑能理解的方式将问题“告诉”电脑。也就需要我们对现实问题进行逻辑分析,建立合适的数学模型,然后以程式和资料的形式输入电脑,让电脑帮我们来分析解决。一个简单的例子就是电脑对於颜色的处理办法:用R、G、B三色分量来各表示一种颜色,对於颜色的处理被转化为对R、G、B三个整数的处理。我们只要改变这三个整数,就可以将其改变成另外一种?色。对於其他的现实问题,我们也要像这样使其可以被电脑所“理解”。这是编程所要解决的第一步,否则就根本没有程可编。这是建立在“经验”基础上的,是要在学习过程中逐步积累的。
二、资料枯并结构和演算法知识
程式设计发展到现在,已经有了一套比较普遍、完整的数学模型(我们称之为资料结构)和对应这些数学模型的处理方法(也就是演算法)。目前的程式就是以此为基础的。在程式师中间流传着一句经验之谈:“好的资料结构是程式的一半。”其重要性可见一斑。作为一个程式师,如果不知道资料结构中堆叠、伫列、链表、树,不知道演算法中的查找、排序、树的遍历、递回,这简直是不可想像的。我们所说的“编程的思想”也就具体表现为这两点。所以,资料结构和演算法知识是学习程式设计过程中必须掌握的重点,这样在以后的程式开发过程中就可以觉得得心应手。
三、丰富的实践经验
程式设计本身就是一门实践性很强的学科。一个只存在於纸上的程式如同没有翅膀的鸟永远不能飞翔在现实的天空。任由代码写得再巧妙,风格再优美,也只是一张纸上的一连串字元而已。就好比是一份作文练习,或许写得很好,但是不交给老师去批阅,和一张白纸又有什?区别呢?在这里,程式就是作文,而电脑就是老师。只有把“作文”交给“老师”,通扮宽过调试程式才能印证自己的构想是否正确,或者看到什麽缺陷。当然也少不了要多和同行交流,尤其是随着互联网的普及,在网上我们也可以看到别人编写的例子和根源程式,没缺迹作?现代的程式师,这也是千万不可错过的好机会。
最后,作为一个程式师还有一点小要求:那就是身体素质要好,能熬夜才行。
  如果我没理解错,楼主说的是要成为一名程序员所需要学的东西。
  作为程序员,首先要掌握电脑操作入门;

  其次,要了解自己未来想从事哪方面工作。比如:如果从事网络行业要学中告网页编程点net,服务器管理等;从事游戏编程学c++,物理引擎等;从事应用程序开发要学c,c++,java等。
  最后,作为一名优秀的程序员要不断卖羡明的与时俱进,第一时间学会新的编程语言和编程软件。要将自己编过的程序改良并保存,作为以后编程的跳板。最好学会英语,因为,流行的编程语言和软件都是第一时间以英语发布的。
  总之,作为一名优秀的程序员要派橡了解电脑的基本操作,了解自己的未来发展方向,最后根据方向选择合适的基础工具,并持之以恒,活到老学到老。
01、吃透一门编程语言
这个技能看起来似乎没有必要强调,但就怕“贪心”,不要学过时的编程语言,并且吃嫌芹高透他,很关键。
02、整洁的代码
当你学会一门编程语言之后,接下来要考虑的事情就是让你编写的代码变得更整洁,更易于理解,更富有艺术。Elliot Chance 曾表达过这样一个观点,他说:“要分辨两个程序员的优劣,就是给他们一样的时间,越好的程序员写出来的代码越少(当然是可以运行的)。”
03、算法与数据结构
敲代码的过程中经常遇到一些实际的问题,由于无法充分利用数据结构将数据之间的关系通过合适的算法策略进行有效地存储转换,就导致程序的性能很低。多投入一点到数据结构和算法上面去,它决定了我们的技术高度。数据结构和算法是重要的基础知识,学习它们的过程就像是在打地基。
04、基本的数据库知识
虽然软件开发人员更应该专注于程序设计而非编写和优化 SQL(应该交给专业的数据库管理员负责),但在我们国内,只有顶尖的企业才会有数据库专家。如果你想要在软件开发这条道路上走得更高更远,懂一些基本的数据库知识是必须的,比如说:
如何将业务中的对象属性转化为数据库字段;
如何从数据库中检索数据,并将数据集拼接在一起;
如何往数据库中插入、修改、删除数据;
索引的数据结构及原理;
SQL 语句的优化;
等等。
05、技术框架
技术框架是一组通用类库的集合,它帮助我们让编程任务变得更简单,毕竟轮子替我们造好了。假如说没有技术框架的话,我们就好像坐着马车前行,而不是飞机、高铁和汽车,开发效率就要大首轿大降低了。
06、源代码管理工具
每天上班的时候先从服务器获取最新的代码,然后开始一天的工作,下班走之前切记要提交一次代码,否则就很容易耽搁团队其他成员的开发进度。
07、测试
测试是一项非常重要的工作,占用的时间比代码编写的时间多多了。从单元测试到集成测试,所有的测试结果都要芹尺整理成册,所有的边界条件都要测试到,哪怕你觉得完全没有必要。但正是这种一丝不苟的态度,成就了日企软件高质量的美誉。一个优秀的开发人员绝不允许他的代码在交给别人之前不经测试。
08、调试
解决 bug 的难度要比创造 bug 难得多。
调试是为了让你弄清楚代码不能正常运行的真正原因,如果你的调试技巧不过关的话,甚至有可能会被表象蒙骗,从错误的角度去修改 bug,从而引发更多、更大的问题。
1退队精神和运毁协作能力
2文档习惯
3规范化,标准化得代码编写习惯

4需求理解能力
复用行,模块化的思维能锋悄毁力

测试习惯
学习和总结能银备力