去年带了几个新人,越来越觉得软件开发这行还是需要一定的"天份"的,其实每行都需要一定的"天份",每个人都有自己最为适合的行业,特别是技术行当而言,如果真的希望在软件的技术领域有所发展的话,勤奋、吃苦的精神固然是必须的,但以下的几点素质却是基本的,而有些我觉得完全是靠天生的,或者后天小时候的努力才能培养出来的,如果不具备的话,我觉得这样的人就不是很适合从事软件技术行业:
1、逻辑思维能力
这点非常非常的重要,而且我觉得这点在等到大学毕业后再培养真的非常难,从这点上去看就会发现数学对于软件行业的人来说是非常重要的,为什么这么说呢,数学正是能表现出一个人逻辑思维和举一反三能力的最好的考试,而逻辑思维和举一反三刚好是软件技术行业最为基础和重要的两点基本素质,为什么这么说呢?
软件的开发其实和数学的解方程是个非常类似的过程,都是对某个问题求解,有些问题甚至完全不懂软件开发其实也应该是能解决的,如果不懂具体的如何写代码的话顶多差的就是把解决问题的方法转化为代码而已,而这个培养起来我觉得并不是什么难事,这个只要多写写代码就行了,举一个简单的例子,在培养新人的时候曾经出现过个这样的问题:要生成一个九位的字符,字符由流水号构成,当不足九位的时候补足九位,例如1就形成000000001,9999就形成000009999,不需要写代码,只需能说明会怎么做就是了,我觉得具备了一定逻辑思维能力的人这样的问题都是很简单的。
在将来我自己面试新手的时候,这方面的面试需要重点加强,以前我忽略了对于这个方面的考量。
2、举一反三能力
举一反三的能力对于软件技术行业来说更是非常非常的重要,其实软件开发日常的工作中通常你所做的东西都是有类似的东西的,只是会稍有变化,这个时候就需要具备举一反三的能力。
这项能力在将来的面试中也需要重视,需要让面试的人当时学习一个以前的未知领域,首先给面试的人员一个解决方案,然后将问题稍加改变,看看面试的人是否可以做出解决方案来。
3、自学、独立解决问题的能力
自学、独立解决问题的能力我觉得这是为什么一定要读大学的原因,读大学就是培养自学、独立解决问题的能力的。
在做软件开发的过程中,不论是新手、老手都会碰到各种各样的问题,这个时候一定要学会有效的解决问题,在perl界有一篇给新手写的解决问题方法的建议的文章非常的不错,
http://www.perlchina.org/archive/archive.php?action=archive&page=6,建议做软件开发行业的人应该都读读。
个人比较推崇的解决问题的方法:
3.1、在时间较为充裕的时候,google--->看原理---->问身边的人---->问IM上的人--->找相关的专业论坛---->学习相关的知识
3.2、在时间紧张的时候,问身边的人---->问IM上的人--->google--->找相关的专业论坛---->看原理---->学习相关的知识
不过即使在时间紧张的时候,当时间闲下来后,都应该整理下问题的解决方案和学会隐藏在问题后的本质。
4、对软件开发的兴趣
这点呢,还比较难说,因为新手来说无法判断自己是否有兴趣,很多人也许是向着软件行业所谓的高薪而进入这个行业的,兴趣而言,我觉得判断的标准就是能否为了一个开发上的问题废寝忘食,:)
另外一个方面来说,做软件开发必然会面临很多重复性质的工作,这个时候只有有兴趣的人才会继续的对技术坚持下去,才会继续的去钻研相关的技术,从而提升工作的效率、质量。
当然,除了上面说的几点外,其实象承受压力的能力、沟通交流能力、团队合作能力、责任心、上进心等等都非常的重要,但这些能力我觉得相对而言是可以培养或用公司制度等方式来控制的,但以上说的4点基本素质我觉得非常的难培养,尤其是1、2、4这三种能力,对于希望一直从事软件技术行业的人来说我觉得是否具备以上几点非常的重要,否则还是早点转行比较好,哈哈。