您的位置:首页 > 理论基础

计算机专业学生如何给自己定位

2007-01-18 16:08 344 查看
和我一样,很多学习计算机的学生在大学都有个困惑,到底要学什么,将来要干什么,迷茫中度过大学的美好时光。如今大学的学习接近尾声,我有幸获得了到印度Infosys公司总部实习的机会,4个月过去了,对于这个问题似乎有了些见解。

印度的软件公司从TCS,到Infosys, 到Wipro都是做IT service或者说是软件外包为主,国内有的人不屑于软件外包,认为没有技术含量,如果你是个牛人,5年之内弄出一个中国的微软或者IBM我也无话可说。确实,印度在软件业有和中国的制造业一样的毛病,就是没有核心技术,更像是在打工,Bangalore更像是一个大的软件工厂。但是单单从公司发展的角度上讲,印度的软件公司做的很成功,并且可以预见,软件外包在将来的若干年内还会有极其良好的势头, 因为对于Infosys这种巨型软件公司,在已经建立起了良好的信誉,公司运营起来风险很小,只要全球500强的企业还需要软件这个东西,Infosys就有饭吃。

到目前为止,给我感触最深的是它们极有针对性的员工培训,给我了一些启发。对于Infosys这样的公司,大量需要的不是编程能力丰富,精通数学知识,极其具有创造力的计算机专家,这样的人大概在Google吧,Infosys大量需要的是严格遵守公司守则,懂技术,能够按时完成工作的程序员。Google和Infosys都是规模很大的公司,都很具有活力, Infosys和Google这种公司虽然还是没有办法比较,但是也无法否认像Infosys这样的公司的成功,只是成功的轨迹不同,Infosys 20岁了,Google却只有8岁。Infosys的员工培训可以在4个月将一个非计算机专业的本科生培养成一个公司可以立刻使用的员工,讲授的内容几乎涵盖了国内大学计算机专业的核心课程,课程的特色,就是将所有的知识点到为止,不做深入,但是一但你掌握了他讲授的知识点,你就可以拿起键盘,根据客户的需求编写程序,需要特别指出的是,他们的授课老师都非常出色,讲起课来,条理清晰,重点突出。

国内没有像印度公司这样的软件公司,也无从谈起优秀的员工培训,关于是先有优秀的员工还是先有优秀的公司的讨论也没有意义,目标都是一样的。目前的现状是,学生整天嚷嚷找不到好工作,嫌公司工资低,公司却整天叫喊,大学没有培养合格的人才,学校倒是承担着年比一年的就业率压力,不断对自己的教育模式争来争去。Google和Infosys需要的人才很典型,所以我认为计算机人才可以分为两种,计算机专家和程序员。‘闻道有先后,术业有专攻’,作为一个大学生,重要的一点就是务实,毕业后确实面临着切实的挑战就是就业问题,我相信很多大学生都是梦想着做一名计算机专家,梦想着进入Microsoft, IBM, Google, 但是大多数的大学生又确实连做好程序员的标准都达不到,大学本科教育本应该都是培养计算机专家,程序员本应该是职业教育的事情,可是目前国情是本科生的就业都成问题,大量的大学生以自己的学历和学校自居,十分的傲气,涉及到公司真正需要的技术,却狗屁不懂,一窍不通,研究生都不会编程的大有人在。大量的所谓的名校以精英教育的模式迫于就业的压力搞得却是职业教育,结果教出来一堆废物学生,到了公司全部都是从头学。精英教育就是精英教育,职业教育就是职业教育,搞不起精英教育的学校,不如搞职业教育,这样还能造福社会,创造些价值,否则不伦不类的,倒霉的是花了钱,参加了高考,却没学到什么东西的学生。个人认为,由于中国的应试教育造成中国的高中生仍旧可塑性很强(因为高中生仍然很单纯),因材施教,就是人才,否则当然是一堆蛀虫,为什么把大学生叫蛀虫上过大学的人都应该理解的。

上面说的都是政府的事情,‘肉食者谋之,又何间焉‘,政府的事情是我们无力改变的。无论大环境怎么样,我觉得每个大学生自身还是应该对自己的职业有一个规划,对自己有一个明确的定位,如果你觉得自己将来的目标是计算机专家,需要深入的学习包括高等数学,线性代数,离散数学,概率论等各种数学科目,以及十分深入的学习一些计算机专业课程比如数据结构,操作系统,编译原理,数据库,计算机网络等,这些课程包含了计算机前辈宝贵的经验,最好在学习的基础上,能有自己的思考。而深入的学好这些计算机专业课程的一定需要相当的编程实践,所以一定要掌握一门编程语言,可以根据自己的喜好,但是因为C语言和C++具有更大的灵活性,利用这些语言来学习可能有更大的收获,选择JAVA却更有助于快速的理解概念和实现想法。个人最鄙视对于到底选择那种语言更好的之类的争论, 一种语言的优点正是它的缺点,没有全能的语言,又要灵活性,又要简单易用,那不是既当XX, 又立XX牌坊之类的争论么,各种语言的存在都有其意义,该退出历史舞台的时候自然会消失。如果自己将来的目标是程序员,也要认真的学习刚才提到的科目,但是对于一些数学科目不用做太深入的研究,我不是说不学这些数学,数学是基础,会对学习其他科目造成影响,只是一个人的精力是有限的,应该将自己的时间花到更有利于自己发展的知识上。每个人的优点和擅长的方向不一样,只有扬长避短才能使自己的价值发挥到最大,我觉得做一名成功的计算机专家是需要强烈的兴趣和天赋的,也就是说不是每个人都能胜任,是否适合在研究的方向发展只有自己最清楚,务实是非常重要的一点,我们经过12年的学习来到大学,自己在数学和创新方面的能力是否突出自己应该清楚,记住,不是优秀的问题,而是非常突出的问题,如果数学能力不突出,没有创新性,还是放弃计算机牛人的梦想比较好。在Google的黑板报上看到Google工程师想的问题:
转载如下:
[align=left]
有一次,我笨得忘记了该如何在一个复杂的有向图中找出两点之间的最短路径。身边的一位工程师很郑重地告诉我说:“你知道吗?解决这个问题有两种方法,聪明人的方法和笨人的方法。聪明人的方法是:照着算法教科书的讲解,实现那个时间复杂度相当大的名叫嘀嘀哒嘀哒的最短路径算法。笨人的方法时间复杂度最低:找一堆线头来,按照有向图的结构连成一张网,然后一手拿一个顶点,向两边一抻,中间拉直了的那条路就是最短路径呀。”

“哇噻!笨是一种多么伟大的品格呀!”我眩晕得说不出话来。于是,我们这两个自认为足够笨的工程师足足花了两周的时间,用计算机程序模拟了不同材质的细线在北半球的重力条件下相互连接并在两个反方向作用力的影响下向两边伸展的整个物理过程,然后以此为基础实现了时间复杂度最小的最短路径算法。——瞧,在 Google,什么东西都可以自己动手实现,什么东西也都可以推陈出新,我们的杰出表现就是最好的证明。[/align]
[align=left](来自Google 黑板报 -- Google 中国的博客网志: Google 工程师二三事)[/align]

如果你不是计算机专家的话,你就能看到了你和计算机专家的差距了吧

个人认为,原来说什么数学是学习计算机的人最重要的学科,全是谬论,以偏概全了,确实,数学的学习很重要,但是对于一个程序员来讲,数学绝不是最最重要的事情。作为程序员除了对数学有一定了解外,要着重学习数据结构,操作系统,编译原理,数据库,计算机网络等这些科目,能够快速的运用其中的知识,也许你不知道怎么去创造一个最短路径算法,但是你要知道怎么使用别人的经典算法。除了使用别人的成果,还要有快速的学习新知识的能力,因为软件技术更新很快,不同的时间,不同的项目,可能会运用不同的技术知识,当然,如果有志向与嵌入式,汇编之类的方向,技术更新可能没有这么快,不过入门门槛和学习时间也相对更长。工程的含义是你能读懂并使用他人已经创造出来的工具去完成你自己的产品,这并不是一个简单而低级的劳动,同样需要大量的智慧和能力,这样的能力确实可以后天培养的,只要你努力。

另外,对大学生来说,很重要的一点就是英语,这绝对是大学阶段的重中之重,无论是参考国外的论文,书籍,资料,还是需求设计文档,还是与客户交流,英语无时不在。大学4年也许因为老师的原因,环境的原因,你的技术水平很一般,技术你可以到工作后再学,但是大学正好是学习英语的黄金时间,没有理由不学好,如果英语不好,绝对会成为自身发展的一大障碍,印度人成功的原因里,英语优势,是巨大的原因。

以上是我对两种人才定位以及要求的理解,在我的观念里,很多人混淆了这些概念,于是很盲目,这样进行一个分类,总归会清晰些。想成为哪方面的人才,就要像那方面努力。我也才本科毕业,目前在印度公司实习,将来还要进入研究生的学习,我将自己定位为一名软件工程师,而从基础的程序员做起,成为一个优秀的项目经理也是我的目标。有人说中国在将来的10年是软件赶超印度的黄金时期,责任似乎是落在了我们这代软件人的身上,赶超印度10年之内也许不一定能实现,因为他们发展也很快,但是我相信10年不行,也许是15年,20年,仅仅是个时间问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: