注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 《网络规划设计师教程》..
 帮助

给技术人员的忠告


2008-03-24 00:23:05
 标签:开发 忠告 学习   [推送到技术圈]

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://expert.blog.51cto.com/339473/67579
    10年内,我面试过的技术人员,至少在1000人之上。因此,根据我的面试体会,想给技术人员提一些忠告。
    首先,面试被刷下来的人员,最多的,是因为基础功差,基本概念、基本原理不清楚。我在面试中考的基础题目,大部分都是大学学校里教的课程,比如数据结构、基本算法、语言基础,没有多少人清楚的。很多人在大学里面基本上就是玩,这些基本知识根本就没学会,并且很多人非常固执的认为,这些知识都过时了,做项目也根本用不到。很多工作5、6年,甚至7、8年的技术人员,连C语言中memcpy和memmove之间的区别都搞不清楚,甚至有人根本就没听说还有memmove 这个函数,真让人苦笑不得。至于HashMap,集合、链表就更是一塌糊涂。因此,我给的第一个忠告:务必把基础知识、基本概念都弄明白,要一清二楚,这是做任何项目、任何产品的基础,在项目和产品开发中都会大量应用。如果你不懂这些基础知识,就能在你的团队中进行开发,那只能说,你们团队开发的东西太烂了。
     其次,面向对象的概念和思想,务必要深入理解,加强实践。其实面向对象只有三个基本概念,对象之间也只有四种关系,因此学起来不难,真正难的是,深入理解,透析其中的真正内涵,在软件开发实战中活学活用。面向对象这么点概念,统领软件开发这么多年,至今还是主导地位,其它的方法,只能是作为他的补充而已。因此,我们有什么理由不把面向对象好好学学呢?很多Java程序员认为,Java是面向对象的语言,我只要用Java来开发程序,我就掌握了面向对象了。这是极其幼稚的想法,你离面向对象还十万八千里呢!
    第三点,目前公司里你所从事的项目开发或者产品开发,只不过是给你一个机会,让你能接触到相关的技术点,但它不是你应该掌握的全部。举个例子来说:你加入XX开发团队后,发现这个项目组采用了Spring框架来配置后台的数据库连接池。你以前从来没有接触过Spring,通过这个项目,你就学会了怎么用Spring配置数据库连接池。很多人也就是这个状态,项目上用到1个技术点,自己就学到1个技术点,不会通过这个机会,学到更多的技术点。因此,下个项目如果用Spring配置别的东西,他就不会了。正确的思路是:项目和项目在业务上差别可能很大,但技术上通常差别很小。一个项目给了你接触到相关技术的机会,你应该抓住这个机会,把相关的技术领域都学会。因此,在这个例子中,你应该深入学习Spring,看看它的原理是怎么回事,他还有哪些强大的功能,有些可以引入到你现在的项目中,解决项目组中别人没有解决的问题,还有些知识和技术这个项目上还用不到,你也应该涉猎学习。
     第四点,什么时间学习?很多人多说,现在项目时间太紧,等这个项目做完后,没这么紧张,时间比较轻松的时候再学吧。结果这个项目做完后,下一个项目接着就来了,于是一直也没时间学习,自己的技术水平也一直在原地踏步。请大家放弃这种想法。软件开发职业生涯,一直就要在这种时间紧、任务重的环境下度过,这就是我们的生存环境。因此,我们必须在这种环境下学会学习和提高。就在每个项目过程中,围绕与本项目相关的技术,展开学习,多思考,多查阅资料,在项目中学以致用,不断实践和总结,这样才能做完一个项目后,自己就能在技术水平上提升一大块。
     第五点,先求精,后求广。人的精力是有限的,不可能自己每个方面都懂,都是专家。在大型软件开发过程中,什么都懂、什么都不精的人,是没有任何价值的。因此,技术人员应该先静下心来,将一个技术领域内的知识深入理解,融会贯通,达到精纯的地步,然后才可以去学另一个技术。先使自己成为专家,对软件技术形成深刻的理解,到达相应层次后,再向广度发展。
     第六点,学会沟通。大多数的技术人员,那么是内向,不爱与人沟通,要么是过于自信,不屑与人沟通,听不进别人的不同意见。这些都是导致自己水平无法提高的重要原因之一。从智力上讲,大家的智商都差不多,因此不可能你比别人聪明多少,别人也不会比你苯多少。因此,积极和别人沟通,交换想法和思路,学会倾听他人意见和建议,可以开阔自己的思路,丰富自己的知识,在很多时候可以让自己少走很多弯路。
     第七点,一定要有老师带你,尤其是突破你的现有层次。有比你水平高、经验更丰富的老师带你,可以让你迅速掌握很多软件实践的精髓,迅速提升你的能力。所谓名师出高徒,就是这个道理。很多人就靠自学,自己看书,或者从网上找资料,然后项目中实践应用,自己做设计、做架构、做需求,然后认为自己很行。这是非常危险的,我接触过很多这类的人,非常高傲,盲目自信,对自己有过高的评价和期望。这个做法的最致命问题在于,你自己理解的,很可能是片面的、甚至完全错误的,另外也没有人会指出你的错误,告诉你真正正确的答案是什么。尤其是从程序员到软件设计师的过程,层次的提升,必须有比你高至少一个数量级的高人来指点你,这样才有可能。

本文出自 “expert” 博客,请务必保留此出处http://expert.blog.51cto.com/339473/67579



类别:随笔 技术圈()阅读() ┆ 评论()推送到技术圈返回首页  


    文章评论
 <<   1   2   >>   页数 ( 1/2 )  
2008-03-24 10:05:11
谢谢 一定牢记这些

2008-03-25 10:54:25
  第七点,一定要有老师带你,尤其是突破你的现有层次。有比你水平高、经验更丰富的老师带你,可以让你迅速掌握很多软件实践的精髓,迅速提升你的能力。

但是有时不一定能有这么好机遇,遇到一位好老师.尤其较小的单位.


2008-03-25 16:25:27
首先我觉得基础是必不可少的.有些人甚至不懂CPU怎么去给线程安排时间片,就开始开发多线程程序...以致给程序留下种种难以发现的隐患........有句话说得好,钱能先生说的..........勿在浮沙筑高台....

2008-03-25 23:15:35
赞同前面六点, 不同意第七点.

只要形成了交流的气氛, 同水平的人也可以迅速获得提高. 新技术的产生和传播都很快, 不会有那么多的老师来带你. 很多时候大家都是共同学习, 共同提供. 实际上, 在IT行业, 资格,资历不如其他行业那么值钱, 因为变化太快.

一些自称老师的人倒往往有误人子弟的嫌疑。

2008-03-29 20:26:54
you said :“很多工作5、6年,甚至7、8年的技术人员,连C语言中memcpy和memmove之间的区别都搞不清楚,甚至有人根本就没听说还有memmove 这个函数,真让人苦笑不得。”

为什么一定要知道C呢 ?为什么一定要知道memmove这个函数呢 ?有的程序员搞了十年的PHP,有的程序员搞了十年的Java,就是没有搞过C,当初在大学学的那点基础知识早忘完了,我记那么多用不着的东西干什么 ?

2008-03-29 20:33:20
you said "一个项目给了你接触到相关技术的机会,你应该抓住这个机会,把相关的技术领域都学会。"

我觉得只有神仙才能把相关的东西都学会。 用到哪个知识点,就学会哪个就够了。要学到渔,而非得到鱼。

2008-03-29 20:34:33
第二点,没个3,4年的开发经验要深入理解面相对象那是不可能的。

2008-03-29 20:38:36
只同意你的4,5,6 三点。不过这三点是人所共知的。 ms你是个expert,你竟然对自学全面否决啊,自学了,成长了。但有的人很谦虚,有的人认为自己很行,这是个人品质问题,和自学不自学无关。感觉你在误导别人。

2008-03-31 14:13:14
博主可以把内容排版得更好看一点哦
比如选择10号字,每段之间空一行

2008-04-01 09:29:17
很不错的建议。顶

2008-04-02 09:40:17
感觉这里的氛围不错,畅听各方之言,
不错。

2008-04-02 11:42:57
楼主说的话有些误人子弟呢,项目中需要用什么就会什么,这取决于你的学习思路,整合资源的思路,与人交流协合性

2008-04-02 15:21:47
不错的建议 牢记

2008-04-02 17:19:40
同意大部分观点!

2008-04-03 15:12:22
不错!!

2008-04-06 02:58:45
难免会有反对或不同的声音,支持博主。期待更多的文章。我个人觉得你的文章写的很实在,很有内容。

2008-04-08 23:13:02
OK


2008-04-11 22:14:31
很好
要好好的看看

2008-04-18 07:58:27
早九点加班到晚九点,什么时间学呢?

2008-04-21 22:45:43
学习,就是在工作中进行的。做任何一个任务,都要求自己把已经学到的知识应用到实践,同时对要解决的问题和解决方法进行深入思考,寻找相关资料,并积极动手实践,寻求最简单高效的解决方法。

 <<   1   2   >>   页数 ( 1/2 )  

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: