老调重弹:年龄大了,码农何去何从 (长篇技术文学巨著)
灵感之源说明
这篇文章是说我的经历和选择,没有任何对从事软件开发的人员的不敬,更加不是要打击新入门的开发人员热情。你有你理解的方式和自由,要在回复那里指责为那是没有必要的,你有时间还是去多看看书,多写写代码好了。
刚在隔壁看见了一个22岁年轻人遥相呼应的文章,在这里罗嗦一下。年轻就是资本,有冲劲,这是最大的优势,好好学习,珍惜年轻的时光。
最后罗嗦一下,我12岁开始学编程的时候,相当有兴趣,到了15-16岁的时候,我觉得我可以写很好很好的软件,到了20岁的时候,我觉得有无穷的力量,在 这行肯定可以做一番事业的,至于后来写了几个下载了超过500万的免费软件,那是后话了。
人的心态会随着时间的流逝而变化的,几年后,你可能会有不同的想法,不用着急,如果几年后博客园还没倒的话(dudu别骂我,都老朋友了。。。),你可以回来再看看。
总的一句,不要浪费宝贵的时光。
前言
岁月是把杀猪刀,老了码农,白了头发,残了身体,消磨了意志。
码农老矣,尚能码否?
这是一个老话题了,按照一些人的说法,这是月经贴,最近才在博客园上看见这样的帖子。
今天在cnBeta上看见了这个帖子:年过50,还能继续当码农吗,本来只是在闪存发发牢骚,后来想想,干脆写个帖子,写得长点,打发一下时间也好。
我主要谈谈我的经历。
背景
对那些不知道我的情况的同学,我简单说说我的背景,1993年开始学编程,大学读的不是计算机,而是英语高级翻译,毕业10年,2年前移民澳洲,现在33岁,仍然在做码农。
国内
现实是非常残酷的,无论你是否接受!
在中国,软件开发这行太固执于年龄了,主要有3个观点
年纪大了,思维跟不上,不能学习新技术 呆久了,老油条,不怎么干活,效率低下 当然是待遇了,呆了那么多年,工资越来越高,公司成本压力越来越大 现在国内的物价飞涨,人员的待遇也被迫提高了很多,相比几年前,甚至以倍数算。现实有点荒谬,老人多年加薪,比不上新人入职薪酬起点,如果关注新闻的,那些或许部分被夸张的某某IT巨头的毕业生入职20/30万起跳。这对老人来说,情何以堪啊!
对开发来说,码农资历越深,经验越丰富,要解决关键问题,还是要靠扎实经验,学习新技术也应该是驾轻就熟。
举个例子,没有实际业务系统开发经验的,遇到技术问题,一般都是上网搜索,如果没找到,就去stackoverflow之类的网站提问。但如果身边有个经验丰富的,能给你解决的情况就比你自己慢慢研究要来得快吧?
再举个例子,刚入门的同学,不都是喜欢拜师,找前辈学习的吗?没有这些前辈,那学习的过程会相当周折。
再举个例子,没有一定的经验的同学,要实现某个功能,譬如excel文件的读写,除了office automation(不建议),更应该去找第三方的组件(相比商业组件,大家都喜欢开源的吧?)。如果平时积累了丰富的经验同学,需要用到某个功能(如之前说的excel文件的读写),直接就知道可以用如NPOI这样的组件。
最后再举个例子,10年前,对.net一窍不通。记得9年前,一个同事,老程序员了,很热衷学习新技术。当时.net出了beta,他买了本书,新建了个winform,拖放了个DataGrid,再用DataAdapter从数据库取了数据库之后绑定到DataGrid,数据显示了,有点RAD的味道,他还演示了master-detail的功能,当时觉得好神奇。当时一起做同事的,还有另外一个老程序员,记忆中超过40岁了,跟我们一起做开发,写起程序来一点都不含糊。
如果我是招聘者,2个应聘者,关键技术要求都符合,撇除非技术考量(譬如个性等),一个28岁,一个40岁,我会选40岁的。
我的学习经历
学习编程,开始于1992年,初一,学校开了计算机课程,当时是novell无盘工作站,后来用上了DOS 3.x。先用的GWBASIC,后来接触了Quick BASIC和pasal。当时跟几个同学在一起研究,有1年暑假,我们约定要写个程序出来,比一下谁写得更好。其中一个同学用Quick BASIC实现了类似x-windows的图形化的界面,带输入法,支持鼠标(当年dos下都是文字界面,要支持鼠标和图形化,要用asm写),可以显示图片,播放音乐和动画,我觉得好牛。
在中国的时候,经常加班,离开中国前的那个公司,我在那里工作了5年,星期六还要上大半天,觉得还挺累的。
写商业软件这10年来,经验是逐点逐点积累的。我9年前开始在sourceforge写开源项目,大约9年前开始在codeproject写开源文章,8年多前开始在博客园上写博客,每天下班后,再花4-5个小时学习,写开源项目,写商业软件。
直到现在,我每天下班,仍然是上技术网站看文章,譬如codeproject,当然也包括博客园。也会去开源项目网站看看,譬如sourceforge和codeplex,说起codeplex,这应该是当年那个微软为了推广.net而推出的gotdotnet网站的继任者,虽然codeporoject越来越多的.net文章,但codeplex更纯粹的是微软为了推广.net而架设的,所以从事.net开发的同学,应该会留意到这个网站绝大部分项目都是.net写的。
我喜欢看开源项目的代码,首先了解某个项目的主要功能,然后看代码项目结构,不调试,直接从主类入手,看设计思想和新技巧,基本上半个小时可以看几千行吧。
我更喜欢通过写开源项目来学习新技术,譬如之前写的那个SQL Monitor,就用了C#4。
最近去了新公司,做新项目的开发,因为老系统的设计有严重缺陷,无法应付大访问量的情况,所以和技术总监研究分析后,决定采用ASP.NET MVC 4 + Knockout + bootstrap。
国外
围城,外面看里面好,里面看外面好。那我们看看外国多少50岁+的程序员吧,为什么我们要对那些大牛致以崇高的敬意,因为他们经过多年的技术钻研,在某个领域达到一个高度,可以给后来者各种帮助、影响,可以指出技术发展路线。举个例子,pascal/delphi/c#之父Anders Hejlsberg,没有他,估计也就没pascal/delphi/c#,那软件开发领域少了多少色彩。
正是由于这个不可改变的国内大环境,我选择了移民。在外国,对工作人员的年龄没多少要求和"歧视"。应聘的那些公司,从来不会问你年龄,只会纯粹地要求你多少年的xx技术经验。
p.s.外国的待遇比中国好很多,码农的待遇还是可以过上不错的日子的。
何去何从
对大龄码农来说,出路主要有以下几条:
继续开发生涯,做资深码农,从senior、team lead、tech lead到principal,如果你无欲无求,可以安心做个普通的码农,跟少林的扫地僧那样,隐藏得很深,很深。。。 转做设计和架构,譬如architect 转型做咨询,譬如consultant,这个在外国很流行,收入也比普通开发人员高 转型做管理,譬如project manager,director, 技术总监,CTO等 转型做测试,遇到过这样的同事,计算机科班,硕士,做了10多年开发,后来转做测试,也相当的成功 转型做业务分析,用丰富的经验,去分析业务,相信可以驾轻就熟 转型做技术支持,相信有丰富开发经验的开发人员,可以解决各种客户提出的技术问题 创业,估计有不少开发人员有这个想法,始终流水的兵,创业可以赚更多,不过风险也高。如果你有很好的创意,相信可以吸引到投资,创一番事业。身边有几个朋友经过多年的开发,现在在搞创业 转行,认识几个人,转行了,就跟当年一些同学,从别的专业转到开发人员一样。至于行业的选择,那是因人而异,有做售前的,也有做售后客服的,当然也有跟开发没有啥关系的,譬如网站管理。更有甚者完全脱离IT行业,譬如去淘宝开网店。。。 出路是因人而异的,没有模式。一些同学蠢蠢欲动,但对前景又没有信心,彷徨,犹豫,随着时间流逝,年龄越来越大,心里越是没底,就跟一个没跟的浮萍,走一步看一步,其实这样是没有办法中的一个办法。当你没有相当的信心,不贸然下决定去改变前途,这是可以理解的。但岁月不能因此而蹉跎啊,今天30岁,一眨眼,明天就是40岁了。我仍然清晰记得20年刚开始学编程的日子呢,那个时候是纯粹的信徒,对计算机编程,那是比刘姥姥进大观园还要惊讶,觉得写个代码就可以显示这么神奇的东西。
说到出国,这只能算半个出路,因为出国了,你还是从事软件开发的话,那就不是转型了,只是换了个工作环境。
我的选择
我热爱编程,编程是我的第二生命。
从学编程开始到现在,已经20年了,如果说不累,那是不可能的。10年的商业软件开发,每天10多小时在电脑面前写代码,落下了一身的毛病,严重的颈椎病,肩周炎,慢性胃炎,吃止痛药比吃零食还来得频繁。
码农,牺牲太多了,过度的加班不提也罢,长期在电脑面前,脸部油脂分泌也多,皮肤干燥,容貌憔悴,尤其显得比同龄人苍老。不知道我真实年龄的,都猜我40来岁。而且IT圈子还流行一个段子,说码农因为接受的辐射太多,所以生女儿的几率很高,那些还幻想子承父业的,估计要崩溃。
说到牺牲,更加别提那些暴毙的码农了。
如果我不喜欢编程,我不会弄到现在全身的病痛,我可以活得更舒服,早睡晚起,无需无休止的加班,无需挑灯夜战,更加没有那些无休止的病痛,无需吃那些止痛药,可以有更多时间陪伴家人,可以有更多的时间去看电影,听音乐,休息,过舒坦的生活。
不过,做一行,爱一行,专一行。即便你觉得累,如果你真心喜欢开发,也会继续做下去。如果你不喜欢,纯粹是当年高考计算机专业热门而入了行,那每天也是煎熬。
某样事情,你重复做20年,你总有觉得身心俱疲的时候。你可以连续加班几天,甚至一周,但如果你每天都要加班,你必然有崩溃的一天。
每当这个时候,你应该好好坐下来,休息一下,想想何去何从。软件开发,跟其它工作一样,首先是要养家糊口,一般来说,大家会选择收入可观的行业,幸运的时候,IT相比其它行业,收入还是算不错的。
每当你想放弃的时候,认真想想,软件开发生涯,到底是不是到尽头了。
就目前的情况来说,我还是满意现在的工作内容的,因为可以学到新东西,也可以用自己的经验给同事解决问题。
在未来的几年里,我仍然会选择继续做软件开发。
广告时间
最后做做广告,我的新浪微博是:weibo.com/unruledboy
不行,你写东西太长,我要先抢个沙发再说
这篇写得好,我的头牌地位要不保了
看你才弄了个板凳,还想着头牌。。。。。天上人间去多了吧:)
廉颇老矣 尚能饭否
先顶后看!
好长啊,晚上在看~
其实吧,国内大龄程序员的问题是一个囚徒困境的博弈而已。
首先,你作为码农,写代码十几年了,如果给你一份月薪8k的工作,你肯定不去。因为这都对不起你这十几年的付出。但是相当一部分用人单位只需要月薪8k的码农,不需要在高的了,因为没有那么复杂的东西要处理,大家都不求甚解。当然,你要说了,正规大公司还是会要的,在国内IT行业,正规大公司掰着手指头数能有几个?大家都想去,码农每年增长那么多。
其次,不否认相当一批大龄码农自己不愿意学习新东西了,开始吃老本,我以前一个快40岁老技术总监就是:"什么.net 3.5、4啊,什么微软MVC啊,都不许用,就2.0最稳定,就用我得架构,我的架构已经用了5〜6年了,没一点问题,MVC就是偷换概念。"这是他的原话。。。
在国内,大龄码农一般有4条出路:1,技术大牛,修成正果;2,技术一般,带团队能力还不错,做管理去了;3,自己创业或者转行了;4,搞培训去了。
我工作也有小十年了,一直在写程序,中间穿插着做了一些其他事情,现在往管理方向发展了,老了,有点写不动了。现在主要做商业解决方案、做实施等,我现在就是在第二和第三的出路之间徘徊着。
我一个哥们,一个40多岁的老程序员了,他可以算是中国改革开放后第一批程序员了,在国民普遍工资还是几百块的时候他就能赚1w块的工资了,写过不少大型项目,他给我讲过曾经参与的使用IBM的大型机处理几百兆的存储过程的项目。这个哥们现在是我得创业合伙人,我们一起在给人做解决方案,他已经好几次跟我说:要不我们去开个影楼吧(我俩都喜欢摄影)。我说:我还是有点舍不得IT圈子。
我一直觉得,真心喜欢编程,在国内到老一直走技术职场不是太明智的选择,这是当前国情决定了,如上面几位所述。
感觉在国内第一大事还是财务自由,自由后心态放松,才能更加享受编程的乐趣,追求自己编程的乐趣,掌握自己编程的方向,而我认为这样恰恰更容易做出意想不到的成绩,从而进入良性循环。。。
哎,灵感,NInput,WayFarer(张逸),dudu,idior,呵呵 只想说楼上的,觉得8千能解决的,你后面会有无穷的痛苦,我宁用2万的
太棒了,又认识了一个行业内的好师傅。