下面的话仅仅是给初学者的一些建议,老鸟请屏蔽。
1. 问题描述不清。
作为一个程序员很重要的一个能力应该是解决问题的能力,在解决不了自己问题的时候最起码要能做到清楚地描述自己的问题好让其他人解决,如果你的问题别人看都看不懂,怎么帮你去解决。这样问问题的又大致分为以下几类
1.1 确实表达能力有问题,描述不清楚的。
那应该去锻炼锻炼这方面的能力。如果你没有这个基本能力,那么领导的话你听不懂,你的话领导不明白。干活的时候不仅和同事无法交流,甚至可能活都是你干的,功劳最后还是别人的。
1.2 问题描述极其简略,那意思就是分我给了,问题就是别人的了。
这种人在工作中肯定也是不负责任型的,发问题的目的是解决问题,所以发布的信息应该对其他人解决你的问题有帮助,而不是只要发了问题,事情就是别人的了。
1.3 空泛的问题。
有些人问的问题就是一本书的内容,比如"我要做个XXX管理系统,麻烦那位给我写一下,只要增删改查就可以了"。放心,这种人代码放上去也看不懂,后续问题还多的呢。
2. 没有学会在失败中成长。
很多人写的代码及其不规范,我在回复的时候有时会点出来,有时候就是简单的拼写错误导致的错误,可是发帖者只关心他当前的问题是否解决了,不关心他为什么犯这个错误,为什么别人一眼就能看出来,我要怎么避免类似的错误,而且经常将我注释中注明的其它该注意的问题一律忽略。 这样怎么能提高?
3. 由于没有工作经验,职业素质不足。
如果你在工作中问你的同事问题,是否应该先问问对方是否有空,而且再加一个"请"字。问完问题了,无论结果如何,是否应该加个谢谢。反正我是见过很多人QQ上或者群里问问题不知道说这些。甚至于我都说了,我现在忙,2个小时以后再给你写,对方还是紧追不舍,拜托,你给我发工资啊?
还记得有次推荐了自己的学生去某公司,后来这个公司的朋友给我说,这个学生问他一个算法的问题,我这位朋友把思想和他说了,他居然还继续追问,那究竟该怎么写呢?我当时听的脸都红了。没想明白的可以想想我这学生说的话有什么问题。
碰到这种问题,你必须先去写程序,如果完成不了把你写的程序让对方修改这都是下策了,绝对不能让别人去替你完成,尤其是不能让同事去替你完成,这样你想想如果你要试用转正的时候,他会给你什么样的评价?
其实在公司中,如果你的Leader没有具体安排某人去带你的话,那么其他的同事未必一定要去帮你,毕竟自己的工作才是最重要的。而即使安排了某人去帮你,对方肯定也有自己的事,从常识上来说是不能不停地打扰的,而且如果这些东西你自己不看不想不做只知道问人,别人会对你的印象很差。
还是有人会说,那我还是不会怎么办,很简单,拼了命地去看去学。我刚来上海的时候在第一家公司,前三个月平均睡眠时间也就是6个小时,没人能问问题,一般下班后看书到2点,晚上睡在公司,午餐公司报,晚饭我经常就是3元一碗的面,吃苦这两个字,岂是说说这么简单。
唉,还是那句老话,什么事别人都帮你做了,你是干什么吃的,公司给你发工资干吗?
顺便提一句,初学者面临接触的难题经常会说"学校没教过","老师没讲过",这种推卸责任的回答可以让你的项目组长血都喷出来,你至多能说"这个东西我没有接触过,请问是否能有相关的资料可以参考"(请注意且勿自以为是,我见过这样的回答"这个东西我没做过,把你们以前的源代码拿来让我看看")。自学能力是程序员必需的能力,你总是会发现有那么多的东西是在学校里从来没有学过的,甚至于你的老师也未必一定会,但你现在要去搞定它。
前面提到初学者需要注意职业素质,其实老鸟也一样。
我老婆所在的公司一次面试一个程序员,对方是做过搜索引擎开发的,薪资要价大概在10K~15K,应该说从技术的角度来说此人没什么问题,但这个人已经是在这家公司的第三个项目小组面了,面试中显示此人不是很有礼貌(把做完的纸仍到面试官前面、翘腿抖腿手不停地转笔),而且口气很自负,说话绝对。面试官也就是项目小组中的tech leader回来就问了大家一句"你们愿意和这样的同事共事么?",结局可想而知。
我不想去评价公司如何如何,因为我们改变不了公司,我们只能改变自己,如果你觉得你技术不错,但你连着应聘了三个小组都没成功说明了什么?很可惜的是,我相信这位应聘者虽然经历了这些失败但肯定还是不知道自身的问题。
4. 避免无谓的狂妄自大。
有时候看标题就是"我发现了微软的一个bug"、"C#的继承机制存在很大的问题",这要是ivony或者sp1234这样的牛人说我可能还会将信将疑,多数情况下最后发现是楼主的问题。不过好点的是,一般自负的人比不自信的人容易找到工作。
5. 学会吸取他人的经验
上面提到的东西可能对某些初学者有用,也可能没用,请勿对号入座。我经常告诉初学者的都是我多年的工作经验,愿意听就听听,不愿意听我也不想的去辩驳。我和我老婆聊的时候都有这个感触,如果在我年轻的时候有这样一个人告诉我该做什么,该怎么去做,我想我们会少走很多弯路。
刚入行的也不用太担心自己将来的发展,我在工作的前3年内都没有职业规划,这是非常不应该的。更不要说我27岁的时候还是天天泡在网吧里,网吧里的一张沙发就是我晚上睡觉的床。那时候唯一会的事情就是,逃避问题,逃避责任。我相信看这个帖子绝大多数的人就算现在奋斗也比我那时早。
给初学者的最后一个建议是,你一定要有自己的职业规划,你要知道你今年应该达到什么目标,明年该干什么,三年后我要达到什么目标,目标不要太高,但是是你蹦一下就能达到的。
就.NET而言,算法(数据结构) + 语言能力(英语、日语) + 其他能力(表达、团队、逻辑、管理) + 具体语言的基本功(比如C++, C#语言 含面向对象概念) 是非常重要的,现在拼的就是个综合实力,别指望单凭某些技术打天下,asp.net再好也未必能应聘到微软和google。也别动不动就说.NET工资低,我认识的朋友做.NET的税前很少有低于10K的,虽然不高,但料想也不算低吧?
这里的算法就是像排序、查找、字符串相关的算法,数据结构是计算机专业必须要会的东西,也是大公司面试必考的内容。不仅仅是做出来,还要考虑时间负责度和空间复杂度,有空了专门开个帖子谈谈这个话题
6. 人脉。
再有一个很关键的就是人脉了,找工作最难找上的就是投简历,最容易找上的一种就是熟人介绍。你认识的朋友多了,将来机会也就会多些。
我老婆第一次跳槽是到我所在的公司(当时我和她还没谈),她的一个朋友也是我的朋友,可以说过来就是走走形式,我们这里负责面试的经理也很给我面子,面她的时候带着我一起面的,就是聊了聊家常就进来的。
第二次跳槽就纯粹是偶然了,ust在VMM的超人群里吼了一声问有谁想跳槽,我接了个话,ust给了一个联系方式,也就一周她就跳槽成功了。
你认识的人多了,机会自然就会在不经意的时候找你。
广结朋友,帮助别人迟早你也会得到别人的帮助。
先说这么多吧,如果有朋友想听,后面再补,也希望各位朋友事事顺心!
关于初学者如何提高自己的职业素质,如果发简历,面试等等这样的问题,强烈推荐去听听 www.itcast.net中Leo的系列课程