今天,互联网已深入人们生活的方方面面,人类对互联网的依赖也达到了前所未有的高度。正因为如此,市场对程序员的需求也变得越来越强,程序员的收入也水涨船高。具统计 2018 年软件行业的收入水平仅次于金融,排名第二。年入百万的工程师已经不是什么新鲜事。未来,结合AI的互联网和物联网将继续深入人们的生活,互联网和软件仍然是市场的热门行业,且市场对程序员的需求量有逐年上升的趋势,所以做一名程序员是很有前景的。
程序员的哪些门槛?
程序员属于专业技术岗位,对专业能力有一定的要求,因此它是有门槛的。但绝非我们想象的那么高。
随着软件的发达,编程语言也在不断进化。原先那种没有深厚计算机功底就不可能理解的代码早已变成过去,取而代之的是类似 C++、Java、Go、Python这样的高级语言。之所以称之高级,是因为它简单易学,通俗易懂。即使非计算机专业的同学也一样能够学会。市面上不是流行着一本书么,叫《21天学会xxx》,对于非计算机专业的人来说书名有点夸张,不过也能说明现在的高级编程语言多么易学。
在庞大的程序员群体里,30%以上的从业者非计算机专业,其中也不乏非常优秀的人。比如我在阿里工作期间就遇到过很多这样的人,其中有一位大学学的是化学生物学,毕业后成了一名程序员,如今在阿里已经做到了比较高P的职位,参于和主导过很多优秀知名的产品。
所以成为程序员的门槛并不高,主要在三个方面:计算机组成原理、英语、数学。
- 即然是开发计算机软件,那么首先就需要对计算机组成原理有一定的了解,入门期间并不要求对其有多么深刻的理解,但一定要了解。就像盖楼一样,这是基础,没有基础是何谈摩天大楼?
- 我们知道中西方的思维方式有着很大的不同,而计算机和大多数编程语言都是由老外发明的,因此它们里面都是老外的思维方式设计的。俗话说想要了解一个国家和他们的思维方式就要先从了解他们的语言开始。学习英语有助于我们更好地理解老外的思维方式,也就更加容易理解计算机更为深层的体系知识。加上代码本身也是由英文组成、因此有一定的英文基础,学习起来将更加高效。当然如果你对英语完全不懂,也不是学不会,只是学习进度可能相对会有点慢。
- 一个软件其内部是由一个个算法组成的,业务和逻辑不同算法也尽相同。有些算法相对比较简单,有些则比较深奥。没有数学基础可以写出简单的算法,不过想要写出高性能、化繁为简的算法,没有数学理论基础是相当困难的。目前大多数开发语言和第三方程序库对常用的算法进行了封装,即使你不懂其原理和实现逻辑,也同样可以完成目标。不过没有数学基础做支撑,一方面技术思路和思维方式将会比较受限,另一方面想要在技术上做深做精将会非常困难。
所谓一口吃不成胖子,学习也是一样,要循序渐进。没有基础那就先打基础,不需要多么扎实,为的是能够入门,待入门后边做边学。
最后我想说,兴趣是最好的老师,如果你对软件、互联网、编程感兴趣,无论有没有基础都可以去学习,因为兴趣会使你越学越有精神,越学越觉的有意思。
随着行业和领域的细分,程序员也分为很多种。比如有开发应用系统的、大数据的、中间件、安全、单片机、机器学习、游戏、区块链等等。每个领域对其基础背景都有要不同的要求,因此大家要根据自身的知识背景和积累选择适合自己发展的方向。
程序员应该具备哪些素质?
一提到程序员,大家印像中总是那个技术控、宅、情商低、话不多的形像。实际上互联网时代的程序员并不是这样的。大多数时候程序员接到的工作并不是可以马上进入开发的,而是需要跟业务、产品等相关人员一起讨论确定需求,有时还要跨部门沟通协调,遇到个别工作时甚至还要对外充当商务角色,可谓是“文武双全”。因此就要求程序员要会沟通、会交流、情商还不能低。
从专业上来讲,程序员大多数时间仍然是对着电脑思考和写代码。所谓兴趣是最好的老师,对有兴趣的人来说是乐在其中,对没兴趣的人却是枯燥无味。各行各业亦是如此。
所以如果说程序员应备具哪些素质,首先是兴趣、其次是要耐得住寂寞。