本文发表在 rolia.net 枫下论坛缘起
写这篇小文的原因是前两天和网友讨论引起的,当时看到一个帖子,说程序员中,人人都可以看不起写vb的。其实以我来看,用什么语言并不重要,重要的是有没有掌握编程的思想。就象练武功,重要的是修炼自己的内功,而不是孜孜于学了多少路拳法。虚竹只一套韦陀掌,可以让鸠摩智的七十二路少林绝技奈何不得;全真派的剑法再精妙,郭靖上山,一样打的淅沥哗啦。无他,内力浑厚耳。当你自以为多了解了几门技术,就嘲笑还在用VB的人时,有没有想过自己对这门技术了解的又有多少呢(顺便说一句,我不是用VB的)?在技术的星空下,我们还是多一些谦卑,多看到一些自己的渺小吧。
内功
那么,什么是程序员的内功呢?是不是你学习的语言越多,了解的语法越多,内功就越深厚呢?个人浅见,非也非也。语法结构,无非是if, else, for, while,各种语言的表述不同,逻辑却是一致。重要的是,在写程序的时候,你有没有深入的思考过,然后去尝试,然后明白点什么。比方说,作为一个JAVA程序员,最简单的,你有没有想过一个class的main方法为什么被定义成public static void?在这个论坛上,我曾经看到过一位“糟蹋文学的程序员”写的一段有趣的程序:
import 各种状态.*;
public class 我也玩一下
{
private 谁=void;
protected static void 不要(说 谁)
{
this.谁=各种状态.已有太多甜蜜的酸楚;
}
......
public static void main(String[] argv)
{
不要(说 我);
......
}
}
从文学的角度(我不太懂文学)来讲,这段程序可能很有趣。可是从程序员的角度来讲,你说撰写这个程序代码的人不会写程序吧,他又好象会写,而且据说还是编译通过的。可是说他会写程序吧,你又不服气,觉得这个家伙根本就没搞明白Object是怎么一回事。咳,谁知道呢,我现在觉得6.85/h好象也是一个比较合理的价格。
那么,有人要问,说来说去,你说的内功到底是什么呢?从我个人来讲,做一个JAVA程序员,你至少得明白OO的基本道理,什么是封装,什么是继承,什么是多态。写程序的时候,常想想有没有合适的design patterns用。上班有时间,就对自己写的code做做refactoring,平时也读读书,知道什么是XP,Agile。多思,多试,就是这样。
恐惧
常常有这么一种论调,30以上的程序员就不值钱了,人的精力在逐渐衰减,各种新鲜技术却层出不穷,肯定跟不上了。——其实不然。
是的,和刚出校们的新生比,老程序员的精力肯定没办法和他们比,但是,比精力更重要的,还有经验。你不会犯低级的错误,你知道什么情况下选取什么样的方法,这些,可都是没法速成的。
面对乱花渐欲迷人眼的新技术,你会不会有一种难以跟上的恐惧感?我不会。因为我知道这些新技术并不是无源之水,无根之木。它们都是在现有的技术上逐渐演化发展出来的,开发它们的目的都只有一个,就是为了让你的工作更简化。学习起来,也并不困难。没来加拿大之前,我不知道什么是case,看招工广告上很多都有要求,觉得这东东实在是一门很高深的技术。后来翻翻书,才知道我原来早就在自发使用了,只是没有人家这么规范而已。
从形而上的观点来看,计算机的功能无非就是存储、显示、计算这三大块。现在风靡的MVC(Model-View-Control)结构,就是这三块的对应。可是你觉得这种设计思想新鲜吗?看看你的硬盘,显示器和CPU,你就有答案了。
所以,道生一,一生二,二生三,三生万物。万物的道理都是相通的(胡扯一句,你可以把道理解为一个interface),一旦你有了一定的内功,拣起需要的技术实在不是一件困难的事情。弱水三千,我只取一瓢饮,又有何惧哉?
结语
只有一句话,只要你“喜欢”,程序员这份职业,你可以做到50岁。
--------------------------------
本人才疏学浅,此文也纯属抛砖引玉之作。欢迎探讨,也欢迎拍砖,哈哈。更多精彩文章及讨论,请光临枫下论坛 rolia.net
写这篇小文的原因是前两天和网友讨论引起的,当时看到一个帖子,说程序员中,人人都可以看不起写vb的。其实以我来看,用什么语言并不重要,重要的是有没有掌握编程的思想。就象练武功,重要的是修炼自己的内功,而不是孜孜于学了多少路拳法。虚竹只一套韦陀掌,可以让鸠摩智的七十二路少林绝技奈何不得;全真派的剑法再精妙,郭靖上山,一样打的淅沥哗啦。无他,内力浑厚耳。当你自以为多了解了几门技术,就嘲笑还在用VB的人时,有没有想过自己对这门技术了解的又有多少呢(顺便说一句,我不是用VB的)?在技术的星空下,我们还是多一些谦卑,多看到一些自己的渺小吧。
内功
那么,什么是程序员的内功呢?是不是你学习的语言越多,了解的语法越多,内功就越深厚呢?个人浅见,非也非也。语法结构,无非是if, else, for, while,各种语言的表述不同,逻辑却是一致。重要的是,在写程序的时候,你有没有深入的思考过,然后去尝试,然后明白点什么。比方说,作为一个JAVA程序员,最简单的,你有没有想过一个class的main方法为什么被定义成public static void?在这个论坛上,我曾经看到过一位“糟蹋文学的程序员”写的一段有趣的程序:
import 各种状态.*;
public class 我也玩一下
{
private 谁=void;
protected static void 不要(说 谁)
{
this.谁=各种状态.已有太多甜蜜的酸楚;
}
......
public static void main(String[] argv)
{
不要(说 我);
......
}
}
从文学的角度(我不太懂文学)来讲,这段程序可能很有趣。可是从程序员的角度来讲,你说撰写这个程序代码的人不会写程序吧,他又好象会写,而且据说还是编译通过的。可是说他会写程序吧,你又不服气,觉得这个家伙根本就没搞明白Object是怎么一回事。咳,谁知道呢,我现在觉得6.85/h好象也是一个比较合理的价格。
那么,有人要问,说来说去,你说的内功到底是什么呢?从我个人来讲,做一个JAVA程序员,你至少得明白OO的基本道理,什么是封装,什么是继承,什么是多态。写程序的时候,常想想有没有合适的design patterns用。上班有时间,就对自己写的code做做refactoring,平时也读读书,知道什么是XP,Agile。多思,多试,就是这样。
恐惧
常常有这么一种论调,30以上的程序员就不值钱了,人的精力在逐渐衰减,各种新鲜技术却层出不穷,肯定跟不上了。——其实不然。
是的,和刚出校们的新生比,老程序员的精力肯定没办法和他们比,但是,比精力更重要的,还有经验。你不会犯低级的错误,你知道什么情况下选取什么样的方法,这些,可都是没法速成的。
面对乱花渐欲迷人眼的新技术,你会不会有一种难以跟上的恐惧感?我不会。因为我知道这些新技术并不是无源之水,无根之木。它们都是在现有的技术上逐渐演化发展出来的,开发它们的目的都只有一个,就是为了让你的工作更简化。学习起来,也并不困难。没来加拿大之前,我不知道什么是case,看招工广告上很多都有要求,觉得这东东实在是一门很高深的技术。后来翻翻书,才知道我原来早就在自发使用了,只是没有人家这么规范而已。
从形而上的观点来看,计算机的功能无非就是存储、显示、计算这三大块。现在风靡的MVC(Model-View-Control)结构,就是这三块的对应。可是你觉得这种设计思想新鲜吗?看看你的硬盘,显示器和CPU,你就有答案了。
所以,道生一,一生二,二生三,三生万物。万物的道理都是相通的(胡扯一句,你可以把道理解为一个interface),一旦你有了一定的内功,拣起需要的技术实在不是一件困难的事情。弱水三千,我只取一瓢饮,又有何惧哉?
结语
只有一句话,只要你“喜欢”,程序员这份职业,你可以做到50岁。
--------------------------------
本人才疏学浅,此文也纯属抛砖引玉之作。欢迎探讨,也欢迎拍砖,哈哈。更多精彩文章及讨论,请光临枫下论坛 rolia.net