程序员成功之路
程序员成功之路 ——The road ahead for programmer(演讲稿)
一、我很羡慕在座的各位同学,因为你们是中国未来的程序员,而我不是,我一直很遗憾。
比尔盖茨曾经写过一本书叫做《未来之路》The road ahead, 那么今天我选择这样一个题目, the road ahead for programmer, 程序员的未来之路,也就是程序员的成功之路,希望大家未来也能够拥有像比尔盖茨一样的智慧的头脑和开一家像微软一样的公司。俗话说:心有多大,人生的舞台就有多大!
二、最近看了几篇csdn上的漫漫人生路专辑,很有感触,这里摘抄了几句,非常愿意和大家分享, 优秀程序员的心里话:
编程的原因是喜欢,不是为了别的。
从摸上电脑的那一刻,我就知道,这才是我的世界。
我一心一意地想作个程序员,尽管知道很累。
人真的不能轻言放弃,否则,失去的永远无法挽回!
生命是一种长期而持续的累积过程
所有成功的人都有一个不变的黄金法则: 积累!与 坚持!
大家听了这些话,不知道是怎样的想法呢?
提问,(1)你以前有没有读过这样的文章或有没有程序员跟你说过这样的感受?
(2)你怎样看待程序员这个职业?你有这种感觉吗?
上面的话其实都在说明一个道理,只有全身心地投入,写程序才会有意思,才会体会到其中的乐趣。
电脑的世界其实很大,程序员是活在自己想象的王国里。你可以想象到电脑里细微到每一个字节、每一个比特位的东西。通过电脑可以实现你的设想,解决你的问题。电脑远没有人那么复杂,如果程序写得好,你就可以和电脑处好关系,就可以指挥电脑干你想干的事。每每你坐在电脑面前,这个时候你是十足的主宰。
理想和梦想,比尔盖茨自从见到了计算机这个东西,就想象有一天个人计算机将是每一部办公桌面系统以及每一家庭的必备的工具,并为这一信念所指引,开始为个人计算机开发软件。
三、程序人生:可以把程序作为你的人生,也可以把你的人生当作程序来设计。
你的父母把你生下来,你的身体就是一台计算机,而上面运行的软件就是你的思想,这个软件版本高低功能的强弱,就看你的思想境界。思想软件需要你自己慢慢地去编写,可能父母教给了你最基本的语言,但是其他的高级语言和技能需要你长大以后要自己去学习,你能精通几门语言是你的本事。
第一步,随着你渐渐的长大,你开始有了需求,各种各样的需求,一开始你只是想要一块巧克力糖,一个新书包,一件新衣服,一辆崭新的自行车;后来你可能就想要一栋房子、一辆好车,你开始追求高质量的的物质生活、精神生活,你追求成功与快乐、还要求更好的发展,希望得到别人的尊敬,过一份有尊严的生活。需求很多很多,仔细分析你的需求,想想你最想要什么?怎样去实现它。
第二步,是很关键的一步,你要设计自己的人生程序。你首先要概要设计,你希望将来成为一个怎样的人,分几大步实现这个目标,少年、青年、成年、中年、老年。可能有求学程序、出国程序、恋爱程序、求职程序、事业程序、升职程序、结婚程序等等。概要设计后还要进行详细设计,你每个月每个星期做些什么,每个小模块里面有每个阶段的小的目标,小程序,这个星期读完一本书,下个月参加考试,然后写一篇论文等等,虽然说人生不可能完全规划出来,但是经过设计的人生远远比没有设计过的人有更有意义,好好的设计你的人生吧。
第三步,是编码和测试,你大多数时间都在不停的编码,同时还要不停的测试,编码的过程十分的辛苦,需要耐心和思考,你会觉得苦闷、烦躁不安、寂寞、痛苦、迷茫与无奈,但有些时候又十分开心、兴奋虚荣、骄傲和满足。编码的过程充分体现了人生琐碎与不如意和艰难,bug永远存在,人生也在不断的犯错误和不断地总结。就像一个程序不能编写得完美一样,人生也是不完美的,你不可能处处要求完美,很多地方需要同别人交流和互相借鉴。测试可以分为内部测试和外部测试,经过测试,你发现自己的错误,并想方设法改正它,然后成长起来。
第五步是集成和软件发版,你的设计的人生软件要拿到市场上去卖,能不能卖上好价钱,要看软件的功能和特色,性价比、看软件的包装,你有没有高人一等的杰出才能,你有没有于其它软件相比的竞争力,软件的价值,也就是你人生的价值。当然你可能是一个很高尚的人,编一些免费的软件,不做比尔盖茨,做linus torvols也挺好的,在自由的空气在互联网上空飘荡。看你自己的选择!不过这个世界好像更欢迎前者,linus住在拥挤的民用公寓里。而比尔盖茨住在自己像皇宫一样的豪宅里面当帝王,你首先要解决生存的问题,然后再去考虑其他得东东。
好好的谱写你的人生程序,人这一辈子真是要追求点什么才有意义!在谱写你的人生程序之前,首先看一看你的前辈们是怎样谱写他们的成功人生的!(慢一点儿)
四、国外著名程序员
冯•诺伊曼和阿兰•图灵计算机之父,图灵机是现代通用计算机的原型
小托马斯•沃森,蓝色巨人IBM创始人,迅速发展起来,40%的利润率
史蒂夫•乔布斯,苹果公司的总裁
肖克利博士因将其一生献给其钟爱的晶体管事业而名垂计算机史。
蒂姆•贝纳斯-李的最大贡献当属发明了WWW(Word Wide Web,万维网)。他也因此而以“Web之父”及大多数浏览器标准的监护人而闻名于世
最早干起计算机软件编程的不是盖茨,而是他的朋友和竞争对手加里•基尔代尔。 作为最伟大的程序设计员和设计家之一,他搞程序主要是出于缜密思维的雅兴,而不是为了赚钱。当时他开发了一个CP/M操作系统,比尔盖茨也自己写了一个dos操作系统,但是很不好用,远远比不上cp/m,所以 ibm公司就想把基尔的操作系统买下来,比尔盖茨这个时后表现出极大的热情,主动代表基尔去谈,于是谈来谈去就把基尔的操作系统谈成了自己的东西,人们都说,使用操作系统的是人都欠基尔一份情,而盖茨欠得最多。
比如盖茨赖以扬名立身并最终发家致富的Basic语言,是60年代达特默斯学院的两位教授创造的。而微软起飞的翅膀DOS,更是基尔代尔的“临摹品” 。Windows用的是苹果的技术,Excel其实是Lotus1-2-3的复制品, Web浏览器也是借助网景的创意开发的,Word纯粹是WordStar、WordPerfect的跟风......
微软屡屡实施“吸功大法”,博采众家之长,将许多其他公司创造的新技术新功能纳入自己的产品
但是,
不管盖茨使用了什么卑劣和霸道的经营手法,不管微软是不是违反了垄断法,不管法院将对它做出什么样的裁决,我们都应当感谢微软,感谢盖茨,是他们改变了我们的工作、学习和生活方式,是他们增加了我们对这个世界的更新、更深刻的认识,是他们让人类向科技和文明的高峰又迈进了一步。盖茨和微软,是工业经济时代向信息经济时代转轨过程中永远屹立的丰碑!
五、国内著名程序员:
求伯君 王江民 严援朝 吴晓军
鲍岳桥 刘 旭 王志东 朱崇君
王永民 史玉柱 刘积仁 周志农
丁 磊 王文京 刘迎建 池宇峰
王志东 周 奕 郭 为 刘 虎
六、中国有千千万万的程序员,从求伯军到王江民,从严援朝到王志东,从丁磊到雷军;世界上也有千千万万的程序员,从Linus到Andersen,从比尔.盖茨到杨致远,我一直在研究这些优秀的程序员所走过的道路。发现他们共同的特点是把软件开发当成自己的嗜好,并且把这种嗜好变成自己的事业,永远保持着好奇心、思考、执著(韧性)和耐心!市场需求决定着软件产业的发展方向。软件工程师不能就技术论技术,而是要就市场论技术。因为如果没有市场需求,没有地方可应用,即便是“天衣无缝”的技术也只能“孤芳自赏”。
好奇心:乐趣始终是工作的源动力。视工作的成就为人生最大享受,可能是这一代新富翁共同的特点。做自己喜欢做的事,而不是赚钱,才是他们的主要动力。对他们而言,在计算机屏幕前编写着一句句看似枯燥的程序代码,干得不分昼夜,是最大的乐趣。
思考:基尔代尔,作为最伟大的程序设计员和设计家之一。他搞程序主要是出于缜密思维的雅兴,而不是为了赚钱。在开发的过程中学会思考和远望,学会做创造性的工作。有思想的程序员生命力才能长久。给大家出两道思考题:软件的本质是什么?软件高手怎样定义?日后有机会大家一起讨论!
执著:执著是一切天才的“通病”, 王文京执著于财务软件,于是有了今天的用友软件。苏启强执著于软件服务,于是有了今天的连邦软件。我们也要执著于我的执著!阿甘的例子,只有偏执狂才能生存IBM(安迪•葛洛夫)
耐心:值得你一生去学习的东西!高手往往都是寂寞的,寂寞的人是走得最快的人。
一个人只要有韧性,刚开始写程序的时候,学得多的人写得好,到了后来,大家都上了一个层次,谁写的好只取决于这个人是否细心、有韧性、有灵性。关键是你是否能够出想法出产品,你的劳动是否能被社会承认,能为社会创造财富。
我要告诉大家的是,不论你今后是选择继续学习还是选择工作,都要始终把终身学习的观念树立起来,永远保持对新事物的好奇心,执著的去追求自己做钟爱的软件事业,学会思考,去除浮躁,有耐心的去写好每一行代码,那么不管今后你发展的怎么样,至少现在,你已经具备了一个优秀程序员所具备的基本素质,你的思想已经能够得到别人的尊重。
“专注与超越——这是人生每日的主题”
七、如何做一个成功的程序员?
下面是我和一些朋友谈过之后的小结,希望对于各位有所帮助。
1. 培养对软件开发的兴趣。
因为不喜欢,所以才感觉的痛苦,因为痛苦,所以很难有大的发展,因为一直没有大的进步,所以,更加不喜欢。如此恶性循环。而正确的应该是,先做到对于软件开发感兴趣,如何做呢?首先你要产生对于软件本身的好奇心,做这项生活的人,多数有这方面的爱好,也能感受到其中的乐趣,否则就会成天痛苦不堪。
2. 第二步,其实更简单,给自己进入软件行业一个理由!
然后,写下来,放在一个适当的地方,不要随便看到,但是,永远不要忘掉。
为什么需要这个理由?原因很简单。当我听一些朋友聊他的苦闷时,总觉得对于自己选择软件行业是一个错误,如何的不好。我就问他,你当初为什么选择软件这一行?想了半天,他才回答我。我说,你在犹豫 ,就证明你已经淡忘了当初你为什么决定入行了。关于选择,应该说人生无处不在抉择,一旦选择了就不会放弃。既然选择了就不要轻易后悔,执著的走下去,因为你一后悔,任何选择和决定都是错误的。永远不要把时间浪费到对往事后悔的追忆上。
如果你一直记得入行的理由,那么,在做软件开发这份寂寞的路上,你永远不会被寂寞击倒。成功就在你坚持的那一刻来临。
3. 一切从dos开始。
也许你觉得奇怪,为什么要从dos开始,因为这里我是说你要成为一个成功的软件程序员,而不是仅仅是一个程序员,既然你要成功,所以,你要厚积薄发,所以,从dos开始是有道理的。因为从dos开始,你就知道,要想删除一个文件不是右键点一下,然后,选择删除菜单,可能还要点一个确定,就一切OK了,你可以要执行一下del指令,然后,还要输入一些参数如文件名,可能还需要路径,知道这两个区别有什么用呢?当然有用,你不会被漂亮的窗口界面(所见即所得的精美画面)所迷惑。 当你现在才开始学习的时候,挡住窗口界面的引诱,或许你会更容易成功。
你可以猜测出它们大概处理的过程是什么。
4. 开始你选择的工具决定了你将来的发展水平
世界上流行的程序语言有许多种,这种情况将来也不会改变,因为这是由我们所面临的需要解决的计算问题的五彩缤纷所决定的。任何语言都不可能是最完美的工具,不可能在处理任何问题时都是最锐利的宝剑。“为完成目的而不择工具”; 一个计算机工作者需要理解掌握多种程序设计语言,只有这样,在遇到具体问题时才可能做出更合理的选择。
目前流行的:.net; Java; VB; VC等等。
各种开发工具各有千秋,应根据具体应用来采用不同的工具。例如写MIS用PB/VB就很好,界面设计用VB/Delphi很不错,写系统软件,用C是最好的。对于初学者来说,先用一种可视化强的工具(如 VFP/VB/DELPHI)比较好,容易掌握,上手也快。但如果你想做一名真正的程序员,我建议你还是很有必要去精通C。
单从一个很功利的角度来说说。Delphi/ VB对于一般人来说学上几个月就可以上手了。易学的东西学的人肯定多。而对于C来说,由于它难掌握,学的人不火,但一旦你真正掌握了,你的竞争实力就比其他人强。现实中,C程序员的工资普遍高于其他程序员就是一个证明。
Vb/delphi 写界面的4000元
vc 写通讯DLL的5000到6000元
linux c/c++ 写服务器的7000到9000元
知道C/C++有前途了吧
5. 编译原理
如果你有足够的好奇的话,你现在应该想知道编译工具背后的故事,写代码时,你也许会奇怪,不同的程序语言为什么会有不同的语法,语义,语用;变量名为什么不能数字开头?计算机如何识别这些定义,运算,名字空间等等。这个时候看看《编译原理》多少能够给你一些解释。学习一点理论知识,加强你的理论功底,很多人都说科班出身的程序员比参加社会认证培训出来的程序员强的地方,就是理论功底强,系统思考能力强,时间长了就会体现出其优势。学习编译原理的另一个好处在于将来你学习其它开发工具时, 特别是学习不同底层语言的开发工具时,虽然它们的底层语言相关非常大,但是,除去这些语言的外衣,用编译原理层面来看它们,原来它们是如此相似。
6. 操作系统原理
你要知道,任何你做出来的软件都是运行在操作系统环境中的,操作系统为你的作品提供了什么样的环境呢? 这很重要,如果是DOS,它是以软中断的方式提供的,而Windows则是以一系列的API提供的。然后,你还可以知道,如何判断系统当前路径,内存管理机制、进程/线程调度、信号、内核对象管理、系统调用等,操作系统中如何处理死锁的 。
7. 现在让我们进入windows时代,windows下的开发工具
毕竟在微软统治的时代,大家还是识时务者为俊杰比较好,windows下的开发工具一定要重点掌握。 面向过程编程向面向对象转变,现在流行的开发工具VC,VB都差不多。
8. 数据库原理和开始数据库编程
现在做软件一个最基本的应用类型就是数据库编程,这是可能使你可以胜任很大一部分工作了。也就是说,如果你掌握了数据库之后,你就可以出去找工作了。很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,用SQL server作为起点吧,因为这东西使用起来挺方便的。写一个简单的单表输入程序,简单一点容易掌握。比如写一个客户资料录入程序。
10 英语
统计表明,全世界45个国家的官方语言是英语,1/3的人讲英语,75%的电视节目用英语播出,80%以上的科技信息用英文表达,几乎100%的软件源代码用英文写成。
学习英语真得很重要,且不说它是程序世界的主导语言,且不说它是计算机专业本科毕业生四年的必修课,且不说它是全世界程序高手们互相切磋寻求帮助的主要工具,它还是现在大多数用人单位的敲门砖,在这样一个开放性的社会里,如果你不懂英文,你是不是很难称得上是一个人才啊!
多读英文书。信息技术发展太快,而大部分的技术最先出现的时候都是英文版本的,要几个月以后才有中文版本的书出来,因此要想跟上步伐,一定要努力提高自己的英文水平,这样才能同步跟上信息技术。你可能担心自己的英语水平不行,没关系,刚开始多查字典。
很多东西看中文的译版不如原版的清晰,中文的可能越看越糊涂,可是英文却可以一目了然。再说对于一些最新的技术和动态文章,你哪里有时间去等到别人给你翻译出来再看啊,等你看到了,也快过时了。不懂英语,你真得很难算得上是一个人才!
到了这里,你没有发现你在和别人聊软件开发时,别人对你的态度有变化呢?
八、从现在开始,你要注意和别人交流了,因为从现在开始的很多东西,都是别人一指点就可以,而你自己看需要很久的。可以经常去一些论坛交流,都是很不错的,没有不上网的程序员,也没有不在网上取长补短的程序员。不过在问问题之前,自己一定要先努力尝试过,再给出自己的想法。动不动就问别人,自己水平得不到提高,别人也不再会回答你的问题。
九、程序员最喜欢的网站:
http://www.microsoft.com/china/msdn/default.asp 微软社区
(IBM SUN Borland orACLE BEA CISCO GOOGLE)
http://www.csdn.net 中国软件
www.china-pub.com 互动出版社
www.codestudy.net 程序员联盟
http://www.codeproject.com
www.soft.net 印度
msdn.microsoft.com/msdnmag
十、程序员的七种武器
第一种武器:开发工具
至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是我重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C++编写。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而本人对SUN公司的“网络即计算机”的概念相当欣赏,并相信JAVA即其相关的技术集JAVA One会成为未来的主流开发工具之一。其次,如果能掌握一种简便的可视化开发工具,如 VB,PowerBuilder,Delphi,C++ Builder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。
第二种武器:数据库
为什么数据库是如此重要?很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL, Postgres等。
第三种武器:操作系统
当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。Linux作为开发源码的操作系统,是一个很好的学习平台, Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。只有对操作系统有一定的了解后,你会发现自己上了一个新的台阶。
第四种武器:网络协议TCP/IP
在互联网如此普及的今天,如果您还没有对互联网的支撑协议 TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式,从最早的客户/服务器结构,到今天的 WEB Services,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,所以,深入掌握TCP/IP协议是非常必要的。至少,你需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。
第五种武器:DCOM/CORBA/XML/WEB Services
随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间件平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG(object Management group)支持的规范。程序员需要做的不仅仅是利用商业的开发平台来开发软件,而是要理解这些技术的初衷,即为什么需要这项技术,如果你能理解了这一点,再回头看这些技术的具体实现,就如庖丁解牛,迎刃而解。XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布计算的基石之一。
第六种武器:软件工程与CMM
现代大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员,一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能,如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。一句话可以概括我的看法:“创意无限,流程保证”。
第七种武器:强烈的好奇心
什么才是一个程序员的终极武器呢,那就是强烈的好奇心和学习精神。没有比强烈的好奇心和学习精神更好的武器了,它是程序员们永攀高峰的源泉和动力所在。
养成良好的习惯
现在很流行的一句话是“性格决定命运”,实际上可以这样理解,你的性格决定你的习惯,而习惯决定你的命运!中国有一句古话叫做:习惯成自然。同时,西方古希腊哲学家亚里士多德也说过:“优秀是一种习惯”,比如你每天早上坚持起来读书,就养成了读书的好习惯。那么懒惰也是一种习惯,不知道在座的各位又没有感觉到,当你睡觉越来越多的时候,你每天都想睡觉,越睡越懒,越坐越瘫。你习惯于10点睡觉7点起床,那就比习惯于11点睡觉6点起床的人少拥有两个小时,而据我所知很多好学习的人都是12点睡觉5点起床的,那你就又比他们每天少拥有4个小时了。
在一次次沉重的洗礼后,痛苦地改掉不利于自己发展的不良习惯,从而又一次超越自己。
一、适当背诵的习惯
新东方有个学员上中学的时候英语特别的差,总是倒数第一名,于是为了提高自己的英文水平他就决定开始背诵新概念英语,结果背到一半2册的时候,他成绩就明显提高了。高考后上了大学,他考上了一所比较著名的大学,他本来不想再背诵了,但是当他背给同学听的时候,其他同学都露出了羡慕的眼光,于是为了这种虚荣心,他就坚持背诵第三册第四册,背得滚瓜烂熟,你说上一句,他就能联出下一句,而且语音非常标准,因为他是模仿磁带背诵的。后来他去了美国的duke大学,第一个星期写文章,教授就把他叫过来说你的文章是剽窃的,他说:“我教了20年的书也没教出这么漂亮的文章来”,这个学生说我没办法证明我能写出这么漂亮的文章,但我告诉你我能背诵108篇文章,你想不想听,于是他就开始背诵,结果他没背完两篇,教授就哭了起来,为什么?这个教授想我教了20年书,居然一篇文章也没有背过,被中国学生背掉了,所以很难过。小时候背诵儿歌的故事,好的算法和好的代码可以重点看一看。
二、好为人师的习惯
把你认为你懂的东西讲出来吧,将给别人听,你会记忆得更加深刻。成就感是一点一点积累起来的,你考考别人bluetooth、ASP、PDA、CDMA是什么?如果他不懂,你就讲给他听,同时你自己的记忆也在加深。在现代这样一个向开放型过渡的社会里,你要想成功必须要善于表达自己,善于表达自己的观点和思想,并想办法说服别人,做市场作营销当老师当领导者,你要想证明自己有能力,那你就必须学会说出来呀、表达自己,塑造你个人的影响力,人与人之间的交往,就是意志力与意志力的较量,不是我影响你,就是你影响我。 现在最流行的职业:口力劳动者,教师、主持人、歌星、领导、美国总统、市场营销人员等等。
三、五官齐用的习惯
如果说你看到的东西,你会记住30%,那么你同时看和听就会记住50%,如果你既看又听,手里还在写、嘴里还在念念有词,你就会记住100%,如果日后有时间再复习两至三遍,你就永远不会忘记了。不在于你一次看了多长时间,重要的是你重复了多少次!
四、学习他人的习惯
给自己树立一个目标人物,最好从身边找到一个这样的榜样,你可以跟他交流,这样当你遇到困难的时候想一想你做敬佩的人会怎样做,你就有力量去征服它了。我常以为,这辈子如果能遇到一位好的指导老师讲是一件很幸运的事情。如果身边没有,我上面举了那么多的明星人物,从里面找一个你的努力目标吧!周奕的例子, mp3到光盘刻录、注册码、汇款方式。小的目标大的目标,向他看齐,现在时代,不是个人英雄主义的时代,你要学会从别人身上学习好的东西,拿为己用,你的任务只是在他的基础上能够提升。
五、见缝插针的习惯
时间像海绵里的水,看你怎样挤出来用,最有效的记忆规律不是你一次记忆多长时间,二是你多长时间重复记忆多少次。把你最喜欢的书随时带在身边,有空就看,不要让大脑闲置太久不用。背单词。
六、设立特定的目标并规定期限
把你的人生当成程序来设计,制定计划,并限制完成的日期,否则你总会被各种原因而耽误的。比如说参加gre考试,你永远也不敢肯定自己是否已经准备到最充分了,那么是不是就一直不考呢?一直在准备准备、复习复习,直到你筋疲力尽没有力气去考试了,一鼓作气、再而衰、三而竭,再说时间有限,你有多少时间可以浪费呢?
七、注重实践的习惯
无论你的书本知识掌握得多么牢固,你多么的清晰地理解你所学到的知识,你一到实践中去用,你会发现远远不是那么一回事。就像学习游泳,我学游泳的时候,请教了无数的游泳专家,模仿最标准的姿势,练气和技巧,我在陆地上不停的练习、练习、再练习,可是一下水,全完了,还是不会。 做程序员,那得练、不停的练习。最好的学习方法,就是自己写一段小程序。学习开车,我跟我男朋友学开车,每次他开车的时候都告诉我,怎样启动发动机,然后踩离合器,挂档,给油,刹车停车,我对开车的理论和技巧无比熟悉了,自信一定可以开车了,于是就尝试了一下,怎么样,结果不是不堪设想啊,动用了手刹。学员活动调查结果,最短时间内、最快学会编程、成为像你们一样的程序员!
一点学习经验
勤奋练习
把书上的例子输进电脑实践一遍,然后进行各种试验,再联想出各种相关的程序,自己写出来,并验证自己的结果。
读高手写的程序
有了一定的基础的时候,可以尝试去读高手写的程序,解读他们的程序的设计理念、风格、解决问题的思路等。我的程序就和英语一样,一个变量名就是一个句子!写程序很少加注释!
GNU/Linux为我们提供了一个巨大的源程序宝库,里面有各种各样的程序源代码,详细研究一套你感兴趣的系统,你的水平会得到大幅度提高。
不断提高
除了多加练习,你还需要多读书,特别是英文书。要适时的选择自己的主攻方向。
记笔记的习惯
随时拿着你的笔和笔记本,一接收到有用的信息或字急又好的想法就迅速记下来,抓住瞬息即逝的灵感。自己大脑里蹦出来的东西,才是自己的价值和骄傲。
学习它是个长期的过程,要不断的总结经验,我们学习就怕不能持之以恒。关于这点大家比我更清楚。一旦你学会了它,其他的语言就可以触类旁通了,例如:C+ +,C#,JAVA,VB,DELPHI......这些学起来就会比那些C语言基础不扎实的人要轻松得许多!学习的过程是一个不断积累的过程,只有学习的时间积累到一定的程度,才能发生质的提高。经过ACCP接近两年时间学习培养出来的软件工程师才是当前市场上亟需的专业软件人才,才意味着高薪和价值。
程序员的分类
第一种是初级,这种人数量最多,水平最低。喜欢看报纸上的编程小知识,秘籍和技巧大全之类的东西,这给了他广博的半瓶子醋的学问。这种程序员往往把编程这种脑力劳动变成敲键盘的体力劳动。把软件白领变成了软件蓝领。一些软件公司的Fans们往往拿着吓人的工资、做着吓人的项目,他们做出来的结果也往往很吓人。这些人组成了软件人才市场上的流动大军。
第二种是通常意义上的高手,他们有时候觉得自己十分了不起,有时候又觉得自己什么也不是。大部分时候,他没感觉,没激情,没爱,相当于一个血肉机器、曰之为“感情木头”。对于他们来说没有比coding更加有意义的事情了。
第三种是大师级的人物。在平凡的外表下,是一个无所不能的人。没有一个人和一条狗不尊敬他。他吐痰的样子也有人模仿。微软公司首席“建筑师”西蒙尼就是一个这样的人物。不过,他说“合作比天才更重要”
为什么软件市场上人才缺口这么大,每年20万之多,最缺乏的是熟练的程序员,而成千上万的毕业生又找不到工作。大家应该好好想一想:
软件人才是多了,但多的是没有实际工作经验、技术掌握的层次低的开发人员。这批人频繁地跳槽形成的求职大军营造出中国软件人才一大把的现象。
软件人才是少了,少的是具有丰富工作经验,技术扎实精深的工程师一类的开发人员。他们在哪里都是炙手可热的人物,求职大军里自然少有这样的人才。
劝每一个学员克服浮躁,踏踏实实地走好每一步!既然要学,就得耐心,你要告诉自己,要用一生的时间去学习它,你就不会急功近利了。
俞敏洪总结的成功的四种能力
一、忍受孤独的能力是成功者的必经之路
不管有多少人在你身边,父母督促你、朋友鼓励你,你要想达到成功最终都要靠你自己, God helps those who help themselves. 如果你想走出平凡,那么请你走进孤独!孤独的人是走得最快的人!去除浮躁,不要总想着你将来会怎样怎样,重要的是现在,自信心是一点一滴积累起来的。
二、忍受失败的能力是重新振作的源泉
生活中的失败实在是太多了,整个社会的竞争体系是一个金字塔式的结构,你可以说我与世无争,我知足者长乐,当然你可以这样做。可是社会不允许你这样做,因为他不会让你乐太久的,不进则退、优胜劣汰的市场机制会淘汰你,你会被社会抛在金字塔的最底层,你会感到整个金字塔的重量都压在了你的身上,你见不到阳光,你欣赏不到美丽的风景,你感到绝望。所以为了更好的活着,你就要振作、努力。好在机遇是平等的,在机会来临的时候,如果你有能力就会抓住它。
三、忍受屈辱的能力是成就大业的基础
你去新东安燕莎买东西,如果你没有钱,你会不会感受到售货员对你的态度不一样了呢?你去找工作,被人才市场上的人流挤得东倒西歪,北大清华的请到前面来,男生请到前面来,硕士博士请到前面来……, 你租房子被各种各样的房东赶着跑,一年到头不停的搬家,与小商贩为了几块钱讨价还价,你为了一点点的钱为老板四处奔波。这些都是屈辱,在你成功之前你必须忍受屈辱。
四、生理承受能力是成就大业的前提
做一件事情,你付出了别人所没有付出的,那你得到的也是别人所没有得到的。当我们已经开始做了某一件事情之后,我们则不宜由于我们现在认为另一件事更理想、更值得做而轻易改变我们的行动。 已经开始做了这件事,已经为此付出了心力;而且,究竟我们现在的认识正确还是过去的认识正确也还有待于检验;因为我们每一个人的生命和精力都是有限的!
对待学习的态度
没有压力就没有动力,要想办法给自己施加压力,平时多看书,多接触相关的知识,保持永远能够学习的惯性,当然专业知识要不断的研究和深入探索;当真正的压力到来时,你的学习效率才是最高的。用任务去学习,没有任务制造任务。
我们每天的工作就是接受问题,解决问题,只能就事而论了。主要态度如下:接受它、分析它、解决它、放下它;
克服学习中的冷热病,有了刺激就去学习,刺激过去了就放松,考试来了就紧张,考试过了就全忘。听了一场讲座或报告就意气风发,苦学三天三夜,然后就又找借口放松。
今天想干这个,明天想干那个,结果一事无成。
书到用时方恨少,事非经过不知难,书有未曾经我,读事无不可对人言
微 软:李开复的一封信
李开复是微软中国研究院的院长,是微软公司的副总裁,他在中国的各大高校里做演讲,他十分了解中国学生的心理,所以语重心长的给中国学生写了一封信:
中国的软件也还不很发达,我们每天耳濡目染的都是一些国外的名牌, MS/IBM/SONY/HP/CANNON/SUN/CISCO/INTEL/DELL/PHILIP/TOSHIBA/PENASONIC/EPSON,日本的产品现在已经打遍了全世界,他们非常地团结,他们叫做大和民族,同为亚洲东海岸的中华民族,为什么相差得这样悬殊,不要过多地去找历史的原因,想一想自己,你有没有把你自己的理想和目标同国家联系起来呢?
人生最重要的东西,进取、热情,信任,坚持,努力,自律,思考,感动,耐心,韧性、珍惜
…… ……
奔跑人生:在静谧的非洲大草原上,夕阳西下,一头狮子在沉思,明天当太阳升起的时候,我要奔跑,以追得上跑得最快的羚羊,此时,一只羚羊也在思考,明天当太阳升起的时候,我要奔跑,以躲过跑得最快的狮子的捕获,是的,无论你是狮子或者羚羊,明天,当太阳升起的时候你所要做的就是:毫不犹豫地向前奔跑!
一、我很羡慕在座的各位同学,因为你们是中国未来的程序员,而我不是,我一直很遗憾。
比尔盖茨曾经写过一本书叫做《未来之路》The road ahead, 那么今天我选择这样一个题目, the road ahead for programmer, 程序员的未来之路,也就是程序员的成功之路,希望大家未来也能够拥有像比尔盖茨一样的智慧的头脑和开一家像微软一样的公司。俗话说:心有多大,人生的舞台就有多大!
二、最近看了几篇csdn上的漫漫人生路专辑,很有感触,这里摘抄了几句,非常愿意和大家分享, 优秀程序员的心里话:
编程的原因是喜欢,不是为了别的。
从摸上电脑的那一刻,我就知道,这才是我的世界。
我一心一意地想作个程序员,尽管知道很累。
人真的不能轻言放弃,否则,失去的永远无法挽回!
生命是一种长期而持续的累积过程
所有成功的人都有一个不变的黄金法则: 积累!与 坚持!
大家听了这些话,不知道是怎样的想法呢?
提问,(1)你以前有没有读过这样的文章或有没有程序员跟你说过这样的感受?
(2)你怎样看待程序员这个职业?你有这种感觉吗?
上面的话其实都在说明一个道理,只有全身心地投入,写程序才会有意思,才会体会到其中的乐趣。
电脑的世界其实很大,程序员是活在自己想象的王国里。你可以想象到电脑里细微到每一个字节、每一个比特位的东西。通过电脑可以实现你的设想,解决你的问题。电脑远没有人那么复杂,如果程序写得好,你就可以和电脑处好关系,就可以指挥电脑干你想干的事。每每你坐在电脑面前,这个时候你是十足的主宰。
理想和梦想,比尔盖茨自从见到了计算机这个东西,就想象有一天个人计算机将是每一部办公桌面系统以及每一家庭的必备的工具,并为这一信念所指引,开始为个人计算机开发软件。
三、程序人生:可以把程序作为你的人生,也可以把你的人生当作程序来设计。
你的父母把你生下来,你的身体就是一台计算机,而上面运行的软件就是你的思想,这个软件版本高低功能的强弱,就看你的思想境界。思想软件需要你自己慢慢地去编写,可能父母教给了你最基本的语言,但是其他的高级语言和技能需要你长大以后要自己去学习,你能精通几门语言是你的本事。
第一步,随着你渐渐的长大,你开始有了需求,各种各样的需求,一开始你只是想要一块巧克力糖,一个新书包,一件新衣服,一辆崭新的自行车;后来你可能就想要一栋房子、一辆好车,你开始追求高质量的的物质生活、精神生活,你追求成功与快乐、还要求更好的发展,希望得到别人的尊敬,过一份有尊严的生活。需求很多很多,仔细分析你的需求,想想你最想要什么?怎样去实现它。
第二步,是很关键的一步,你要设计自己的人生程序。你首先要概要设计,你希望将来成为一个怎样的人,分几大步实现这个目标,少年、青年、成年、中年、老年。可能有求学程序、出国程序、恋爱程序、求职程序、事业程序、升职程序、结婚程序等等。概要设计后还要进行详细设计,你每个月每个星期做些什么,每个小模块里面有每个阶段的小的目标,小程序,这个星期读完一本书,下个月参加考试,然后写一篇论文等等,虽然说人生不可能完全规划出来,但是经过设计的人生远远比没有设计过的人有更有意义,好好的设计你的人生吧。
第三步,是编码和测试,你大多数时间都在不停的编码,同时还要不停的测试,编码的过程十分的辛苦,需要耐心和思考,你会觉得苦闷、烦躁不安、寂寞、痛苦、迷茫与无奈,但有些时候又十分开心、兴奋虚荣、骄傲和满足。编码的过程充分体现了人生琐碎与不如意和艰难,bug永远存在,人生也在不断的犯错误和不断地总结。就像一个程序不能编写得完美一样,人生也是不完美的,你不可能处处要求完美,很多地方需要同别人交流和互相借鉴。测试可以分为内部测试和外部测试,经过测试,你发现自己的错误,并想方设法改正它,然后成长起来。
第五步是集成和软件发版,你的设计的人生软件要拿到市场上去卖,能不能卖上好价钱,要看软件的功能和特色,性价比、看软件的包装,你有没有高人一等的杰出才能,你有没有于其它软件相比的竞争力,软件的价值,也就是你人生的价值。当然你可能是一个很高尚的人,编一些免费的软件,不做比尔盖茨,做linus torvols也挺好的,在自由的空气在互联网上空飘荡。看你自己的选择!不过这个世界好像更欢迎前者,linus住在拥挤的民用公寓里。而比尔盖茨住在自己像皇宫一样的豪宅里面当帝王,你首先要解决生存的问题,然后再去考虑其他得东东。
好好的谱写你的人生程序,人这一辈子真是要追求点什么才有意义!在谱写你的人生程序之前,首先看一看你的前辈们是怎样谱写他们的成功人生的!(慢一点儿)
四、国外著名程序员
冯•诺伊曼和阿兰•图灵计算机之父,图灵机是现代通用计算机的原型
小托马斯•沃森,蓝色巨人IBM创始人,迅速发展起来,40%的利润率
史蒂夫•乔布斯,苹果公司的总裁
肖克利博士因将其一生献给其钟爱的晶体管事业而名垂计算机史。
蒂姆•贝纳斯-李的最大贡献当属发明了WWW(Word Wide Web,万维网)。他也因此而以“Web之父”及大多数浏览器标准的监护人而闻名于世
最早干起计算机软件编程的不是盖茨,而是他的朋友和竞争对手加里•基尔代尔。 作为最伟大的程序设计员和设计家之一,他搞程序主要是出于缜密思维的雅兴,而不是为了赚钱。当时他开发了一个CP/M操作系统,比尔盖茨也自己写了一个dos操作系统,但是很不好用,远远比不上cp/m,所以 ibm公司就想把基尔的操作系统买下来,比尔盖茨这个时后表现出极大的热情,主动代表基尔去谈,于是谈来谈去就把基尔的操作系统谈成了自己的东西,人们都说,使用操作系统的是人都欠基尔一份情,而盖茨欠得最多。
比如盖茨赖以扬名立身并最终发家致富的Basic语言,是60年代达特默斯学院的两位教授创造的。而微软起飞的翅膀DOS,更是基尔代尔的“临摹品” 。Windows用的是苹果的技术,Excel其实是Lotus1-2-3的复制品, Web浏览器也是借助网景的创意开发的,Word纯粹是WordStar、WordPerfect的跟风......
微软屡屡实施“吸功大法”,博采众家之长,将许多其他公司创造的新技术新功能纳入自己的产品
但是,
不管盖茨使用了什么卑劣和霸道的经营手法,不管微软是不是违反了垄断法,不管法院将对它做出什么样的裁决,我们都应当感谢微软,感谢盖茨,是他们改变了我们的工作、学习和生活方式,是他们增加了我们对这个世界的更新、更深刻的认识,是他们让人类向科技和文明的高峰又迈进了一步。盖茨和微软,是工业经济时代向信息经济时代转轨过程中永远屹立的丰碑!
五、国内著名程序员:
求伯君 王江民 严援朝 吴晓军
鲍岳桥 刘 旭 王志东 朱崇君
王永民 史玉柱 刘积仁 周志农
丁 磊 王文京 刘迎建 池宇峰
王志东 周 奕 郭 为 刘 虎
六、中国有千千万万的程序员,从求伯军到王江民,从严援朝到王志东,从丁磊到雷军;世界上也有千千万万的程序员,从Linus到Andersen,从比尔.盖茨到杨致远,我一直在研究这些优秀的程序员所走过的道路。发现他们共同的特点是把软件开发当成自己的嗜好,并且把这种嗜好变成自己的事业,永远保持着好奇心、思考、执著(韧性)和耐心!市场需求决定着软件产业的发展方向。软件工程师不能就技术论技术,而是要就市场论技术。因为如果没有市场需求,没有地方可应用,即便是“天衣无缝”的技术也只能“孤芳自赏”。
好奇心:乐趣始终是工作的源动力。视工作的成就为人生最大享受,可能是这一代新富翁共同的特点。做自己喜欢做的事,而不是赚钱,才是他们的主要动力。对他们而言,在计算机屏幕前编写着一句句看似枯燥的程序代码,干得不分昼夜,是最大的乐趣。
思考:基尔代尔,作为最伟大的程序设计员和设计家之一。他搞程序主要是出于缜密思维的雅兴,而不是为了赚钱。在开发的过程中学会思考和远望,学会做创造性的工作。有思想的程序员生命力才能长久。给大家出两道思考题:软件的本质是什么?软件高手怎样定义?日后有机会大家一起讨论!
执著:执著是一切天才的“通病”, 王文京执著于财务软件,于是有了今天的用友软件。苏启强执著于软件服务,于是有了今天的连邦软件。我们也要执著于我的执著!阿甘的例子,只有偏执狂才能生存IBM(安迪•葛洛夫)
耐心:值得你一生去学习的东西!高手往往都是寂寞的,寂寞的人是走得最快的人。
一个人只要有韧性,刚开始写程序的时候,学得多的人写得好,到了后来,大家都上了一个层次,谁写的好只取决于这个人是否细心、有韧性、有灵性。关键是你是否能够出想法出产品,你的劳动是否能被社会承认,能为社会创造财富。
我要告诉大家的是,不论你今后是选择继续学习还是选择工作,都要始终把终身学习的观念树立起来,永远保持对新事物的好奇心,执著的去追求自己做钟爱的软件事业,学会思考,去除浮躁,有耐心的去写好每一行代码,那么不管今后你发展的怎么样,至少现在,你已经具备了一个优秀程序员所具备的基本素质,你的思想已经能够得到别人的尊重。
“专注与超越——这是人生每日的主题”
七、如何做一个成功的程序员?
下面是我和一些朋友谈过之后的小结,希望对于各位有所帮助。
1. 培养对软件开发的兴趣。
因为不喜欢,所以才感觉的痛苦,因为痛苦,所以很难有大的发展,因为一直没有大的进步,所以,更加不喜欢。如此恶性循环。而正确的应该是,先做到对于软件开发感兴趣,如何做呢?首先你要产生对于软件本身的好奇心,做这项生活的人,多数有这方面的爱好,也能感受到其中的乐趣,否则就会成天痛苦不堪。
2. 第二步,其实更简单,给自己进入软件行业一个理由!
然后,写下来,放在一个适当的地方,不要随便看到,但是,永远不要忘掉。
为什么需要这个理由?原因很简单。当我听一些朋友聊他的苦闷时,总觉得对于自己选择软件行业是一个错误,如何的不好。我就问他,你当初为什么选择软件这一行?想了半天,他才回答我。我说,你在犹豫 ,就证明你已经淡忘了当初你为什么决定入行了。关于选择,应该说人生无处不在抉择,一旦选择了就不会放弃。既然选择了就不要轻易后悔,执著的走下去,因为你一后悔,任何选择和决定都是错误的。永远不要把时间浪费到对往事后悔的追忆上。
如果你一直记得入行的理由,那么,在做软件开发这份寂寞的路上,你永远不会被寂寞击倒。成功就在你坚持的那一刻来临。
3. 一切从dos开始。
也许你觉得奇怪,为什么要从dos开始,因为这里我是说你要成为一个成功的软件程序员,而不是仅仅是一个程序员,既然你要成功,所以,你要厚积薄发,所以,从dos开始是有道理的。因为从dos开始,你就知道,要想删除一个文件不是右键点一下,然后,选择删除菜单,可能还要点一个确定,就一切OK了,你可以要执行一下del指令,然后,还要输入一些参数如文件名,可能还需要路径,知道这两个区别有什么用呢?当然有用,你不会被漂亮的窗口界面(所见即所得的精美画面)所迷惑。 当你现在才开始学习的时候,挡住窗口界面的引诱,或许你会更容易成功。
你可以猜测出它们大概处理的过程是什么。
4. 开始你选择的工具决定了你将来的发展水平
世界上流行的程序语言有许多种,这种情况将来也不会改变,因为这是由我们所面临的需要解决的计算问题的五彩缤纷所决定的。任何语言都不可能是最完美的工具,不可能在处理任何问题时都是最锐利的宝剑。“为完成目的而不择工具”; 一个计算机工作者需要理解掌握多种程序设计语言,只有这样,在遇到具体问题时才可能做出更合理的选择。
目前流行的:.net; Java; VB; VC等等。
各种开发工具各有千秋,应根据具体应用来采用不同的工具。例如写MIS用PB/VB就很好,界面设计用VB/Delphi很不错,写系统软件,用C是最好的。对于初学者来说,先用一种可视化强的工具(如 VFP/VB/DELPHI)比较好,容易掌握,上手也快。但如果你想做一名真正的程序员,我建议你还是很有必要去精通C。
单从一个很功利的角度来说说。Delphi/ VB对于一般人来说学上几个月就可以上手了。易学的东西学的人肯定多。而对于C来说,由于它难掌握,学的人不火,但一旦你真正掌握了,你的竞争实力就比其他人强。现实中,C程序员的工资普遍高于其他程序员就是一个证明。
Vb/delphi 写界面的4000元
vc 写通讯DLL的5000到6000元
linux c/c++ 写服务器的7000到9000元
知道C/C++有前途了吧
5. 编译原理
如果你有足够的好奇的话,你现在应该想知道编译工具背后的故事,写代码时,你也许会奇怪,不同的程序语言为什么会有不同的语法,语义,语用;变量名为什么不能数字开头?计算机如何识别这些定义,运算,名字空间等等。这个时候看看《编译原理》多少能够给你一些解释。学习一点理论知识,加强你的理论功底,很多人都说科班出身的程序员比参加社会认证培训出来的程序员强的地方,就是理论功底强,系统思考能力强,时间长了就会体现出其优势。学习编译原理的另一个好处在于将来你学习其它开发工具时, 特别是学习不同底层语言的开发工具时,虽然它们的底层语言相关非常大,但是,除去这些语言的外衣,用编译原理层面来看它们,原来它们是如此相似。
6. 操作系统原理
你要知道,任何你做出来的软件都是运行在操作系统环境中的,操作系统为你的作品提供了什么样的环境呢? 这很重要,如果是DOS,它是以软中断的方式提供的,而Windows则是以一系列的API提供的。然后,你还可以知道,如何判断系统当前路径,内存管理机制、进程/线程调度、信号、内核对象管理、系统调用等,操作系统中如何处理死锁的 。
7. 现在让我们进入windows时代,windows下的开发工具
毕竟在微软统治的时代,大家还是识时务者为俊杰比较好,windows下的开发工具一定要重点掌握。 面向过程编程向面向对象转变,现在流行的开发工具VC,VB都差不多。
8. 数据库原理和开始数据库编程
现在做软件一个最基本的应用类型就是数据库编程,这是可能使你可以胜任很大一部分工作了。也就是说,如果你掌握了数据库之后,你就可以出去找工作了。很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,用SQL server作为起点吧,因为这东西使用起来挺方便的。写一个简单的单表输入程序,简单一点容易掌握。比如写一个客户资料录入程序。
10 英语
统计表明,全世界45个国家的官方语言是英语,1/3的人讲英语,75%的电视节目用英语播出,80%以上的科技信息用英文表达,几乎100%的软件源代码用英文写成。
学习英语真得很重要,且不说它是程序世界的主导语言,且不说它是计算机专业本科毕业生四年的必修课,且不说它是全世界程序高手们互相切磋寻求帮助的主要工具,它还是现在大多数用人单位的敲门砖,在这样一个开放性的社会里,如果你不懂英文,你是不是很难称得上是一个人才啊!
多读英文书。信息技术发展太快,而大部分的技术最先出现的时候都是英文版本的,要几个月以后才有中文版本的书出来,因此要想跟上步伐,一定要努力提高自己的英文水平,这样才能同步跟上信息技术。你可能担心自己的英语水平不行,没关系,刚开始多查字典。
很多东西看中文的译版不如原版的清晰,中文的可能越看越糊涂,可是英文却可以一目了然。再说对于一些最新的技术和动态文章,你哪里有时间去等到别人给你翻译出来再看啊,等你看到了,也快过时了。不懂英语,你真得很难算得上是一个人才!
到了这里,你没有发现你在和别人聊软件开发时,别人对你的态度有变化呢?
八、从现在开始,你要注意和别人交流了,因为从现在开始的很多东西,都是别人一指点就可以,而你自己看需要很久的。可以经常去一些论坛交流,都是很不错的,没有不上网的程序员,也没有不在网上取长补短的程序员。不过在问问题之前,自己一定要先努力尝试过,再给出自己的想法。动不动就问别人,自己水平得不到提高,别人也不再会回答你的问题。
九、程序员最喜欢的网站:
http://www.microsoft.com/china/msdn/default.asp 微软社区
(IBM SUN Borland orACLE BEA CISCO GOOGLE)
http://www.csdn.net 中国软件
www.china-pub.com 互动出版社
www.codestudy.net 程序员联盟
http://www.codeproject.com
www.soft.net 印度
msdn.microsoft.com/msdnmag
十、程序员的七种武器
第一种武器:开发工具
至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是我重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C++编写。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而本人对SUN公司的“网络即计算机”的概念相当欣赏,并相信JAVA即其相关的技术集JAVA One会成为未来的主流开发工具之一。其次,如果能掌握一种简便的可视化开发工具,如 VB,PowerBuilder,Delphi,C++ Builder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。
第二种武器:数据库
为什么数据库是如此重要?很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL, Postgres等。
第三种武器:操作系统
当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。Linux作为开发源码的操作系统,是一个很好的学习平台, Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。只有对操作系统有一定的了解后,你会发现自己上了一个新的台阶。
第四种武器:网络协议TCP/IP
在互联网如此普及的今天,如果您还没有对互联网的支撑协议 TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式,从最早的客户/服务器结构,到今天的 WEB Services,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,所以,深入掌握TCP/IP协议是非常必要的。至少,你需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。
第五种武器:DCOM/CORBA/XML/WEB Services
随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间件平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG(object Management group)支持的规范。程序员需要做的不仅仅是利用商业的开发平台来开发软件,而是要理解这些技术的初衷,即为什么需要这项技术,如果你能理解了这一点,再回头看这些技术的具体实现,就如庖丁解牛,迎刃而解。XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布计算的基石之一。
第六种武器:软件工程与CMM
现代大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员,一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能,如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。一句话可以概括我的看法:“创意无限,流程保证”。
第七种武器:强烈的好奇心
什么才是一个程序员的终极武器呢,那就是强烈的好奇心和学习精神。没有比强烈的好奇心和学习精神更好的武器了,它是程序员们永攀高峰的源泉和动力所在。
养成良好的习惯
现在很流行的一句话是“性格决定命运”,实际上可以这样理解,你的性格决定你的习惯,而习惯决定你的命运!中国有一句古话叫做:习惯成自然。同时,西方古希腊哲学家亚里士多德也说过:“优秀是一种习惯”,比如你每天早上坚持起来读书,就养成了读书的好习惯。那么懒惰也是一种习惯,不知道在座的各位又没有感觉到,当你睡觉越来越多的时候,你每天都想睡觉,越睡越懒,越坐越瘫。你习惯于10点睡觉7点起床,那就比习惯于11点睡觉6点起床的人少拥有两个小时,而据我所知很多好学习的人都是12点睡觉5点起床的,那你就又比他们每天少拥有4个小时了。
在一次次沉重的洗礼后,痛苦地改掉不利于自己发展的不良习惯,从而又一次超越自己。
一、适当背诵的习惯
新东方有个学员上中学的时候英语特别的差,总是倒数第一名,于是为了提高自己的英文水平他就决定开始背诵新概念英语,结果背到一半2册的时候,他成绩就明显提高了。高考后上了大学,他考上了一所比较著名的大学,他本来不想再背诵了,但是当他背给同学听的时候,其他同学都露出了羡慕的眼光,于是为了这种虚荣心,他就坚持背诵第三册第四册,背得滚瓜烂熟,你说上一句,他就能联出下一句,而且语音非常标准,因为他是模仿磁带背诵的。后来他去了美国的duke大学,第一个星期写文章,教授就把他叫过来说你的文章是剽窃的,他说:“我教了20年的书也没教出这么漂亮的文章来”,这个学生说我没办法证明我能写出这么漂亮的文章,但我告诉你我能背诵108篇文章,你想不想听,于是他就开始背诵,结果他没背完两篇,教授就哭了起来,为什么?这个教授想我教了20年书,居然一篇文章也没有背过,被中国学生背掉了,所以很难过。小时候背诵儿歌的故事,好的算法和好的代码可以重点看一看。
二、好为人师的习惯
把你认为你懂的东西讲出来吧,将给别人听,你会记忆得更加深刻。成就感是一点一点积累起来的,你考考别人bluetooth、ASP、PDA、CDMA是什么?如果他不懂,你就讲给他听,同时你自己的记忆也在加深。在现代这样一个向开放型过渡的社会里,你要想成功必须要善于表达自己,善于表达自己的观点和思想,并想办法说服别人,做市场作营销当老师当领导者,你要想证明自己有能力,那你就必须学会说出来呀、表达自己,塑造你个人的影响力,人与人之间的交往,就是意志力与意志力的较量,不是我影响你,就是你影响我。 现在最流行的职业:口力劳动者,教师、主持人、歌星、领导、美国总统、市场营销人员等等。
三、五官齐用的习惯
如果说你看到的东西,你会记住30%,那么你同时看和听就会记住50%,如果你既看又听,手里还在写、嘴里还在念念有词,你就会记住100%,如果日后有时间再复习两至三遍,你就永远不会忘记了。不在于你一次看了多长时间,重要的是你重复了多少次!
四、学习他人的习惯
给自己树立一个目标人物,最好从身边找到一个这样的榜样,你可以跟他交流,这样当你遇到困难的时候想一想你做敬佩的人会怎样做,你就有力量去征服它了。我常以为,这辈子如果能遇到一位好的指导老师讲是一件很幸运的事情。如果身边没有,我上面举了那么多的明星人物,从里面找一个你的努力目标吧!周奕的例子, mp3到光盘刻录、注册码、汇款方式。小的目标大的目标,向他看齐,现在时代,不是个人英雄主义的时代,你要学会从别人身上学习好的东西,拿为己用,你的任务只是在他的基础上能够提升。
五、见缝插针的习惯
时间像海绵里的水,看你怎样挤出来用,最有效的记忆规律不是你一次记忆多长时间,二是你多长时间重复记忆多少次。把你最喜欢的书随时带在身边,有空就看,不要让大脑闲置太久不用。背单词。
六、设立特定的目标并规定期限
把你的人生当成程序来设计,制定计划,并限制完成的日期,否则你总会被各种原因而耽误的。比如说参加gre考试,你永远也不敢肯定自己是否已经准备到最充分了,那么是不是就一直不考呢?一直在准备准备、复习复习,直到你筋疲力尽没有力气去考试了,一鼓作气、再而衰、三而竭,再说时间有限,你有多少时间可以浪费呢?
七、注重实践的习惯
无论你的书本知识掌握得多么牢固,你多么的清晰地理解你所学到的知识,你一到实践中去用,你会发现远远不是那么一回事。就像学习游泳,我学游泳的时候,请教了无数的游泳专家,模仿最标准的姿势,练气和技巧,我在陆地上不停的练习、练习、再练习,可是一下水,全完了,还是不会。 做程序员,那得练、不停的练习。最好的学习方法,就是自己写一段小程序。学习开车,我跟我男朋友学开车,每次他开车的时候都告诉我,怎样启动发动机,然后踩离合器,挂档,给油,刹车停车,我对开车的理论和技巧无比熟悉了,自信一定可以开车了,于是就尝试了一下,怎么样,结果不是不堪设想啊,动用了手刹。学员活动调查结果,最短时间内、最快学会编程、成为像你们一样的程序员!
一点学习经验
勤奋练习
把书上的例子输进电脑实践一遍,然后进行各种试验,再联想出各种相关的程序,自己写出来,并验证自己的结果。
读高手写的程序
有了一定的基础的时候,可以尝试去读高手写的程序,解读他们的程序的设计理念、风格、解决问题的思路等。我的程序就和英语一样,一个变量名就是一个句子!写程序很少加注释!
GNU/Linux为我们提供了一个巨大的源程序宝库,里面有各种各样的程序源代码,详细研究一套你感兴趣的系统,你的水平会得到大幅度提高。
不断提高
除了多加练习,你还需要多读书,特别是英文书。要适时的选择自己的主攻方向。
记笔记的习惯
随时拿着你的笔和笔记本,一接收到有用的信息或字急又好的想法就迅速记下来,抓住瞬息即逝的灵感。自己大脑里蹦出来的东西,才是自己的价值和骄傲。
学习它是个长期的过程,要不断的总结经验,我们学习就怕不能持之以恒。关于这点大家比我更清楚。一旦你学会了它,其他的语言就可以触类旁通了,例如:C+ +,C#,JAVA,VB,DELPHI......这些学起来就会比那些C语言基础不扎实的人要轻松得许多!学习的过程是一个不断积累的过程,只有学习的时间积累到一定的程度,才能发生质的提高。经过ACCP接近两年时间学习培养出来的软件工程师才是当前市场上亟需的专业软件人才,才意味着高薪和价值。
程序员的分类
第一种是初级,这种人数量最多,水平最低。喜欢看报纸上的编程小知识,秘籍和技巧大全之类的东西,这给了他广博的半瓶子醋的学问。这种程序员往往把编程这种脑力劳动变成敲键盘的体力劳动。把软件白领变成了软件蓝领。一些软件公司的Fans们往往拿着吓人的工资、做着吓人的项目,他们做出来的结果也往往很吓人。这些人组成了软件人才市场上的流动大军。
第二种是通常意义上的高手,他们有时候觉得自己十分了不起,有时候又觉得自己什么也不是。大部分时候,他没感觉,没激情,没爱,相当于一个血肉机器、曰之为“感情木头”。对于他们来说没有比coding更加有意义的事情了。
第三种是大师级的人物。在平凡的外表下,是一个无所不能的人。没有一个人和一条狗不尊敬他。他吐痰的样子也有人模仿。微软公司首席“建筑师”西蒙尼就是一个这样的人物。不过,他说“合作比天才更重要”
为什么软件市场上人才缺口这么大,每年20万之多,最缺乏的是熟练的程序员,而成千上万的毕业生又找不到工作。大家应该好好想一想:
软件人才是多了,但多的是没有实际工作经验、技术掌握的层次低的开发人员。这批人频繁地跳槽形成的求职大军营造出中国软件人才一大把的现象。
软件人才是少了,少的是具有丰富工作经验,技术扎实精深的工程师一类的开发人员。他们在哪里都是炙手可热的人物,求职大军里自然少有这样的人才。
劝每一个学员克服浮躁,踏踏实实地走好每一步!既然要学,就得耐心,你要告诉自己,要用一生的时间去学习它,你就不会急功近利了。
俞敏洪总结的成功的四种能力
一、忍受孤独的能力是成功者的必经之路
不管有多少人在你身边,父母督促你、朋友鼓励你,你要想达到成功最终都要靠你自己, God helps those who help themselves. 如果你想走出平凡,那么请你走进孤独!孤独的人是走得最快的人!去除浮躁,不要总想着你将来会怎样怎样,重要的是现在,自信心是一点一滴积累起来的。
二、忍受失败的能力是重新振作的源泉
生活中的失败实在是太多了,整个社会的竞争体系是一个金字塔式的结构,你可以说我与世无争,我知足者长乐,当然你可以这样做。可是社会不允许你这样做,因为他不会让你乐太久的,不进则退、优胜劣汰的市场机制会淘汰你,你会被社会抛在金字塔的最底层,你会感到整个金字塔的重量都压在了你的身上,你见不到阳光,你欣赏不到美丽的风景,你感到绝望。所以为了更好的活着,你就要振作、努力。好在机遇是平等的,在机会来临的时候,如果你有能力就会抓住它。
三、忍受屈辱的能力是成就大业的基础
你去新东安燕莎买东西,如果你没有钱,你会不会感受到售货员对你的态度不一样了呢?你去找工作,被人才市场上的人流挤得东倒西歪,北大清华的请到前面来,男生请到前面来,硕士博士请到前面来……, 你租房子被各种各样的房东赶着跑,一年到头不停的搬家,与小商贩为了几块钱讨价还价,你为了一点点的钱为老板四处奔波。这些都是屈辱,在你成功之前你必须忍受屈辱。
四、生理承受能力是成就大业的前提
做一件事情,你付出了别人所没有付出的,那你得到的也是别人所没有得到的。当我们已经开始做了某一件事情之后,我们则不宜由于我们现在认为另一件事更理想、更值得做而轻易改变我们的行动。 已经开始做了这件事,已经为此付出了心力;而且,究竟我们现在的认识正确还是过去的认识正确也还有待于检验;因为我们每一个人的生命和精力都是有限的!
对待学习的态度
没有压力就没有动力,要想办法给自己施加压力,平时多看书,多接触相关的知识,保持永远能够学习的惯性,当然专业知识要不断的研究和深入探索;当真正的压力到来时,你的学习效率才是最高的。用任务去学习,没有任务制造任务。
我们每天的工作就是接受问题,解决问题,只能就事而论了。主要态度如下:接受它、分析它、解决它、放下它;
克服学习中的冷热病,有了刺激就去学习,刺激过去了就放松,考试来了就紧张,考试过了就全忘。听了一场讲座或报告就意气风发,苦学三天三夜,然后就又找借口放松。
今天想干这个,明天想干那个,结果一事无成。
书到用时方恨少,事非经过不知难,书有未曾经我,读事无不可对人言
微 软:李开复的一封信
李开复是微软中国研究院的院长,是微软公司的副总裁,他在中国的各大高校里做演讲,他十分了解中国学生的心理,所以语重心长的给中国学生写了一封信:
中国的软件也还不很发达,我们每天耳濡目染的都是一些国外的名牌, MS/IBM/SONY/HP/CANNON/SUN/CISCO/INTEL/DELL/PHILIP/TOSHIBA/PENASONIC/EPSON,日本的产品现在已经打遍了全世界,他们非常地团结,他们叫做大和民族,同为亚洲东海岸的中华民族,为什么相差得这样悬殊,不要过多地去找历史的原因,想一想自己,你有没有把你自己的理想和目标同国家联系起来呢?
人生最重要的东西,进取、热情,信任,坚持,努力,自律,思考,感动,耐心,韧性、珍惜
…… ……
奔跑人生:在静谧的非洲大草原上,夕阳西下,一头狮子在沉思,明天当太阳升起的时候,我要奔跑,以追得上跑得最快的羚羊,此时,一只羚羊也在思考,明天当太阳升起的时候,我要奔跑,以躲过跑得最快的狮子的捕获,是的,无论你是狮子或者羚羊,明天,当太阳升起的时候你所要做的就是:毫不犹豫地向前奔跑!