资源描述
单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,前 言,二十一世纪科学技术飞速发展,知识更替日新月异。希望、困 惑、机遇、挑战,随时随地都有可能出现在每一个人的生活之中。抓住机遇,寻求发展,迎接挑战,适应变化。,1,计算机课程学习路线,C语言程序设计 汇编语言和微机接口技术 计算机组成原理与体系结构计算机操作系统,C语言程序设计 C+或Java 数据库系统计算机网络 软件工程,2,职业的乐趣,一种创建事物的纯粹快乐,快乐来自于开发对其他人有用的东西,整个过程体现出魔术般的力量,学习的乐趣,来自于这项工作的非重复特性,乐趣还来自于在如此易于驾驭的介质上工作,3,职业的苦恼,必须追求完美,是由他人来设定目标,供给资源,提供,信息,概念性设计是有趣的,但寻找琐碎的bug,却只是一项重复性的活动,产品在即将完成或者终于完成的时候,,却已显得陈旧过时,4,程序员的四个境界,程序员的职业生涯也可分为四个阶段,初级程序员(菜鸟)、高级程序员(熟练工)、系统程序员(高手)、软件大师(大师),其作品也经历四种境界:, 可以运行的程序 健壮、高效的程序 结构优美的程序 思想深邃的程序,5,初级程序员,初级程序员的目标一般是让程序能运行起来,迷惑于库函数的众多,不知道该用那一个,他们还要学习基本的语法,以使程序编译通过。初级程序员一般不会考虑设计模式、软件结构等问题。,6,高级程序员,第二阶段的程序员已积累了不少的编程经验,语法和库函数不再是障碍,已不再满足于程序正确运行、功能实现无误。他们需要了解程序背后发生的事情,需要了解操作系统的原理和调度机制.,不仅知道程序应该如何运行,还知道它为什么这样运行,能编写高效、鲁棒的程序。,7,系统程序员,第三阶段的程序员能构建结构优美的软件系统,软件系统结构的合理性、可扩展性、可维护性、可测试性是系统程序员考虑的重点,结构优美的软件系统同一栋完美的建筑群一样,每个部分各司其职,搭配合理。,8,软件大师,最后一级也许是每个程序员梦想达到的顶峰,程序设计不再是简单的工具,而是大师们改变世界的魔杖,从C到C+,再到COM和COBRA,再到XML和WEB SERVICES,每次改变,不是软件语法和开发工具的升级,而是用软件构建现实世界模型的改变,是一种软件思想的革命,9,程序员的七种武器,第一种武器:开发工具,至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C+和JAVA是重点推荐的开发工具,C/C+以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C+编写。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在.,10,程序员的七种武器,第二种武器:数据库,很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL, Postgres等。,11,程序员的七种武器,第三种武器:操作系统,当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。,12,程序员的七种武器,第四种武器:网络协议TCP/IP,在互联网如此普及的今天,网络技术已改变了软件运行的模式,从最早的客户/服务器结构,到今天的WEB Services,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,所以,深入掌握TCP/IP协议是非常必要的。,13,程序员的七种武器,第五种武器:DCOM/CORBA/XML/WEB Services,随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间件平台,,XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布计算的基石之一。,14,程序员的七种武器,第六种武器:软件工程与CMM,现代大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员,一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合.,15,程序员的七种武器,第七种武器:强烈的好奇心,什么才是一个程序员的终极武器呢,那就是强烈的好奇心和学习精神。没有比强烈的好奇心和学习精神更好的武器了,它是程序员们永攀高峰的源泉和动力所在。,16,程序员的七宗罪,一宗罪:以偏概全,在对一种产品决定立项开发前,都需要进行产品开发的可行性进行分析,而其中的市场分析至关重要,其实市场分析无外乎三点,一是要开发的产品是有市场需求的,二是公司有能力获取这份市场,三是公司能从产品中获益(不一定是指赚钱,如公司战略利益等)。,17,程序员的七宗罪,二宗罪:画猫成虎,有这样的经历,产品开发完毕交付用户使用后,用户总是不满意,如不符合他们的使用习惯,功能设置不合理等。所以产品的需求分析是如此重要,没有正确的需求,软件开发得再好,技术再先进,也不过是当摆设的花瓶。,18,程序员的七宗罪,三宗罪:好大喜功,项目经理在制定开发计划时,往往过于乐观,每个开发阶段都按最乐观的估计来计算开发时间,而没有充分考虑到软件开发的特殊性和不可预见性。程序员可能都有这样的经历,一个非常小的BUG可能要耽误很长的时间,使开发进行不下去。所以项目经理切忌“好大喜功”,因为项目的不断延期会打击项目成员的信心和士气,久而久之,会使大家产生一种惯性:项目延期是正常的。,19,程序员的七宗罪,四宗罪:只顾眼前,即便是最优秀的系统分析员也不能保证所提供的软件系统需求不会变化,所以软件设计人员要充分考虑这一点,不能仅仅只顾眼前的需求,还要有一定的前瞻性,满足可预见的未来需求,软件系统的可扩展性和可维护性对于一个大型、复杂、长生命周期的软件系统来说至关重要。,20,程序员的七宗罪,五宗罪:得过且过,软件设计需要通过软件实现成为最终的产品,优秀的设计需要靠一行一行的代码体现,而有些程序员对软件实现的态度是,最小满足原则,“得过且过”,对于系统的容错性,安全性,效率考虑甚少,满足基本功能即可,没有持续改进的态度和精神。,21,程序员的七宗罪,六宗罪:自我安慰,产品实现是否达到设计要求在公司内部需要测试验证,严格的测试对于保证软件产品的质量是必须的,而出于时间、资金等缘故,很多软件产品并没有经过严格的测试就已交付给用户使用,程序员们总是善于自我安慰:应该没问题吧。想当然不能消除缺陷,只有测试再测试才是科学的精神。,22,程序员的七宗罪,七宗罪:敝帚自珍,技术总是向前发展的,不要过于“敝帚自珍”,抱着原有的东西不肯放弃,软件产品也有生命周期,该终结时要毫不犹豫。,23,系统分析员,技术知识与技能,商业知识与技能,人的知识和技能,诚实和道德,24,
展开阅读全文