你适不适合做一名码农(程序员)

之前空闲的时间在知乎写了一篇关于如何自学计算机软件知识的回答,收到了很多好评, 也开始有很多人私信问我如何自学。自己写的回答受欢迎感到高兴的同时,我通过私信和留言给我的问题,也在思考一个问题,什么样的人才适合做一名程序员。现在无论是线上还线下,都有越来越多的教育机构,速成程序员,我不否认里面可能有还不错的课,但这样“速成“的班,大多应该都是骗钱的。不可否认,在当今社会程序员算是一个中高收入的职业,所以越来越多的人想去当程序员,可我今天想聊聊的是, 可能并不是每个人都适合当程序员,或者说,做程序员会有很好的职业发展。所以我觉得在你撸起袖子下决心成为一名程序员之前,在你花钱花精力去学习之前,可能应该仔细想想,自己是不是适合这个职业,做这个职业会不会有很好的发展。

在开始聊之前,我想先说明,我自己的计算机知识完全在美国期间自学的,也并不认为自己算是个很优秀的程序员,以下观点完全是我自己的一些想法 ,肯定有很多不准确的地方,有说的不对地方,也欢迎多交流。

自学能力:

这可能是做一名程序员最最重要的素质了。这里说的自学能力不仅仅局限于看一本书,或者通过网络课程自学的能力。因为这个行业发展太快的原因,很多技术,平台,语言都在不断的迭代更新,所以一个程序员永远都在不停的学习,学习新的平台,学习新的语言(编程语言),学习新的架构,等等等等。说具体一点,自学能力在这个行业可以主要分为两点,一是通过搜索寻找答案的能力,第二是通过示例举一反三解决自己问题的能力。有人可能会认为,搜索谁不会,这哪还能算能力。这里说的更多是去自己搜索解决问题的主动性,举个例子来说明这个问题,我之前带过一个新人,他会为我说A问题怎么解决,我会告诉他去用tool B, 他会说好,然后没过多久,他又回来问我tool B怎么用啊。这样的程序员不仅不可能做的好,还会被同事和领导烦死。一个程序员,应该有在别人给你指引一个大方向,或者完全没有人告诉你大方向的时候,通过搜索,去一步一步解决问题的能力,然而每一步你能找到的答案,基本上都不可能是完全针对你的问题的,你都要通过去看别人的问题,别人的解决方法,去快速的用类推的方法尝试解决自己问题。比如我在那个自学计算机的回答里,提到了几门伯克利的课程,里面给了课程号和youtube的链接,然而就收到了很多人问我看不了怎么,还有人说链接过去有版权的问题被限制了,问我该怎么办。如果这种情况下,你想不到去晚上搜课程号找新的链接,或者自己去找的教程,我觉得,你真的不适合当一名程序员。在程序员工作的过程中,会遇到各种各样没人解决过的问题,如果有人给你指引个大方向,你就应该感激了,不可能指望总有人一步一步带着你解决这个问题,如果别人要这样带你,还需要你干嘛呢。

想象力和创造力:

有人会觉得程序员是个机械刻板的工作,其实并不是,很多时候,程序员在做的工作就是动脑子想出巧妙的方法解决问题。举个简单的例子,这个例子是个网上常见的面试题,虽然现在在真正的技术面是不可能出现了,但我觉得解决这个问题可以被看作是一个程序员工作中解决问题的缩影(真正工作中的问题当然会复杂,难很多)。例如,给你一个5升的和3升的杯子,你只有这两个杯子,问你怎么精准的量出4升的水。这个问题,不像是解决物理或者数学问题,你可以用逻辑一步步推倒出来,更多是用小聪明,巧思。程序员在工作中解决问题的时候也是这样,很多时候没有固定的公式,而你手中的工具就是那些,但你要能想出新的思路用现有的工具解决问题。这就是为什么,即使你再努力,把专业知识学的再熟练,也不一定能成为一个优秀的程序员。简单的来说,程序员更多时候不是像科学家一样具有深厚的知识储备,用严格数学计算来解决问题,而更像熟练使用工具,但经常需要小聪明和灵光乍现的巧思来解决问题的工匠。

耐心,推理和分析能力:

debug, 是一个程序员避不开的工作,再好的程序员也会写出bug, 再多的测试也避免不了bug的出现,优秀的程序员,严格的测试,只会减少bug的出现。一个大的IT公司的产品,通常是成百上千的程序员合作出来的产品,你可以把这样的程序看作一节节链接起来的水管,而用户,只是在水龙头那端用水的人,每一节水管,都是由不同的组做出来的,每个程序员,只是负责那个水管的一部分。很多时候,当一个bug出现的时候,表象紧紧是水龙头那端没水了,谁也很难判断是哪根水管的哪个部件出问题了,而作为一个程序员,就要开始大海捞针一般的找问题。当然,不可能是真的像大海捞针一样慢。基本方法就是,你做出一个假设,你认为哪里可能除了问题,然后修改一下程序,验证你的判断,有时候运气好找到问题了,大多数时候,找不到,但是你做出调整后的程序会有一些变化,这些变化,就是你做出下一步假设的依据,根据这些依据做出逻辑推理产生下一步假设,很多时候debug可以一步步这样进行下去,最终找到问题根源。但也有的时候,你会像走迷宫一样,毫无头绪,这种时候,就需要你有耐心,在时间压力和frustration下能继续保持冷静,继续你的逻辑推理和分析,这种时候,往往是做程序员最艰难的时候。

说到这,可能大家大概明白了,为什么码农这样的一个职业并不适合所有人,如果你具有以上特质,并且enjoy做这样的工作,那么你很适合当程序员,但如果你没有以上的能力,或者很讨厌做这样的事情,在投入精力和时间准备成为一个程序员之前,不妨看看自己还有什么其他的选择。

你可能感兴趣的:(spring,java)