一、关于编程
相信有很多人和我一样在今年走上了工作岗位,和其他的毕业生不一样,我们成了
程序员,这个注定了要和别人不一样的职业,一个意味着加班、寂寞、不断学习、时刻变化的职业。通过这几个月的工作,我感觉到了从前和现在的不同,这些不同促使我想写点什么。
最大的不同是现在的编程和从前在学校里的编程不同了。那时候一个
程序代码顶多几百行(恐怕很多人还达不到),主要是为了应付老师的作业。为了能够赶快向老师交差,代码大多上来就直奔
主题,没有出错检查和健壮性保证的代码。所以一个
程序很可能只能输入数字,输入字母就会崩溃。由于那些小
程序都只是一些练习,而且很小,所以我们就可以把它交给老师就算完,不去考虑后面的改进和维护。那时候不会去写文档(不知道实验报告算不算),为了显得自己很牛,连代码的注释也很少些。其结果就是,过了一段时间自己写的代码自己都看不懂了。
现在不一样了,写出来的东西会变成商品,商品就要有市场,没有人买就会变成垃圾,所以我改变了,尽管这种改变是很辛苦的。现在写的代码里处理错误的代码甚至要比完成正常功能的多,因为要保证健壮性;变量的命名要符合规范,注释要尽可能的详细,因为现在代码是公司的,会有很多人来维护它;复杂和让人难以理解的所谓“经典算法”已经不被提倡了,因为可读性使然(某些嵌入式系统可能例外)。其实,当初如果多在学校里参与一些项目,或者自己承接一些
软件模块的编写工作,这种改变就会不是那么难了。
韩日世界杯刚结束,高考的题目也出来了,大家都在讲规则,规则成了现在热门的话题。其实从学生到
程序员的转变何尝不是这样?从普通学生向
程序员的转化过程就是一个适应不同规则的过程。你也可以把这种适应规则称之为格式化。
在学校里就要遵守学校的规则,那时候我是以考试不被毙为中心的。不追求高分是因为我不想把有限的经历浪费到无聊的试题中去,但是又必须让自己的成绩〉=60,否则……大家都知道吧。不可否认,学校
教育为我建立了走向软件开发之路的基础,但是存在很多的问题,它太不适应现在社会中的真实的软件开发过程了(关于这个话题要说的可就多了)。还好,我的老师对这批学生进行了一些有益的尝试性的教学。他严格的按照软件工程的方法指导我们完成了一个比较大的项目,让我对软件工程有了比较深的理解,而不仅仅是狂背概念然后抄在试卷上。这也使我被格式化的过程变得不是那么的痛苦。那些从小被应试
教育打造出来的同学就会很麻烦,他们可以在考试中得到高的令人咋舌的分数,但是却没有分析问题、解决问题和计划过程的能力。 到了公司里,规则变了。公司的中心是盈利,对他来说,使用什么技术并不重要,重要的是能够利用已有的技术在规定的时间内完成规定的任务,然后拿到钱,否则死亡。这里的规则不鼓励你去广泛的采用最新的技术,因为它不稳定;这里的规则要求你的代码规范化,因为这样的代码才符合“工厂标准”,你跑了自然会有人来代替你;这里的规则也同样给我带来了压力,
程序开发的过程在项目进度的压力变得不再有乐趣。我现在还清楚地记得主管在项目会上说的话“大家都要加把劲,否则别说工资,我们大家都要走人!”这就像足球场上的中心是进球一样,无论你踢得有多么漂亮多么流畅多么具有观赏性,进不了球一样滚蛋。大家都说德国人机械化的足球太难看,可是他进了四强,你行么? 我们必须努力去适应这个行业,物竞天择,哪个毕业生都一样。
二、关于学习
上了这么多年学了,如果还说不会学习,那就有点搞笑了。学习的方法每个人的不一样,各有千秋吧。有一点我不得不承认,在学校里的学习和成为
程序员后的学习很不一样。
学校
教育是基础
教育,目的是建立
软件开发的最基础的概念。过程不外乎听课—做笔记—写作业,然后就是狂背老师画出来的那些所谓知识点,最后参加考试。当然还有另一条路:上课睡觉,下课后泡美眉/打牌/踢球,考试前粘着老师套题,外加小条,最后参加考试,考完后登门拜访。我比较笨,又没有钱,所以属于前者。这样被训练出来的我好象很多的概念都很清楚,可是如果让我把他们运用到实践中去,那我就傻眼了,而且很容易就会把这些概念丢在风里。这是我在大三的时候的真实状况。感谢MOTOROLA提供的实习机会,感谢《软件工程》老师给我的实践机会(尽管他已经不再是教师了),感谢学校的科技立项经费,我的大四总算没有被荒废,我被初步地改造了。被动学习慢慢地向主动学习转变。
到了公司就发现了自己的不足是巨大的。以JAVA为例,在学校里我就知道RMI是远程方法调用,可是到了这里你就必须要用它来写
程序了。学习就变成了自然而然的事情。这里的学习方式与学校有很大的不同。还是以RMI为例,我先到书店去买关于RMI的书籍,如果你能站着看几个小时并且记忆力好并且不怕店员白眼的话,你就可以省了这笔钱了。这个过程里我对RMI有了基础的知识。然后开始在网上到处
搜索关于RMI的文章,那些文章里有很多的技巧性的东西。最后自己编码实践,通不过就上各大技术论坛去发“救救我,我的……”之类的求救贴,呵呵,我发现现在这样的贴子不少哦,可能和扩招有关系。现在才对某些网友说的“网络上最先实现共产主义”的言论有了深刻理解。
程序员是个注定了要拥抱变化的职业,不断的学习是我们立足的根本。看着那些机械系的学弟还抱着78年定稿的课本,我觉得有点好笑,那一年我才刚刚出世,我现在算是上了贼船了。
三、关于非计算机专业
我是计算机专业的学生,也就是别人说的所谓“科班出生”吧。在上学的时候就接触过很多非本专业的同学,因为共同的爱好成了好朋友。他们喜欢计算机,绝大部分毕业后也做了和计算机相关的工作,所以我一直认为,其实争论科班不科班的没有多大的意义,关键在你的态度,你爱不爱
软件开发这个职业。
说白了,计算机就是工具,如果你没有某一方面的专业知识,这工具也不会用得太好。不懂财务的软件设计人员永远也设计不出好的财务软件,不懂化工的软件设计人员永远也设计不出好的化学分析软件,没有美术基础,你的绘图软件也不会好到哪里去。从这个意义上说,我其实挺羡慕非计算机专业的同学的,他们比我多了一项技能。
目前和计算机专业课程交叉比较大的专业是电子、自动化,我从来不敢在这些专业的学生面前吹嘘自己的那点专业知识,也没有把他们当作外系的,他们可是毕业时很强悍的竞争对手。我还有一个好朋友,他对
操作系统很感兴趣,对市面上能够搞得到的
操作系统都非常熟悉(Solarise这个东东还是当年他告诉我的),他的机器装了好几块
硬盘,有8、9种
操作系统。你们猜他是哪个专业的?------机械工程。最后毕业时,他凭借对电脑软
硬件的熟悉去了一个专门搞小型机的单位,现在还在向我大谈IBM370的好处。
如果非要说非计算机专业的学生变成
程序员的过程和我们这些人有什么不同的话,我感觉最大的不同在一门课上,这就是《数据结构》。这门课可能是对编程影响最大的一门课了,而且非计算机专业几乎不会开。大家都会写代码,可是学过这门课的学生(我说的是认真学习并且理解)和没有学过的学生编出来的代码绝对是不一样的。如果你没有学过,和我的看法相左,我不想无谓地争论,你可以去看一看再说话。
专业并不重要,关键在你的态度,你爱不爱软件开发这个职业。
四、关于未来
你有没有在疯狂加班的夜里感觉到编程的枯燥?
你有没有陷入过无穷无尽的错误里,感觉到产品发布的遥遥无期?
你有没有对层出不穷的新技术感到眼花缭乱,无所适从?
你有没有发现自己的身体好像越来越差,爬几层楼都气喘吁吁? 你有没有发现自己越来越依赖电脑,生活圈子越来越小,连女朋友都要从网上找?
你有没有考虑过自己的未来?
这些我都有,尽管我才工作了四个多月。我承认,我不想永远做一个
程序员,我向往自由和有创造性的生活方式,我不想当代码工人。可是我的未来在哪里呢?
我在彷徨和思索着。小时候,我的理想是成为一个伟大的科学家,建造飞船探索宇宙。再大一点,想当一个军人征战沙场,成为英雄。初中毕业才发现原来钱是那么重要的,于是就想,以后一定要做一个富甲天下的有钱人,至于怎么挣钱还没有想过。没想到那时候就那么俗。上了大学后,我不像人家那样意气风发妄图改造世界,我觉得以后有房有车有个爱自己的人就足够了。我的未来在贬值。现在呢?北京的房价那么高、汽车那么贵、女孩又那么地挑剔,连这都有问题了。这时候的心情就像郑智化的那首老歌《中产阶级》里的歌词一样。 这种迷茫期可能每一个人都有,不仅仅是
程序员。幸运的是,我的迷茫期已经结束了。我热爱
软件开发这个行业,可是中国现在的软件行业水平不高,不是因为中国没有好的
程序员,而是好的
程序员没有被有效地组织起来。我希望成为这样的组织者。尽管我还是个毛头小子,尽管我还没有经验,尽管我还很笨。可是我有我的资本,我年轻,我不怕失败。 我的未来有点模糊,可现在脚下的路很清楚。不想高喊什么豪言壮语,我只要把现在的事情做好。继续写代码积累经验,提高自己的水平,毕竟这是自己的本行;注意行业内外的动向,不仅仅是一个人埋头苦干;不断学习,并尝试着用别的东西来检验自己的能力(比如物美价廉的国家软件水平考试,我报了系统分析员);画画,玩模型,看电影,继续做我喜欢的事,毕竟编程不是生活的全部;坚持锻炼身体,身体好能做很多事的,不用我多说了吧,各位单身的
程序员哥哥们?!呵呵。
从前的政治课本上说过:内因是改变事务发展的主要因素,不要去埋怨外界环境的种种不好,路是自己走的。机会青睐有准备的头。
谢谢观赏,如有雷同,纯属巧合。