作者:阿蒙 来源:CSDN博客   酷勤网收集 2007-11-25

摘要
  高手是一个哗众取宠的词汇,世上本来并没有高手,说的人多了也就有了高手,我看程序员只有老少之分,并无高低之分,比如偶就是一个老程序员,因此作为程序员,我们追求的应该是写出有用有价值的软件产品。

首先声明,偶不是高手,以免引起不必要的冷嘲热讽,呵呵。
 
估计很多的朋友在很小的时候就看过奥斯特洛夫斯基同学的《钢铁是怎样炼成的》,偶小时候在农村混,看的最多是各式各样的牛屎以及长得极象牛屎的山头,这些所谓的名著偶直到大学才有机会拜读,但说实话,偶是个俗人,还是更喜欢看一些痞子写的文字或带COLOR的BOOKS。偶之所以写这么个主题,主要是太多的朋友给偶发EMAIL或在VCHOME.NET提问,偶其实也与大家一样为生活而奔波,因此没有时间一一作答,在这作一次回答,还望海涵。
 
高手是一个哗众取宠的词汇,世上本来并没有高手,说的人多了也就有了高手,我看程序员只有老少之分,并无高低之分,比如偶就是一个老程序员,因此作为程序员,我们追求的应该是写出有用有价值的软件产品,呵呵,废话少说,切入正题吧!
 
1.迷恋 + 热情;
 
爱因斯坦同学说:兴趣是最好的老师,这就是说一个人一旦对某事物有了浓厚的兴趣,就会主动去求知、去探索、去实践,并在求知、探索、实践中产生愉快的情绪和体验,并不断地激发学习的动力,这种说法很美妙,众所周知,程序员是一种有点乏味有点枯燥有点辛苦的技术工作,要能坚持下去,并能做得很好,没有迷恋没有热情是很难很难的,偶就很迷恋,迷恋C++,迷恋computer,迷恋network,偶迷恋for、if、while、case等等就如同歌手迷恋五线谱的小蝌蚪一样,我觉得程序代码真是无所不能,简简单单的几行代码就能实现丰富多彩的功能,你难道不觉得很NB吗?呵呵,因此,作为一名老程序员,我建议年轻的程序员们一定要对coding保持迷恋保持热情,那样我们才有可能做得更好。
 
2.在项目中磨练与成长;
 
很多朋友经常问:他看了很多书,也做了较多的练习,但感觉水平并没有得到提高,这是为什么?呵呵,我觉得每个人不同,有些程序员通过看书,也能学到很多东东,但我个人觉得最好的提高方法,还是要参与到某一项目中去锻炼,从设计到开发到测试到维护一整套的磨练流程,项目是有周期的,有周期就有压力,有压力才能不分昼夜地去学习与实现,学习的效果也会很显著与深刻。
 
3.数不胜数的加班;
 
偶这里所讲的加班并不单指工作上的OT(即overtime),而更多的是学习上的OT,偶认为程序员学习的黄金时间在毕业后的前三年,这三年你如果有一个好的环境好的团队好的上司,再加上你的勤奋努力,三年后你将有一个质的飞跃,当然如果不幸,环境不好,团队不好,上司不好,那就只能靠你自已了,我的哲学是:人的一生70%靠自已,因此你要有坚持不懈的精神,保持一颗积极上进的心,偶的那三年基本上每天都在公司里呆到22点,即使回宿舍也是看书学习,偶比较笨,但可贵的是偶知道“笨鸟先飞”、“勤能补拙”诸如此类的大道理。没有人愿意平平庸庸地度过这一生,你努力了,你就成功了。
 
4.正确的学习方法;
 
也有很多朋友问学习方法,这是很让偶头痛的问题,其实我之前的文章中也有总结我的学方法:“简单总结一下我的学习方法,笔者是按以下的顺序来学习的:C/C++ ――> SDK ――> MFC ――>COM/DCOM/ATL/COM+,当然这个顺序的前提是你已经具备了一定的数学,数据结构及算法,操作系统等基础知识,学好C++是很关键的,尤其要理解清楚OOP思想,养成以面向对象方法去思考问题解决问题的习惯;学习SDK的目的主要是理解Windows OS的内部机制比如内存管理,多任务及多线程等,特别要透彻地理解Windows的消息机制;有了前面的知识,学起MFC就容易了,有些网友经常与我聊,说他看了一年多的书,也写一些程序,但对MFC还是一头雾水,我想主要的原因还是学习不够系统性,很多知识及经验是循序渐进的,千万不要幻想一步登天,要有持之以恒的学习及实践精神。” 我并不敢说,我的方法是正确的,只能说对我而言是合适的,作为老一辈的程序员,我们有幸学过与写过很多纯windows的程序,我依然记得当年用vc++1.5写的程序,都是用SDK,要写的代码很多很多,那是个美好的年代,我怀念它。
 
5.失败--->打击--->努力--->成功--->成就感;
 
刚刚做程序员时,由于技术水平有限,经验也欠缺,因此经常会犯一些错误,也写了很多失败的程序,然后被上司骂得狗血淋头,那时非常地有挫折感,决定奋发图强,后来慢慢地长大,能写一些成功的程序,受到一些表扬,那成就感真是爽呆了!这种过程经历得越多越好,我们的抗压能力会不断地提高,脸皮也会越来越厚,呵呵,因此,奉劝各位程序员如果你暂时遇到挫折与失败,不要灰心丧气,不要退缩,而要奋起直追,学好了,以后再去骂其它的初级程序员,呵呵,开玩笑的。
 
6.敢想+能说+会写;
 
中国的教育体制造就了太多太多的五好青年,循规蹈矩,逆来顺受,前怕狼后怕虎,缺乏创新意识,这个社会什么都不缺,就缺敢想敢做的人。
 
能说对于程序员来讲,确实是要求过高,但如果你想走上较高的层次,偶认为这一点是很重要的,因此我们需要寻找各种各样的机会来锻炼这方面的能力。
 
会写就是能写出漂亮的方案文档,能针对不同的客户写出不同的文档,比如技术文档,商务文档,销售文档等。
 
7.善于利用各种资源;
 
这一点不用多说了,现在的资源很丰富,善于运用各种帮助文档,另外,互联网上的资料应有尽有,要学会GOOGLE与使用。
 
8.细节决定高手。
 
老子说了:天下难事,必做于易;天下大事,必做于细。这句话精辟地指出了想成就一番大事业,必须从简单的事情做起,从细微之处入手。随着现代社会分工的越来越细和专业化程度的越来越高,一个要求精细化的管理和生活时代已经到来,亲爱的程序员朋友,请你注意了,编程越来越容易了,可恶的微软与比哥一天到晚都在想如何让我们变得更傻,越来越依赖于他们的工具,在未来,也许什么人都能很容易地做个程序员,到那时,如何来评价你的能力?-----细节,这个行业,最终和最高的竞争层面就是细节的竞争。因此建议您把小事情做到位,养成良好的习惯,具体点说:就是写好每一份注释,在提交文档之前要一而再再而三地检查,代码要简洁干净,每一个算法都要高效,把胡子剃干净,别扣错钮扣,穿整洁的衣服,讲话注意文明礼貌,红灯停绿灯行,不随地丢垃圾.......呵呵,离题了。
 
呵呵,终于写完了,新年第一篇,希望大家多给面子,给点阳光,让我灿烂灿烂,给点口水,让我泛滥泛滥,给点温暖,让我腐烂腐烂,给个眉眼,让我陶醉陶醉。

来自:http://blog.csdn.net/harrymeng/archive/2007/01/05/1474987.aspx

评论

#   azjex 发表于2007-01-05 17:59:55  IP: 211.83.254.*
很狭隘的程序员!
SDK我觉得应该是个很泛化的概念,software develop kit,应该指各种开发包,而不单单是 windows提供给你的API。

程序员成长也不见得需要学MFC,毕竟在2007这么个年代了,比它优秀好多倍framework多的去了~~Qt, AWT, Swing,....

#   vcnewer 发表于2007-01-05 18:35:38  IP: 221.219.117.*

呵呵,VC高手

#   zhmnsw 发表于2007-01-05 18:37:52  IP: 218.12.29.*

再补充几点:
手懒,脑勤:
同样的代码不要超过1次的写,善于利用现有资源以及善于重构代码。同时善于发现和利用现有的资源

用机器的方式思考问题,但用人的方式解决问题:
这点很重要,也是程序员存在的意义。身边有很多程序员,要么太机械化,把程序写的很死板;要么就太“幼稚”,或者高估计算机的智商,把需求可以简单的说成:点下鼠标出个结果。这两点都不能过的。程序员既要跟机器交流,又要跟人交流,所以说程序设计是门艺术,一点也不为过。

细节(补充):
细节还表现在你程序跟用户的交互、代码的容错、重构的方便性以及每次变更的记录等方面。说实话,程序员不是那么好当的,大尾巴狼还是先仔细考虑一下吧。

加班(补充):
楼主所说的更进一层意思就是,IT界要在建立自己思想体系的基础上,尽量保持信息的更新,不论是技术方向还是技术知识,所以,学习不见得要加班,关键是有个学习的意识。

#   zhmnsw 发表于2007-01-05 18:40:01  IP: 218.12.29.*

另外,语言只是你的肉体,而不是你的灵魂


#   harrymeng 发表于2007-01-05 21:30:57  IP:

呵呵,实际上,这些只是我个人的观点, 我就是这么走过来的,但并代表大家就要这么去学, 我从不认为自已是高手,相反我还有好多好多的东东要学习与提高.

我觉得zhmnsw 的评论就很好, 很有见地也有深度,呵呵,希望多多交流.

   carlkkx 发表于2007-01-05 22:14:19  IP: 222.67.7.*

Swing是个优秀的框架!

#   carlkkx 发表于2007-01-05 22:15:03  IP: 222.67.7.*

我欣赏优雅和一致的设计,一致性反应了设计者极高的抽象水平,优秀的概念表达.
  
  我们现在来看MFC和swing.
  MFC是如何表达GUI的,首先对于GUI元素没有一个共性抽象,使得无法进行任意的递归组合.
  MFC认为 GUI元素是原子的,GUI元素自身提供了设置它属性的API基本决定了这个GUI元素给外部定制它的能力.低灵活性!
  
  MFC认为GUI元素自身应该处理事件,并且使用消息映射来实现这一点.
  所以通常如果你要处理某个GUI元素的事件,你需要写一个继承这个GUI元素的类.
  但殊不知很多情况下事件处理者和GUI元素是分离的!
  
  MFC的MVC是实现是不一致的,他并没有将这一理念贯穿于整个框架.而只是单独搞了个doc/view.
  
  所以如果我以今天的思路来看MFC,我觉得它对GUI的抽象是糟糕的,差劲概念表达.
  

#   carlkkx 发表于2007-01-05 22:16:16  IP: 222.67.7.*

MFC认为 GUI元素是原子的,GUI元素自身提供了设置它属性的API基本决定了这个GUI元素给外部定制它的能力.低灵活性!

——————————————————————————
这一条也使很多人养成了这样一个习惯,就是将数据通过GUI提供的API填充到GUI组件的主动思路.
  
  swing的优秀设计在于它鼓励你设计自己的模型,改变你老是想把数据主动填装到GUI组件的思路,而是反过来GUI组件监听模型的变化.

#   carlkkx 发表于2007-01-05 22:16:32  IP: 222.67.7.*

swing的组件都是四两拨千斤,模型和绘图都是分离的,如表格
  JTable 就有TableModel ---->JTable<-----TableUI,从结构来说JTable完全扮演着控制器的角色.从API的使用者角度来说它是一个MVC体系的外观,让人想起了设计模式中的外观模式.
  
  因为swing中一个GUI元素就是一个MVC体系,而不原子的.
  除此之外还可以为组件自定义renderer/editor.

#   carlkkx 发表于2007-01-05 22:20:01  IP:

swing的目标就是建立一个独立的GUI系统(独立于OS),所以GUI的绘制都是自己实现(建立在java 2D上)。这样带来的好处就是可以抛开历史包袱,从头开始实现一个灵活,现代,面向对象,真正跨平台的 GUI框架。
    
    当初swing设计思想是卓越的,Swing有着无与伦比的扩展性和灵活性,它采用了很多现代的UI理论,如renderer/editor等。只是碍于实现性能。
    但随着swing实现的性能越来越高,硬件环境越来越好。swing的发展一定更好!
    
    要说sun对于swing的失败,不是swing设计思想和架构有问题。而是他们为swing实现的默认look & feel是糟糕的!

#   carlkkx 发表于2007-01-05 22:23:08  IP:

如果大家真正公平的看一下swing,
在“灵活,重用,一致,优雅”等几方面有哪一个GUI框架可与swing相比!

#   carlkkx 发表于2007-01-05 22:24:06  IP:

一个很酷的swing look & feel

Napkin Look & Feel
  
http://napkinlaf.sourceforge.net/

#   carlkkx 发表于2007-01-05 22:27:01  IP: 222.67.7.*

swing是我所见最优雅和最灵活的GUI框架!
无与伦比的定制能力!

#   carlkkx 发表于2007-01-05 22:28:15  IP: 222.67.7.*

Swing是MVC设计的典范(转载)

不管你的项目是否用到了Swing技术,我都要说,Swing是一个设计优秀的Java包,它充满了大师的智慧。如果你学了Java却连一个Button 还不会写,就象你学习Visual Basic却不会用Button,那可绝对是不能被原谅的。Swing技术的应用已经在国外大行其道,由于java的免费、易学以及大家对于java技术的充分信赖,好多公司早早的就把应用程序的一切,从后台服务到前台人机交互界面,统统移到了java开发上。Swing出现了快10年了,凭借其先进的设计思想,一直未曾落后于哪种语言的界面开发技术,使用和理解Swing的设计思想,对软件开发者大有裨益。
  
  Swing的设计是MVC的典范。虽然MVC的概念有点泛滥,可是真正能够理解并熟练掌握、在设计和开发里面自然流露的并不多见。记得用VC ++开发程序时候,MFC向导也是生成Document和View两个类,当时一直奇怪为什么这么绕圈子。再看Swing的设计,则到处充满了MVC的痕迹。仔细研究Swing中事件监听、Model-View分离、Renderer/Editor机制、可插拔的LookAndFeel等机制,简直就是一门艺术,充满了美感。而如果你非常痛恨这些设计并觉得他们怪异,很可能你是刚从VB或者Delphi转过来,这些快速开发工具帮助了你也“害”了你。
  
  Swing设计的不错,不过可能过度学术化的设计也使得Swing跑起来并不灵巧,学习难度也大。这客观上确实使得Swing一直没有被广泛使用,而且广受诟病。记得以前“Swing有什么成功的应用吗?”之类的帖子一直是热门话题。IBM等则趁机抓住小辫子弄了SWT吸引了不少人,使得 Java GUI技术面临分裂的危险。
  
  不过随着JAVA的不断升级和优化,Swing的速度一直在提高,美观性也在改善,基于Swing的成功应用也越来越多了。关于Swing是否消亡或被SWT代替或是否能作桌面应用的争论逐渐少了。不过喜欢并精通Swing技术的开发者,尤其在国内,依旧非常少。
  
  好在情况在转好。Sun正意识到Eclipse和SWT所带来的威胁,下了大力气发展NetBeans,其最新版本对Swing GUI可视化设计的支持已经超过了所有对手,其Rich Client框架也走向成熟,这对Swing的发展和应用是一个很大的推动。随着WEB热潮的减退,人们又更多的开始理性的思考B/S和C/S架构的选择,某些领域Swing技术已经成为首选的解决方案。随着JGoodies、JIDE、TWaver等优秀Swing产品的不断涌现,Swing会以更快速度在桌面应用中普及。
  
  转载之http://blog.csdn.net/solo/archive/2006/05/12/725635.aspx

#   azjex 发表于2007-01-05 23:23:35  IP: 211.83.254.*

carlkkx 阐述的很正确!

我接触Swing不深,另一个跨平台的GUI库 Qt,也不错,其处理事件采用了信号与槽的机制,和Swing的监听机制很相似;另外,Qt也很Common sense,也就是carlkkx说的“共性机制”,这一点MFC是没有的!Common sense带来的好处就是学会一个control,就会了所有的control。

#   azjex 发表于2007-01-05 23:26:00  IP: 211.83.254.*

个人认为,将程序员停留在MFC是远远不够的,停留在GUI设计也是远远不够的!

#   songlife33 发表于2007-01-06 08:36:01  IP: 220.248.229.*

给个眉眼,让我糜烂糜烂

修改下

#   harrymeng 发表于2007-01-06 08:39:38  IP:

GOOD, 阐述得很好, MFC只是一种编程的方法或工具, 程序员是很广义的, 当年有人用汇编写出了伟大的产品,其实偶认为无论用什么方法或工具, 只要你喜欢与熟悉, 同样可以写出好的产品, 偶从毕业到现在依次用过vfp -> PB -> VB -> DELPHI -> C++ -> MFC -> c#, 呵呵, 总结下来,个人还是较喜欢MFC,当然,偶也会在平时去钻研一下swing或其它,看看它们能否在一些项目中能灵活用上,如果确实能优化架构,提高效率,我们为什么不用呢?

#   joyself 发表于2007-01-06 13:02:25  IP: 58.210.225.*

比较中肯。
但似乎没有什么新意

#   absurd 发表于2007-01-06 16:49:03  IP:

呵,写得不错,兄弟是老手+高手了。

#   stonecai 发表于2007-01-06 16:49:59  IP:

说得很好
一般来说,做程序的信念都有,主要看的是能不能坚持下去,一个富有激情的团队,一群志同道合的人一起学习工作是很美妙的事情。

#   yjgx007 发表于2007-01-06 17:26:44  IP: 222.131.159.*

从一个框架去体验和学习程序设计
然后去进一步延伸...

#   hacker47 发表于2007-01-06 18:05:07  IP: 61.191.116.*

程序员最终是问题的解决者,
因此,比语言和平台更重要的是:
解决问题的思路,也就是————设计。

用最简单直接、效率能够达到要求的方法解决问题,
这才是程序员的根本任务。
其他的,什么汇编、c、c++都不能算是高手。

#   hanjiao007 发表于2007-01-06 18:05:52  IP: 218.94.25.*

中国的教育体制造就了太多太多的五好青年,循规蹈矩,逆来顺受,前怕狼后怕虎,缺乏创新意识,这个社会什么都不缺,就缺敢想敢做的人
这个社会什么都缺,就不缺人
#   liguannan_bdqn 发表于2007-01-07 11:08:57  IP: 124.129.161.*
我是搞网络,以后也想学学软件,哈哈!!

#   wlwlxj 发表于2007-01-07 12:59:39  IP: 58.48.44.*

虽然我也不是高手,但是我赞同你,我的观点基本一样

#   demo88 发表于2007-01-07 21:54:11  IP:

以前老去你网站 现在看看变了很多了

#   zhshw 发表于2007-01-07 22:50:30  IP: 60.25.108.*

楼主写的很好,偶第一次看你写的东东,去你网站看看

#   hit_component 发表于2007-01-08 08:43:28  IP:

太难了,能做到的都是能工巧匠,却没有得到应有的回报

#   toxyboy 发表于2007-01-08 09:49:46  IP:

楼主也就是拿mfc作个例子而已,怎么又到了讨论那个优秀那个不游戏的,存在就是道理。只有优秀与蹩脚的设计师的区别,没有优秀与蹩脚的框架。

#   irplay 发表于2007-01-08 10:06:08  IP:

这个网站上的资源不错,用VC的人一定去看看...我下载了一大坨好东东

#   alxen 发表于2007-01-08 10:43:47  IP: 222.85.134.*

不错,学习下。

#   zhou7707 发表于2007-01-08 10:50:31  IP:

支持SWING,IBM总是想搞分裂,swt虽然外观,速度都不错,不过毕竟是依赖于平台的,而且SWING 目前的失败主要是市场的失败

#   cxz7531 发表于2007-01-08 13:14:10  IP: 61.114.254.*

swing提供了程序员自己定义数据模型和渲染器的功能,确实是很了不起的。不过初学者会有些不习惯。

但遗憾的是,swing的外观不大美观,降低了它的用户群

#   carlkkx 发表于2007-01-08 13:56:53  IP: 220.248.40.*

我不认同swt的设计架构!在灵活性上远不如swing!

http://blog.sina.com.cn/u/4b6047bc010006r1  

 SWT从实质上说是头疼医头,脚疼医脚,这种本质决定的它的架构不好,当需求增加时,当面临现实的Customization时,当面临各种不同操作系统时,它的缺点就暴露出来了,简单的说:
  
   对Java 界面涉及不深的人往往偏好SWT,对Java界面设计非常熟悉才能真正洞悉Swing的内涵。人们对于SWT的喜爱是同他对SWT的了解深刻度成反比的, Swing恰好相反。对于SWT了解越浅的人,越对他的光鲜外表(主要是Eclipse的表现比较好,但毕竟Eclipse的漂亮程度归公于他的界面设计艺术,实质并不在SWT的高级)。随着开发者对于SWT的深入了解,就会发现越来越多的问题和局限性,了解不深的人,或者从传统C/C++, WinForm以及MFC等东东转过了的人,往往被SWT的表面所迷惑。可以不客气的说SWT是AWT早已抛弃的努力。
  
   SWT凭着它对Windows平台的优化迷惑很多人,又以它的编程简单性忽悠了很多人。其实SWT它在Linux的效率和Mac OS上的错误简直要让人发疯。如果你真的想需要Windows平台的界面,干嘛要用Java? C#岂不是更好?
  
   SWT 一个迷惑人的地方是所谓平台保真(Fidelity),其实这也造成它不能轻易扩展和Customization的根源,而且,开发者往往喜欢平台保真的界面,而用户却不一定,相当的用户最终喜欢WinAMP等类似可以更换皮肤和LookAndFeel的功能。即使是平台保真度,Java6已经完完全全的实现平台一致性。SWT已经没有优势可言。
  
   SWT的另一个迷惑人的地方就是所谓速度,人们往往认为本地组件就比模拟组件要快,其实不然,由于 Java虚拟机和运行时速度的提高,Java编写的程序已经可以与C的速度相媲美,加上Swing内在有虚拟机内嵌代码和热编译的等功能支持,Java实现的Swing代码已经和操作系统本身的组件没有什么两样了。最近有JavaLobby上论坛贴出了一个名字叫MiGLayout,关于测试GUI界面的 BenchMark,测试的结果是:
  
   Windows平台上Swing的启动速度稍慢于SWT,运行速度几乎一样。
   Linux平台上Swing的速度高于SWT,无论是启动速度还是运行速度。GTK2上的速度差别就更大。
   MacOS上Swing的速度高于SWT,无论是启动速度还是运行速度。
  
   IBM当时开发Eclipse时,Swing的确不争气,所以才有了SWT的出现,但是如果当时Sun就把Swing打磨成现在这个样子,估计IBM也不会轻易开发SWT,但也多亏SWT的出现,促使Sun将Swing进行改革。
  
   最近一个国外叫EvansData的咨询公司调查的GUI工具结果是:
   swing占有率47%,名列第一,WinForm名列第二,SWT不超过8%
  
   结论是:
   SWT不会消亡,因为有Eclipse的存在,如果想为它开发插件,就必须使用SWT。另外和AWT相似,SWT可以应用到Mobile开发界面上,因为Swin

#   carlkkx 发表于2007-01-08 16:22:30  IP: 220.248.40.*

只有优秀与蹩脚的设计师的区别,没有优秀与蹩脚的框架。

____________________________________________
断然不能同意!!!

只是人有区别,拿刀和拿枪没有区别!

不要孤立来看!不要把人独立于一切,环境同样重要!不同的程序设计语言,不同的框架同样会影响你的思维!

#   zdsdiablo 发表于2007-01-08 16:58:45  IP: 210.22.82.*

高手是去决定细节的,顺序搞反了。

#   PHPER2006 发表于2007-09-14 17:04:43  IP: 219.135.215.*

鄙人以为“跨平台”是最大的擦屁股手纸。
有多少应用需要跨平台?中国99%的普通用户端都是WINDOWS,国外也不会低于90%,跨平台在客户端基本没有意义。
JAVA基本就是一个废物,开发桌面程序不行,开发网站不如PHP简单快捷,所谓的“企业级”应用没有几个企业需要用,我看除了开发点手机上上的小玩具还有点用。
希望JAVA早死早升天,省的浪费N多人的大好时光。

分类: 修炼之道 程序人生



关于酷勤 | 联系方式 | 免责声明 | 友情链接