loveamanda

常用链接

统计

最新评论

2008年9月7日 #

不要迷失在技术的海洋里

本文转自:http://www.cnblogs.com/lovecherry/archive/2007/10/28/940555.html


技术就好像一片汪洋大海,越深入越望不到边际。就拿自己的体验来说吧,2000年的时候在学校搞ASP,觉得网页开发就是这么简单,把数据库中的数据格式化一下显示在页面上,把用户的输入组装成添加删除和修改的SQL提交到数据库中去。几年后的今天,我对自己了解或听说过的ASP.NET相关(注意:仅仅是ASP.NET或者说网站制作相关)技术列了一下:




在这些语言、技术、工具、理念中,每一项都能扩展出很多还要细化的技术,每一项要达到熟悉的程度可能都会花去一年的时间,如果这些都要达到熟悉的话,大概也就快退休了。不但如此,每一个技术都在飞速发展,今年语言到了明年就有更简单的语法,今年的技术到了明年就有更好的技术来替代,今年的工具到明年已经面目全非,今年的理念到了明年已不再流行。


或许你现在:


l 在为面试而去搜索接口和抽象类的区别;


l 在为新技术来不及学习而烦恼;


l 在为看不懂高深的技术文章而烦恼;


l 在为项目不能提高自己的编码水平而发愁;


l …………


我觉得:


l 不管做什么,学什么,一要心态好,二要态度好。所谓心态好就是不要着急、不用担心;所谓态度好是多分享、多讨论、学出自己的心得。分享的意义是很大的,在分享之后的认知水平往往比分享之前的高,而且在很多时候分享给别人1点,别人能回报给你2点。有些人在团队中不愿意分享,怕团队中的其它人水平提升了影响到自己的地位,其实这种想法是没有什么道理的,也是对自己不利的。有些人又在羡慕别人的技术NB,崇拜高手,为自己的技术差感到烦恼,如果你对自己信心又有什么技术是花时间学不到的那?


l 从学习的内容上来说,要坚持两个原则,如果你没有时间的话,那么学新技术不如学基础、学应用不如学思想。举例来说,如果你只熟悉C#的基本语法的话,那么学好C#这个语言比学会编写留言本更有意义,如果你关注MVC、ORM的话,那么学习它们的思想比学会使用MONORAIL以及NHIBERNMATE更好。技术虽然一直在变,但是越是基础和越是抽象的技术变化越慢,越是偏向应用越是具体的技术变化越是快,从性价比上说,学习基础知识性价比更高。再举一个直白的例子,DIY电脑的时候,在显示器上多花费500元的意义一定比在显卡上多花费500元的意义大,而就是有些人宁可在显卡上多花费500元。在很多大型软件公司,招聘的时候只看人(看人品、看聪明程度、看态度)不看技术的,因为它们需要的是能快速发展,适应企业文化的人,而不需要你那些所谓的精通和熟悉。


l 不要过于专著于技术,这里的技术指工作中用于开发的技术。在几年之后,当你只有.NET可以和你的孩子分享的话,是不是太可悲了。在软件行业,技术虽然一定程度决定了薪水、决定了职位,但是我们的生活并不是100%是工作,有时间为技术而发愁,为何不综合提升自己的其它能力呢?并且随着职位的上升,往往沟通能力、经济知识以及文学艺术修养比技术显得更重要,这个时候叹息自己过于专著技术往往为时过晚。


l 虽然国内很多公司的技术层次不同和文化也有差异,但是在大多数的时候公司或别人能教给你的东西很少,要学东西还是要靠自己主动。有的人一直觉得在公司学不到东西,想换一个环境,往往他换了一个环境之后发现还是学不到什么东西。国内的项目大多还是急功近利的,不要期望有这么多微软研究院,空闲的时间踏踏实实学一些东西比到处找工作强很多,做项目的时候多分享一下自己的心得给团队成员比抱怨团队技术实力差强很多。


l 在工作中,要始终提醒自己"谦恭"、"真诚"和"规矩",谦恭真诚对别人,把规矩留给自己。技术再强也要"谦恭",离开了"谦恭"的技术就会失去光芒,社会再险恶也要"真诚",一切虚伪会在"真"诚面前低头,职位再高也要"规矩"(不迟到,不早退,以身作则),否则再大的权力也只能变成人员的流失。如果能做到这六个子,那么无论你的技术怎么样,无论你到哪里都会得到领导的重用,在事业上有所发展。


现在的你不再:


l 为面试而去搜索接口和抽象类的区别,而是在面试的时候告诉考官你并不知道它们之间的区别,但是愿意在一个月内系统学习面向对象的知识;


l 为新技术来不及学习而烦恼,而是明确了自己最需要学习的技术,一边学习一边分享;


l 为看不懂高深的技术文章而烦恼,而是拿起《C#高级编程》踏踏实实从头到底边阅读边做试验;


l 为项目不能提高自己的编码水平而发愁,而是在进度允许的情况下尽可能让项目变得可扩展、可维护以及高效;


l …………



看到身边的一些人为技术所累,在技术的海洋中航行的很辛苦,因此有了本文。本文的主要目的是提醒大家找到方向,时不时回岸边休息一下,思考一下新的航向,不要迷失在技术的海洋中让自己筋疲力尽,在技术之外的有很多东西的意义远大于技术,请大家踊跃讨论…………


更新(本文或许过于杂乱,总结一下观点):


l 学习靠自己,不要期望别人教你什么,学习要主动;


l 不管水平高低,不要看不起自己,也不能看不起别人,学习要心态好;


l 不能不思进取,也不用让自己为技术所累,给自己多一点技术之外的时间;


l 如果时间不充裕,优先考虑学习基础的内容,同时也可以多关注一些新的思想;


l 如果别人能从你这里学到知识的话,那么你自己也一定学到了知识,请坚持分享;

posted @ 2008-09-12 13:04 皮皮陈 阅读(117) | 评论 (0)编辑 收藏

head first 拿到手了,正在啃

老外的书看的也不少,这本独具特色。别的不说,我最喜欢它上面的插图,很有意思,好像就是我脑海里想说的活。

著者真是下了苦心的。

行文很幽默,这是和国内作者最大的区别了吧, 让人看着没有压力,聊天一样,轻松舒畅地学习。

书上留有很多空白, 非常适合作笔记。 我就是这样, 更喜欢在书上胡写乱画。

我没有逐章看,因为项目需要,目前只是看了最需要的那部分,已经受益不减,以后有空会把自己的学习感悟写在这里

posted @ 2008-09-07 16:03 皮皮陈 阅读(166) | 评论 (0)编辑 收藏

jdk和jre 的区别

 关于jdk和jre 

大家肯定在安装JDK的时候会有选择是否安装单独的jre,一般都会一起安装,我也建议大家这样做。因为这样更能帮助大家弄清楚它们的区别:

Jre 是java runtime environment, 是java程序的运行环境。既然是运行,当然要包含jvm,也就是大家熟悉的虚拟机啦, 还有所有java类库的class文件,都在lib目录下打包成了jar。大家可以自己验证。至于在windows上的虚拟机是哪个文件呢? 学过MFC的都知道什么是dll文件吧,那么大家看看jre/bin/client里面是不是有一个jvm.dll呢?那就是虚拟机。

Jdk 是java development kit,是java的开发工具包,里面包含了各种类库和工具。当然也包括了另外一个Jre. 那么为什么要包括另外一个Jre呢?而且jdk/jre/bin同时有client和server两个文件夹下都包含一个jvm.dll。 说明是有两个虚拟机的。这一点不知道大家是否注意到了呢?

相信大家都知道jdk的bin下有各种java程序需要用到的命令,与jre的bin目录最明显的区别就是jdk下才有javac,这一点很好理解,因为 jre只是一个运行环境而已。与开发无关,正因为如此,具备开发功能的jdk自己的jre下才会同时有client性质的jvm和server性质的 jvm, 而仅仅作为运行环境的jre下只需要client性质的jvm.dll就够了。

记得在环境变量path中设置jdk/bin路径麽?这应该是大家学习Java的第一步吧, 老师会告诉大家不设置的话javac和java是用不了的。确实jdk/bin目录下包含了所有的命令。可是有没有人想过我们用的java命令并不是 jdk/bin目录下的而是jre/bin目录下的呢?不信可以做一个实验,大家可以把jdk/bin目录下的java.exe剪切到别的地方再运行 java程序,发现了什么?一切OK!

那么有人会问了?我明明没有设置jre/bin目录到环境变量中啊?

试想一下如果java为了提供给大多数人使用,他们是不需要jdk做开发的,只需要jre能让java程序跑起来就可以了,那么每个客户还需要手动去设置环境变量多麻烦啊?所以安装jre的时候安装程序自动帮你把jre的java.exe添加到了系统变量中,验证的方法很简单,大家看到了系统环境变量的 path最前面有“%SystemRoot%system32;%SystemRoot%;”这样的配置,那么再去Windows/system32下面去看看吧,发现了什么?有一个java.exe。

如果强行能够把jdk/bin挪到system32变量前面,当然也可以迫使使用jdk/jre里面的java,不过除非有必要,我不建议大家这么做。使用单独的jre跑java程序也算是客户环境下的一种测试。

END

posted @ 2008-09-07 15:44 皮皮陈| 编辑 收藏