又是老话题,程序员30岁能干嘛,程序员30岁后怎么办?最近博客园里程序员过30岁能不能再写程序的帖子好像又火起来了。当年我刚入行做IT,看到的这类帖子,吓得不得了——差点就放弃了,还好我胆子大。所以今天有空,再看到这样的帖子,总是忍不住要多说几句。
我大学里学的专业是国际贸易,毕业后主要是做律师,也比较深入的涉足过装饰行业,几年前转行做了IT。
所以,我想,关于这个话题,我能给大家一个不同视角的启示。当然,个人意见,仅供参考,这本来就是一个仁者见仁,智者见智的话题。
下面我就以下一些常见的观点逐个的谈一谈。
1. 程序员的门槛低。 这我承认,我就是一个例子,呵呵,很多人骂的那种“进来抢了你们饭碗”的人。当年找工作的时候,很怕别人问我的专业,感觉低人一等。结果进来了,才发现,很多同事,原来都不是科班出身,而且他们做得很好! 所以很多人就开始自怨自艾,当初选错了专业,自己辛辛苦苦学了4年,结果出来什么都不是了…… 但我想问的是, 1.1 哪一种职业的门槛高? 就我所经历过的所有职业(国际贸易、英语教师、律师、室内装饰)而言,程序员的门槛是最高的了!我们所处的是一个开放的社会啊!只要你愿意学,其实没有多少是你学不会的。农民都可以造飞机呀?! 1.2 你是不是真的在大学“辛辛苦苦”的学了4年?之所以有这样的怀疑,第一,我4年大学,纯粹是混过来的,包括几乎我所有的同学;第二,我考“软设”的时候,才发现,挂掉的,很多都是科班生(当然,他们可能才大一、大二,或者没有像我一样“应试”);第三,我知道有一些计算机专业的学生,大三大四的时候就已经有很高的技术水平,并藉此小有收入了,让我直后悔,当时要是我学计算机……
2. 程序员干的是体力活。 说这话的同学,说的无非就是“加班”和“没技术含量”。 我仍然想问的是, 2.1 有多少职业不加班?我爸做建筑,我做装饰的时候,赶进度,睡工棚,通宵达旦,是常事。我弟弟,当公务员,周末出差还没得调休,听说我加了班还有调休,都要跳起来了。 2.2 据说微软不加班、Google不加班,为什么你不去,或者你去不了?为什么你的工作没“技术含量”?换过来想,你问一问,微软、Google的技术员下班之后都在干什么?(如果有人刚好是微软、Google的,回个话,呵呵)
3. 中国现在软件行业状况太恶劣了。 我仍然想问的是: 3.1 略。 3.2 你为这个恶劣的软件行业做过什么?这听上去要求有点高,但实际上,你多写一份文档、多规范一行代码,多写一篇技术博客……这些都可以是你的贡献。不积跬步,无以致千里。正是由于我们每一个人的努力,每一份微薄的贡献,才促使我们的生活一天一天的好起来。 这里我想多说几句,几年前,因为同样的原因——对中国法治环境的厌恶,我离开了我曾经挚爱的律师工作。几年后,尤其是昨天,看到重庆涉黑案中律师李庄和他的辩护律师陈有西,为心中的公平和正义的信念,所承受的牺牲,所表现出来的铮铮铁骨,以及由此而绽放的人性、智慧和法治的光芒,让我明白,我可悲的放弃和背叛。
4. 软件行业技术更新快。 所以,年龄大的程序员的经验积累没有用,干了10年8年,又得回头和小伙子拼技术。 我仍然想问的是: 4.1 还是略! 4.2 不知道大家有没有想过,在日新月异的计算机技术中,有没有不变的东西?我见过的最常见的答复是,“有,算法(思想/数据结构),算法是不会过时的”;然后很多人开始钻研算法,但一会就有人冒出来了,“大家在实际工作中究竟有没有用到过算法哟?”,而回答常常会令他们很伤心。(这个有时间另行谈论) 就我的理解,和任何技术一样,软件开发技术一样是要讲积累的! 我是一开始就学C#、ASP.NET的,但学到一定的时候,我自己都知道,再也学不下去了。一些基本的概念,你根本无法理解:引用类型/值类型?编译时/运行时?hash是什么?cookie/session是什么?为什么要分层?设计模式用来干嘛……这些知识,不是买几本《asp.net2.0入门》,《C#高级编程》之类的书可以解决的。 进入工作之后,你发现问题更多:你一天都搞不定的bug,老程序员几分钟就搞定了;你绞尽脑汁也想不到的实现方式,老程序员眼睛都不眨一下,就有了思路;客户的需求文档,你觉得烂得像狗屎一样,根本就狗屁不通,但老程序员拿到就可以开始做……差距啊! 据我所知,C语言就有指针,asp就有cookie和session,学JavaScript就应该知道什么是解释执行,了解hash是数据结构的基本功;完全可以想象,有了这些积累之后,学C#、asp.net是不是更容易得多? 忘了谁说过(好像是金旭亮老师),“没有写过10万行代码,就不要谈设计模式”,对于软件工程的深刻理解,绝对是需要长久的工作经验的浸淫的?当你被客户不断变化的需求折磨得快疯了的时候,你一定会理解为什么需要设计模式;当你在asp页面里面找代码找到眼泪都流出来的做时候,你一定会明白asp.net的codebehind、控件开发的必要性。 如果你发现你工作5年10年之后,你还没有一个刚毕业的小伙子学新技术快,没他学得好(理解的深度也相当重要),那可能有两种情况:这小伙子天赋异禀,绝对属于牛人级别的,这种情况你就认命吧,几万分之一的牛人都被你遇上了;另一种情况就是你这5年10年都白混了!
其实,在学习的道路上,没有多少捷径可走,“绝知此事要躬行”!很多人回忆他们的成长经历,都会觉得自己当年走了不少弯路。但要知道,你今天能认识到那是弯路,这就是你现在和过去不同的地方!程序员:May the Force be with you!
不知道大家有没有想过,一个程序员,怎么样才算“好”?会一种谁也不会的语言?懂一种谁也不懂的算法?知道一种谁也不知道的设计模式?……其实不是,至少我认为不是。 一个优秀的程序员,他的气质是内实而外溢的。 他基础扎实,多年的孜孜以求,使他的根须,又深又密,他可以汲取一切可以汲取的知识,来供给他枝繁叶茂的成长; 他经验丰富,阅历广阔,见证了计算机技术的沧桑变迁,无论成功或失败,他都有所收获; 他成竹在胸,所以淡定而从容,他没有什么抱怨,只有几许坚持; 他热爱,所以他执着,所以他乐于分享; 而这所有的一切,都需要岁月的洗礼,执着的坚持,不懈的奋斗。否则,何谓“沉淀”?
中国的软件开发起步很晚,可能最早的一批程序员也是在80年代末90年代初才走上工作岗位,而蓬勃兴起,应该是在90年代末了。所以做IT的,大多数人看上去,都很年轻。但即使这样,他们中的很多人都应该已过而立之年。他们,都失业了吗?都转行了么?很想做一个调查,但仅就我目所能及,他们,都在各自工作岗位上发挥着无可替代的作用。
话说得很刻薄,但不如此,恐怕会有更多的年轻人背负莫名的恐惧和犹豫,而忘了,前行,是驱散前方阴霾的唯一手段。