对于在校学生,以及要转行学编程的,把一门语言熟悉起来,非常的重要。
对于初学编程,以及想要转行到编程领域的人来说,总有这么一个选择,选 C++、Python、还是 Java 好呢?哪个前景更好、哪个好学、哪个好找工作,等等这类问题。
熟悉我的都知道,我是从 Linux C/C++ 后台开发,转行到算法工程师,在大四实习的时候,做过 Go 开发,大四下做毕设的时候,用过 Java、以及前端一些技术;相对而言,我有自己的技术栈(在深度的前提下,进行广度的扩充),且对于市面上比较流行的技术自己也都有过接触,也跟很多 BAT 同事进行过这方面的交流,还算是有一点经验吧!
关于这个选择,微信上面私聊问我(不止几个人了),我发现很多在校学生、以及工作了要转行编程的,都很纠结这个问题,很迷茫,不知道咋选?今天,我站在我的视角,说一下自己关于这个选择的看法,希望读完本文的你,不再纠结于此。
Python 还是 Java
1、
如果你明确的知道,我就是要选 Java,或者选 Python,那很好了,按照自己的战略计划走就行了;在编程行业,兴趣永远是第一位的,做着自己喜欢,感兴趣的东西,是一件非常爽的事情,长久的执行下去,慢慢的会成为这个领域的专家级人物。
我也不知道,什么时候编程界,流传了这么一句话:语言不重要,基础才是关键;你要是不相信我,你可以去问一些大佬,或者问一些学编程一段时间的人,问他选哪个方向学比较好,学 Python、Java、Go 还是前端好?这些人的回复总是如出一辙,根据你的兴趣来,语言不重要,基础才是关键,说真的,这个答案,对于要选择方向的人来说,基本上就是废话,没任何有效信息。
语言不重要,基础才是关键,问你选择方向的初学者,难道他们不知道这个道理吗?这句话,基本上学编程的,人人都知道,基础很重要,对于这么明显的道理,我相信绝对不是初学者问你选择时,他想要的答案;当你回答这句话时,其实他心里很伤的,但是敬重你,又要不懂装懂的,还说自己下来在考虑一下,大概知道了怎么选,连连答谢;基本上就是这么一个状况,我也是由当初的小白转行的,也经历过这些,作为一步一个脚印的过来人,我是感同身受!
语言不重要,基础才是关键,这句话没毛病,但是要看对谁说了,你要弄明白对象;我自己从大二开始接触编程,基础还算是扎实,2017 年就开始在大公司实习,自学编程快 3 年,实习加上工作,也有 1 年半了,从不敢拿这句话出去装 B,显得自己技术多么厉害;对这句话,直到现在,还没到真正意义上的理解,也就是才慢慢的有了一点点感觉,很多搞编程的,对这句话,一知半解,谈到编程,这句话就不离口,总是告诉别人,基础很重要,语言是其次,给人一种基础很扎实,技术很强的感觉,熟不知这句话搞编程的绝大多数人都知道。
对于工作三年以上,真正意义上,经历过硬仗、经历过好多线上问题,对系统稳定性、并发量双重考验下,都深入底层,都摸过这些东西的,才会慢慢的对这句话有新的认知,这些大佬站的层次不一样,说出来是真的深有体会,其他很多人也就是听过这句话,在转述一下而已,对于初入编程的人来说,我个人觉得这句话意义不大!
对于初入编程,要转行的人来说,首要的就是在某一领域做深、做精、打造自己的技术栈与技术品牌,往后才是横向扩展,此时语言的选择就至关重要了;真的选择不同,其后的发展也是不一样的。
选择,就是要站在你所处的环境,以及自己未来想去的公司,看清自己现在所处的阶段,在什么阶段,就把这个阶段的事做好,才是你最佳的选择;人最重要的就是要有自知之明,一定要清醒的认识自己,以及当下手里握的资源,把自己重新审视清楚,做好定位,再做选择!
2、
对于基础,我没说基础不重要,基础对于应届生,找工作是非常的重要的,对于已经工作几年了,主要就是看你工程或者算法能力,更多考察在项目经验以及工程架构、对系统设计的理解上面了。
不知道啥时候,又冒出来这么一句话:熟练掌握一门语言之后,其他语言就能很快的熟悉起来,我想说的是,对于 C++、Java,Go,Python,每一门语言入门容易,想要深入学习,想要把各种特性都摸清楚,都很难的,没一门语言,是你想的那么简单,在短期内只能是入门级别的水平。
说说我自己的情况吧,我曾经说过,对于 Python 几乎不用学习,直接就可以上手,对于 Python 的爬虫、到数据分析,再到深度学习,用 python 写算法,这个流程下来,只是完成业务需求的话,自己可以很快的解决;你有没有想过背后的原因,我之前是 Linux C/C++ 出身的,在这个领域已经走得很深了,对于很多编程哲学、编程思想、以及编程习惯都是花费了好几年的时间在这门语言上,对一门语言达到了非常的熟练,这才是我快速上手 Python 的根本原因(但也仅仅只限于完成业务需求)。
对于你说你 Python 已经很熟悉了,之前没接触过 C++,你能快速的学会吗?就单说 C++,你的 Linux、Vim 这些的特别熟悉,才能很好的在服务器上进行开发;见过好多 Python 的都用什么开发工具,我写 C++ 或者 Python 都是 Linux 下面的 Vim,我个人是特别的喜欢 Vim,已经脱离鼠标大半年了,一款良好的开发工具会让你提升效率,做起事情来,是事半功倍的!
我自己觉得自己基础知识还算扎实,C/C++ 语言学的也不错,Python 你们也觉得简单,但是我快速上手之后,也就是完成一些业务需求还可以,对于深层次的 ,用 python 写算法、写模型,以及 python 数据挖掘这方面,自己很多也不懂,毕竟没有在这个领域深入学习;还有就是别人总说这句话,给我的感觉就是别人都能很快的熟悉一门语言,技术能力都很强,而我自己远远没有达到熟悉的地步(也就是入门,完成需求,能用而已),可能就是我个人比较笨了,学习能力还有欠缺,这有可能这是我自身原因;我想问问,大家在熟悉了一门语言之后,在学另一门很快的就达到了熟悉的地步吗?(其实很多人掌握的语言很多,但都仅仅是入门级别水平的,没有自己能拿得出手的东西)。
基础很重要,语言是其次,熟练掌握一门语言后,其他语言学起来很快的,说起来容易,做起来你就知道有多难了,工作几年以上的,其实说这些话,是他们所站的高度、水平都具有了,以及在编程领域多年的经验;从他们自身的角度上出发,说出来是为了大家好,真的挺好的;但是有些人,经常把这句话挂在嘴边,真是不知道自己能力有没有达到,反正给人一种很厉害的感觉!
很多大佬说的这些话,是真的有这个水平了,也是有这个能力的,他们所处的环境跟你不一样啊!但是,你要知道,这个是针对的少数人,对极其牛逼的程序员来说,语言真的是其次,基础真的特别重要,这些话没毛病,在之后编程技术发展的道路上会体现出来的(等你们工作一段时间就明白了);对于很多人,平庸的程序员还是占多数的,在编程这行,想要出类拔萃,光靠努力是不够的,还得有点逻辑思维,以及智力的,在编程领域干个几年转行的,转产品的、转管理的、编程语言还是其次吗?基础真的很重要吗?
基础很重要,语言是其次,掌握一门语言,就能快速的掌握其他语言(很多人都不会自己思考,光觉得是很有道理,说起来容易啊,真的有多少人能真正的做到呢!),自己没有深刻的体会,总是得不到精髓,我还需要在多工作几年,对自己磨练磨练,再回过头来好好的体会这句话;在刚工作的时候,掌握一门编程语言,熟练的掌握它,一定要做深、做精,这是你吃饭的家伙,对于大部分人而言,选择一个方向,深入学习一门语言,真的真的是很重要的。
3、
Python 还是 Java,简直就是一场巅峰对决!
好好选择一门语言,深入的学习下去,这个很重要!
对于基础:数据结构 + 算法,操作系统 + 计算机网络,数据库 + Linux,C 语言,这些基础知识,在学习语言的时候,不可忽视,是你面试的重点(不管工作上能不能用到、以及以后会不会用上,掌握了对你都是有帮助的,相信在编程之路上走的长远,的有这些基础知识的支撑)。
基础这块,我强调一点,被人忽视的 C 语言,C 语言掌握的怎么样?C 你学到了什么程度?将会影响你今后在编程的路上能走多远,走多快,我个人一直把 C 语言当做基础,不管你学的是什么方向,C++、Java、Python,学 C 是与语言无关的,C 是基础,有时间的话,都要把 C 语言学好,是绝对不亏的一件事情,C 的精髓、C 的理念、C 的哲学、都是很有指导性意义的!
基础是功底,语言是大方向,基础在面试中起的作用相当大(尤其校招面试),语言的熟练程度,影响着工作的效率,在工作中,主要还是完成需求,完成工作任务,明确两者之间的关系就好。
4、
对于在校学生,很多人都纠结于 Java/C++ 和 Python,下面我就直说了。
对于目前大的趋势来说,未来的人工智能、数据分析、机器学习,这些肯定有大量的岗位,而这些正是 Python 非常擅长的地方,Java 更偏向于做一些应用级别、服务器级别的工程类项目,C++ 就是偏游戏和底层了。
对于学校是普通一本或者二本,也是本科学生,想着本科毕业就找工作,那么走后台开发职位,Java 或者 Linux C/C++ 方向,只要基础扎实,语言熟练,能力强,本科毕业去 BAT 级别的公司工作可能性很大(实在不知道选啥,首选 Java,对 C 有兴趣的可以走 C++)。
对于学校是 211/985 院校的本科生,完全在本科期间就可以走机器学习、数据挖掘、人工智能相关岗位,因为算法岗,目前来看,还是比较看学历的,这个是真的,学校好的话,本科走算法没问题。
对于研究生来说,我认识很多研究生找 Java 后台开发岗的,也有很多人找算法岗的,无所谓的,只要自己喜欢这个岗位,都是可以的,研究生的可选择性比本科大(注意:我说的是研究生,哪怕你是普通一本的研究生),可以全凭兴趣方向,全凭把握(自己衡量算法和开发岗)找工作。
我都说了,以上的战略规划,是针对绝大部分人,针对想去 BAT 级别互联网大厂的。
如果你想去大厂工作,按照这个做决定,就没什么问题了,如果你想本科毕业先随便找份工作,小公司或者创业公司都可以,那么与学校无关,自己感兴趣什么就学什么,学 Python、学爬虫、学数据分析,都可以的,也应该能找到工作,只不过不是大厂而已。
目前来说,Python、Python 爬虫以及 python 后端开发,数据分析,这些岗位, BAT 校招很少招的,如果走工程方向的话,只会一门 Python,只能算是加分项,工程能力目前主流是:C++、Java、Go,学了 Python,还想拿这个找工作的话,直奔算法岗!
算法岗,目前确实竞争激烈,但是你真感兴趣,本科还是 985/211,或者你是研究生,没啥担心的,只要学的好,有能力还担心找不到吗?如果你学校不好,你还对算法岗感兴趣,想走这个方向,那就做好本科毕业,不去大厂工作的打算就好了,随便找份工作应该还是可以的,之后社招在想办法进大厂。
对于 Python 来说,随着 AI 的不断推广,相关岗位在未来肯定有大幅度的增加,可以利用业余时间,往这个方向上靠拢,学习,积蓄力量,提升自己,机会一旦到了,抓住就好了。
归纳总结
我个人一直认为只有选择好了,大方向不错,才能达到自己的预期;编程行业,选好一门语言(C 是基础,不算),在通过不断做项目,来达到熟练,做深、做精才是你要做的事情,对于当下的你来说,选择一门合适的,自己感兴趣的语言进行学习,是至关重要的,工作了,你就会发现,语言真的不是其次,这是吃饭的家伙啊(不熟的话,很影响效率的)!
其实,我知道,在当下,鼓吹 Python、算法岗的人多了去了,很多人辨别能力有待提高,多去想想,多思考,算法岗,高薪是那么好拿的吗?别被别人带动,你自己要想清楚了;我简单说一下,学校不好,还想本科毕业做算法,就别太抱去 BAT 级别大厂工作的想法了(也不是完全没可能,只是真的很难,认清现实),学校是 211/985,不管本科还是研究生,毕业去 BAT 级别做算法,没问题的(在行业里,算法岗目前还是看学历的),学校不行,还是本科,实在想做算法,毕业还想去大厂工作,那就考研啊(有个研究生学历,最起码门槛过了)!
认真看完的,尤其在校的,我相信,对于学哪门语言,你肯定心中有数了,现在就是时间的问题;在学生时代,多花些时间,把基础打好,语言熟练的掌握一门就够了,沉下心来,踏踏实实的,好好的专研一阵技术,对于编程界流传的那些话,那些是大佬们深有体会总结的(大佬的视角站的角度不一样),其实对于现阶段的你们,对我也一样,没啥太大的价值,没啥有效信息啊,只有你做到了,真正的理解了,在说出来,才有底气!
在学生时代,熟悉一门语言,真的很重要;工作了,就没有大把的时间来好好的专研技术了,对于现阶段,选择真的很重要,我只是把我的一些想法,思考分享出来,做决定在你自己!
看完之后,如果还在纠结,可以结合我之前写的这几篇文章进行思考,推荐给大家:
1、初入互联网行业,如何选择?
2、如何在编程的路上走得更远?
3、真正的零基础,非科班如何自学编程!