最近,我以前为娱乐而建的QQ群特别多新成员进入,根据我多年来练成的敏锐的直觉——又是一年毕业季。现在的学生很有个性,平时不慌不忙、斗鸡玩狗的,一到了临近毕业,就变得“勤劳勇敢”起来了,莫非是想在大学的最后时光里,给老师和妹妹们留个好印象?
他们拼命加群,四处跋涉各种论坛,不为别的,就是为了毕业设计和答辩。其实我真想问一个很搞笑的问题:你们上大学是不是为了交学费的?
毕业设计建议各位还是自己完成吧,这是你步入社会之前最简单的任务了,若是到了真实的工作生产环境,恐怕比毕业设计、毕业论文难上几千倍的任务都有。大学生们总天抱怨说用人单位怎么那么喜欢歧视大学生毕业生呢?是啊,我也有此问,我当年也是万思不得其解,可是,当我挥手告别了母校,不留下一片云彩,开始了丰富多彩的社会与职场生涯后,尤其当我们坐在办公室里,面对着来面试的应届毕业生的时候,我忽然明白了。看来,这不是谁歧视谁的问题,应该说是谁不争气的问题。
记得有一次,经理让我去接见一位来面试的应届生。小伙子上身穿着鲜橙色的T-恤,下身穿着牛仔裤,其打扮有些抢眼,我要是妹子的话,估计有点心动。可惜我不是妹子。我心里想着,这家伙这样斯文,想必学识不凡。但愿他是我想要招的人。
很多人说在面试的时候会特特的紧张,本来可以表现得很出色的,就因为紧张反而弄得不伦不类。我也很理解这种情况,毕竟是还没出校园的人,也属正常。因此,我先跟他出去后花园走走,说一些与工作无关的话,回到会议室,我还给他听听轻音乐,让他在那里玩玩电脑,然后再开始面试。
问题是,那小子真让我失望,但又让我佩服。还没等我问问题,他就自我陶醉了,真是“春风得意马蹄疾”啊!滔滔不绝地向我介绍起他在大学期间的“丰功伟绩”。组了多少人一队玩反恐精英啊,玩《诛仙》有多么执着啊,为了达到游戏最高境界,茶饭不沾,跟得了相思病一样疯狂。我就纳闷了,咱们公司是开发ERP的,又不是做游戏开发的,说这些做什么?
等他报告完他“曾经的辉煌”后,我就问:你简历上说,C++/C#/PHP都学得不错,正好,我们这里有个问题,一直悬而未解,今天你要是解决了,我不仅同意录用你,今晚请你吃饭。
我接着说:“是这样的,我们这个系统是分了开发层和再开发层的,也就是说,有一部分代码是我们编写的,但有一部分代码是动态生成的,知道吧,就是用动态编译。我想你应该知道CodeDom吧,就是System.CodeDom和System.CodeDom.Compiler两个命名空间下的类做的,我就想这样:根据不同的报表要求,让设计人员在窗口中填入成员名、类型等信息,提交后会生成一个类的代码,代表这个报表的信息,这些生成的类都会实现同一个接口,这样不管后面增加多个报表,什类型的报表,都能在窗口中动态显示,我们就不必去修改报表窗口的代码了。怎么样,这个任务不难吧,源代码我都准备好了,你去那台电脑上动手做做,那里有空调,很舒服。待会我叫小妹妹买点好吃的东西给你吃,去吧。”
这当然不是我们公司的项目,我也不可能说这么功能就做不出来,我只不过特特地找个理由,试一下他的能力是否与简历上所写的符合,顺便考核一下他的诚实度。我叫妹子买东西给他吃,是想观察一下他待人接物的修养;跟他说明那里有空调,很舒服,我是想看看他是不是一个贪图享乐的人。其实那些代码我是早准备好用来面试的,我不直接告诉他,那是面试题,只说我们公司遇到的困难,以激发他的潜能,让他有实际表现的机会。
过了一会儿,我过去看了他一下,只见他在那里猛翻MSDN文档,用鼠标滑轮在“对象浏览器”窗口中不断上下滚动。我故意不作声,也不理他,看他后面怎么表现。谁曾想那小子竟坐在那里发呆,明明自己不会,又不好意思请教旁边的人。
我想问问各位读者,如果公司让你负责招聘,你遇到这样的应届生,你会怎么想?
我当时想,这可能是个例吧。毕竟任何类型的学生里面都会有差生。
第二天,又来一位帅哥来面试,他说是昨天那位穿橙色衣服的帅哥的同学。可能昨天那位同学回去把面试题告诉了他,今天这位仁兄,看起来特有信心。然后我也用同样的方法,当他坐在电脑前,可能他想着我又让他写CodeDom生成代码的,他昨晚估计临时抱了一下佛脚。其实,我早把题目换了,这回我的面试题目是:写一个程序,把一张Excel表格中的数据转为XML,然后调用一个Web服务,把生成的XML上传到服务器。估计他还想着CodeDom的事,看到我给他的题目,他有些意外。我说:“Web服务是现成的,上面给了你URI,你直接引就行,引用后你调用uploadSomeData方法就行了。不作其他要求,你只需要实现题目中的两个要求:转XML,上传XML两项就行,我提示一下:uploadSomeData需要一个byte[]类型的参数。”
谁曾想,这家伙也在那里摸了很久。我就问他:“你在选择方向的时候,不是选了.NET方向吗?应该也学了两年吧。这个你不会吗?”他反问我一句:“Web服务怎么引用?”我当场晕倒,连后面坐着的妹子也忍不住笑了一声。
我真心地希望,不管你是面临毕业的大学生,还是刚上大学的新生,我真诚地希望,你们不要像我以上说的那两位仁兄那样,那个样子,你叫我怎么录用?
下面说说面试紧张的问题,可能这个与心理素质有很大关系,学习不要只顾着单向学习,学会怎么做人,怎么做事也是一种学习,更是搞好学习和工作的基础。大学几年,我不相信没有学习的时间,就算你报名参加了不校的所有社团,所有学生会部门,我就不信你忙得连学习的时间都没有。学生之所以叫学生,就是你要过好你的学习生涯。不要再找任何的借口来逃避学习,你这是在跟谁过不去呢?倒头来不也是跟自己过不去吗?何苦呢。
面试紧张,可能还因为未知的因素太多导致的。比如去什么百度、腾讯、(250+110)、迅雷等所谓大企业面试的时候,就特别紧张,是有这样的经历吧?也许你们紧张是因为你们总觉得那里面的人很厉害,自己半斤不着两的,哪能跟他们比?是不是你们都这么想的?所以在面试的时候,总是很担忧。唉!担忧有什么用?该来的总会来,是福不是祸,是祸你躲得过吗?
我实话告各位,那几个公司里面的程序员没有你们想的那么厉害。其实他们的水平跟你们差不多,他们只不过有几个知识点比你们掌握得要好:
1、他们比注册表比较熟悉,尤其是对设置开机启动项特别熟悉,以及他们特别懂修改浏览器主页的技术;
2、他们在Socket编程方面用得比你们熟,特别是后台传输。至于传输什么,你们在面试的时候可以咨询一下;
3、他们写JS脚本的时候,比较喜欢用window.Open(.....)。
除此之外,他们比你们也强不到哪里去,可能比你会喝酒,饭桌上比你们有经验。因为国内的企业,通常是在饭桌上或者床上做决策的。
所以,国内很多公司其实没有战略目标的,即连自己为什么而活着都不清楚。比如某公司,以前是做杀毒软件的,做得很有成就,一开启他们的杀软CPU的占用率马上提升一个档次,查杀木马也不过是在100个变种样例中识别出20来种左右。后来他们心血来潮,去做手机,结果第一批还没卖完就没下文了,然后据说又搞搜索去了。思维特别活跃,点子也特别多,就是缺少一些实事求是的品质。
因此,我劝大家不要那么紧张。面试不过也没什么,千万不要认为面试不过就怀疑自己,千万不要这样,世界上最残忍的不是神仙妹妹不理你,而是你先自暴自弃起来。只要你懂得如何做人,实力雄厚,才华横溢,总会有人发现你的,你的机会无处不在。不要为了逞一时之能,反误了自己大好前程。逞能不是什么好事,牛人不需要逞能的。
也不要扯蛋,有实力不需要扯的,你身边的人都会发现你的,人格魅力是可以感染人的,这是真的,也许你们没见过,我是真实见过的。
关于学习上,一直以来,很多人都摸不着头脑,编程到底怎么学?说实话,世界上哪里有放之四海皆准的方法,别听那些广告词忽悠,它们都是猪油蒙了心的,纯粹被利益驱使罢了。真的,方法,尤其是学习方法需要你自己去总结。所以那些编程初学者朋友们,我建议你们首先最重要的,不是怎么学,而是先测试一下,你对编程到底有没有兴趣。如果你兴趣非常浓厚,即使没有人教,没有网络,没有上课,你也能学会,“世上无难事,只怕有心人”绝对是真理,可惜只掌握在少数人手中。如果你没有兴趣,勉强学也没什么用,人都应该选择自己感兴趣的,自己喜欢的事情做,才会活得自在,否则,生活在天堂,你也会觉得如同地狱一般。
确定自己真的很有兴趣,接下来就是考虑:你希望你能成为什么?你理想中是希望自己学到什么程度?你羡慕那些大神吗?你羡慕那些牛得比大黄牛还牛的黑客吗?这里我要纠正一个错误观点,不要听到黑客就好像一定要干坏事一样,黑客技术和干坏事是两回事,从没有人说过学成黑客境界就非要干坏事不可的。黑客代表的是一种境界,至于做不做坏事那是修养问题了,不是技术问题。
自己要做好定位,不要没有目标地学,那样等于没学。我编程是完全自学的,我学编程那时候,连网都没得上,更别说上什么论坛交流。现在很多人都喜欢说交流,加QQ群也是交流,上论坛也是交流。呸!哪里是交流,明摆着就是提问,动不动就问,想都不想就问,问了又如何,那也是别人的答案,又不是你的答案。交流应该是对等的,各抒己见的,你认为代码可以这样这样写,我认为可以那样那样写,你这样写的好处是什么,我那样写的好处又是什么。彼此交换一下意见,那才是真正的交流,什么是交流?你只会交,而不会流,还谈什么对等呢?
关于刚开始的时候怎么学,说出来不怕大家笑,我刚学VB的时候,我连控件是什么都不知道,我连运算符“&”是什么也不懂,我连怎么关闭窗体都不会。那我现在为什么就会了呢?没人教我,我也没去问人。都怪我这个太“清高”,孔子说“敏而好学,不耻下问”,偏生我就不喜欢问问题,只喜欢自己想问题。说出来我也不害羞。
学编程,书还是要看的,现在很多人不喜欢看书,或者看什么电子书。我觉得真好笑,看电子书的人,估计多数人也不是认真学习的。我绝对不相信几本好书会比一台iPhone贵,那些整天说没钱买书的人,我真想说:没把你们饿死,可见老天爷还是很仁慈的。
入门者比较注重实时效果,所以,根据我多年学习经验,我觉得,示例较多的书就好,行文语气比较和谐,语言通俗易懂的书就很好。我很看不起那些整天开口闭口说一大堆很专业的名词的人,我不知道,是不是会说专业名词的人,写代码就特别厉害。反正我没见过这样厉害的人。可以能你们见过,如果你们不嫌我孤陋,不妨讲给我听听。
一开始的时候,看到书上的代码,初学者肯定会很吃力,哪怕是一个Hello World,也会很痛苦,我有过这样的经历。我不明白为什么书本的作者那么喜欢Hello World,我要是写书,我就偏不写Hello World,什么东西都老抄人家老外的,人家老外技术大牛特别多,怎么中国的程序员就没几个大牛?难道真是像某位网友所说的,中国这种大环境只能出码农,出不了大牛?没调查没发言权,大家可以帮我调查一下,是不是真是这样的,如果是,我真的为中国IT业一大哭。
如果你刚开始学,我觉得你照着书上的例子输入一遍也无妨,最怕你只看书不动手。若是动手实战了,哪怕是傻子都会有所收获的。你且当练习打字呗,但你别完全这么想,第一次写程序当成打字练习,其实是能让你感受一下,哦,原来代码是这样写的,知道吗?好好体验一下吧。
哪怕是照着书上打出一个程序来,不要打完就按Delete键,然后什么都不管了,什么都不想了。你要是这样的话,我建议你去学中医,好样你多养养身心,以后做事不要那么轻浮。
写完你人生第一个程序后,你要像对待你的初恋一样,充满真诚和火热的情素。完了之后不妨多看几遍代码,多想一下,这一行做什么,那一行做什么,为什么先写这一行,为什么这两行代码不能倒过来?为什么要写main函数?为什么要#include?为什么要using namespace?这里为什么要return?return之后会发生什么?这里如果不写if又会怎么样?程序为什么闪一下就退出了?……
多思考,实在想不明白,去问问别人也是可以的,千万不要想都没想,就到处问人,这样很让人讨厌,神仙妹妹也不喜欢这种人。
在你初学阶段,不要急着去看别人的代码,尤其是开源项目,许多开源项目是故意把代码写复杂了,让你读不懂。所以说“我开源了你看不懂,等你看懂了,已经过时了”。打基础的时候就要稳扎稳打,基础一旦扎实了,以后无论你学什么都可以快速上手,也不用别人教,也不用看书了。就像我现在这样,不要羡慕我,不要嫉妒我,只要你实事求是,早晚你会超过我的。
比禽流感、甲流和非典更可怕的传染病是浮躁,现在到处都弥漫着浮躁的气息,估计是中国出不了大牛的原因。上至企业高管,下至员工清洁工,都是练浮躁神功。弄得人不人,鬼不鬼的,老板没文化,总监没品位,经理没教养,员工没底气的。
除非你不学,既然你选择了要学,就要学好。你平时向别人吹什么牛皮都没用,你自己学好了,大家都看在眼里,你身上发出的光芒,就是佛祖下凡一样,把那些曾经看不起你的小人们的眼睛刺得发痒,感染球形真菌。你要是一味地吹,自己又拿不出真才实学,时间长了,人家会把你当笑柄看待。这是人性的弱点,也是人之常情。
不要急,学编程一定要注重实践,上机比看书还重要,但不能不看书。不看书不一定没文化,但没文化的人肯定不看书。
多学学调试技巧也是一种思路,真的,尤其是断点调试,因为在调试过程中,你会看到程序代码一行一行地执行,你会看到代码的思路原来是这样的,你会看到一变量在不同时间的变化情况,你会有许多意外的收获。很多初学者总不关调试方面的内容,真不应该,调试能发现新知识,知否?
当你的基础扎实之后,别高兴得太早,任何时候不要认为你学的已经够了。打基础只是完成了皮毛工作,好戏还在后头呢,急什么。光会Code还不行,远远不够,更重要的还需要技巧,但技巧不能算是知识点,技巧是你对所学知识的总结和变通,注意要变通,不会变通,那等于没学。
技巧既可以自己总结,也可以从别人那里得到,现在的人太肤浅,把鲁迅先生的“拿来主义”当成山寨,一味地山寨,洋鬼子一弄出点什么事来,我们就不管三七二十一,也不去考虑到底好不好,就像狗吃屎一样,拼了老命地去山寨,自己完全处于被动局面,一点主动性都没有。
虽然技术都是外国人创的,我们拿过来用并没有什么不好,人类文明正是在相互融合中进步的。关键是,用人家的技术也就罢了,你干吗连自己的思想也没有?没有灵魂的代码形同一具死尸,毫无参考价值可言,你学的东西再多,今天PHP,明天HPH,后天又学BHB,就算你把全世界的编程语言都学遍了,有个屁用!没一门学得好,没一门学得精,没一门学得深入的,等于浪费青春,为美帝国主义做嫁衣裳,你的人生最宝贵的年华就这么挥霍掉,你自己不心疼,我都替你伤感。
我们可以通过阅读别人写的代码,或者看别人的开源项目代码来总结技巧。哦,原来这个东西还能这样用,我怎么就没想到?原来还能这样写,我怎么没注意到?如此一想,你就大有收获了,从此,你会明白这些技巧,千万不要去记代码,不要去背代码,没用。
那么,怎么阅读别人的代码效果好?我说说我自己的做法,仅供参考。我这个方法是从世界名著《红楼梦》中悟出来的,不得不说,国学真的太伟大了。
在《红楼梦》中有这么一段情节:
刘姥姥,大家认识吧,民间名人。她老人家第二次去荣国府,走了后,贾母让惜春把大观园画出来,送给刘姥姥。于是,大家都在讨论该给多少时间惜春画画。林黛玉本是一位纯真率直、诙谐幽默、才华出众的奇女子,黛玉就说那刘姥姥是只“母蝗虫”,其实也不是看不起劳动人民的意思,纯是开个玩笑,许多人误读了。然后薜宝钗说:“世上的话,到了凤丫头的嘴里也就尽了,幸而凤丫头不认得字,不大通,不过一概是市俗取笑。更有颦儿(指黛玉)这促狭嘴,他用‘春秋’的法子,将市俗的粗话,撮其要,删其繁,再加润色比方出来,一句是一句。【蒙藏本侧批:触目惊心,请自回思。】这‘母蝗虫’三字,把昨儿那些形景都现出来了。”
重点是薜宝钗那句话,我就是从这里想到如何阅读别人的代码最有效率。那就是用“春秋”之法,取其要,删其繁,也就是说,不要一行一行地读,也不要在某一行看不懂就拼命地在那里打转,没有实际意义,更不要去记别人的代码,那终究是别人的,说不定你能想到比别人更妙的思路。看代码的时候,要注意全局思维,不要老盯着那些细节,要从宠观层面去阅读,知道大致思路和方法就行了,剩下的代码可以不看了,代码不管怎么写,语法都是固定的,所以,代码谁不会写,关键是,你有好的思路吗?
当你知道某个功能的原理和思路后,就应该自己动手来写,不要再去依赖别人了。写好之后,如果时间够的话,自己再想一想,能不能有更好的方法,若想到更优方案,不要犹豫,马上动手尝试,失败成功没关系,重点是你真的懂了。不去动手,老在那里胡思乱想,想一辈子也不会懂。
平时不在工作的时候,可以把写一些短代码,小程序当作娱乐也行,如果你愿意这样做的话。我相信,你如果真的爱编程,应该这样做。不需要写很复杂的程序,只不过可以从中得到一些体会,一些心得罢了,往往许多大技巧都是从一些不经意的小程序中悟出来的,再复杂的东西,都是由许多个简单的东西组成的,不要因为简单,你就看不上眼,那你就太高估自己了。
正如很多人所说,编程是很枯燥的,很乏味的,但是,我不这么想,我总是从代码中找乐趣,一切的一切,都是随着你的心态而变化的,情绪是人类最大的顽敌。你战胜它了,你才了不起。
在写程序的时候,你甚至可以听一些能让你迸发灵感的音乐,编程本来就是一种艺术,一种艺术搭配另一种艺术来相互渗透,相互提升,也是一种不错的生活方式。不要总是抱怨生活没有情趣,你一天到晚老干那些庸俗的事情,生活当然没有情趣,人生当然没有乐趣了。那也说明你的精神世界太失败了。在今古中外,有许多前辈们都可以成为我们学习的榜样,我们为什么不进反而思退呢?为什么要这样挖苦自己呢?不值,不值!
这辈子你算不算成功人士,不是你拿多少工资就完事了的,你还得权衡一下得失。拿高工资,哪一天过劳死了,赚那么多钱有屁用,没福去享受,留着做什么?做慈善?人家不希罕!一辈子是否是事业有成,还得看谁能笑到最后,谁既能实现梦想,又可以健康快乐地活一辈子,那才叫成功。不然,你以为过劳死就可以当革命烈士,受万人景仰吗?做你的春秋大梦去。不懂得修身养心本来就是个笨蛋,还指望别人景仰,那才叫没天理。
人类最可怕的是自信,自信不知道害了多少人。自信 = 自大 + 迷信。很多时候,做事情我们不应该说很自信,也不要太自信。我们应该说:“我有信心”。信心 = 信念 + 决心。
我虽不才,愿仅以此拙文送给所有在校大学生和应届毕业生,以供参考。本文内容只代表我个人意见,你可以同意,也可以不认同。但不管你认不认同,我们都是IT界的一员,殊途同归。