怎样成为优秀的程序员

描述

现状

每次我曾经的同学打电话向我询问程序员这个行业怎么样,我都会很耐心的讲上一个半小时,谈人生谈理想,并判断他是否适合程序员这个行业。

每次看到群里有人问程序员好不好当啊,觉得有眼缘我就会加上好友,连麦讨论一下。

我为什么会这么做呢,因为目前市面上所存在的QQ交流群,一大半都是培训机构的人建立的,还有小部分群,只要你进群问,XXX学了好不好找工作啊,全部都是劝退:不好!转行吧!

这往往就会改变一个人的想法,也就改变了一个人的人生,有技术的没空引导新人,没技术的只会吹水误导新人。

所以,我将我之前每次都会进行的长篇大论,总结成为本文,供各位想要入行或者转行的大学生或者其他职业的你们借鉴。

是否适合程序员

首先,判断自己是否适合程序员这个职业。

在校大学生&应届毕业生

1.是否计算机相关专业?

如果不是计算机相关专业,判断自己是否会适合程序员或者计算机工作的学习。例如:打字速度,不会厌倦电脑,独立钻研的能力。

2.是否在学习C语言等计算机课程还算得心应手?

数学和英语能力,以及计算机基础学的是否扎实,都决定了以后你能达到的高度上限,如果你学的并不扎实,不用担心,你只是会比别人慢一点到达同样高度而已,只要努力学习。

3.是否对着程序员这行或者计算机语言有着浓厚的兴趣?

我个人看法,学习能力是一方面,在勤能补拙的基础上,往往兴趣却是能支持你在程序员道路上越走越长的核心。

社会人士&其他职业

1.是否是发自内心的学习?

不是单纯的因为程序员行业工资高,而是想来学一门技术的。单纯把程序员当成挣钱的工具,会限制你以后能到达的高度。怎么限制?可能没有兴趣两年以后就转行了这种程度。

2.是否适合程序员行业?

挣钱的行业很多,不只程序员,程序员大多996模式,自己是否适应长时间在电脑前工作?

3.是否有着改变人生的想法?

往往社会人员进行转行时要比应届毕业生有着更大决心,否则你不会在这条路上走太远,你需要比大学生更有耐心和毅力进行学习。

程序员需要谦虚、好学、内敛、成熟的人,因为不仅需要不断的学习,还需要人际交流、灵活变通、独立解决问题、主观意识。你才可以达到一般程序猿到达不了的高度。

高工资是需要不断学习的,而不是空口白话就有的高工资

建立个人目标

那么在判断自己适合程序员行业以后,我们就来指定一个目标吧~没有目标的程序员和咸鱼有什么区别?

我为什么当程序员呢,我想做一个自己的应用,很不巧,我也是一名非科班出身的人,经过自己的努力学习,成为了一名程序员。怎么样的学习呢,跟高考强度一样的历练吧~

个人目标:

首先按照三月内、半年内、1年、2年、3年、5年指定人生规划。

例如:本人在三月内要进行XX语言的学习,半年内读什么书、1年内做到XX级别的开发。

个人规划一定要切合实际,要需要一定的努力才能实现。

个人目标可以是车子,房子,票子。一定是要循序渐进达到的目标,规划则是实现目标的过程。

做不做的到是一回事,敢不敢想又是另一回事。这么说吧,去上海工作的事情,就是我上学想都不敢想的事。现在我随时都可以去上海找工作。

学习途径

规划了个人目标以后,我们可以开始程序员的学习了。那么怎么进行学习呢,我是一个小白,我怎么知道该学习什么呢。找个人带带吗?

自学:

自学往往需要一个良好的学习环境,以及高效的学习方法,往往需要大量的时间成本,大量时间成本最适合大三大四的学生,在最后的两年进行自学,完全可以达到毕业后寻找工作的程度。

但是你要做到不被寝室的人干扰哦。

自学大概需要2年的时间成本,社会人士0基础可能需要更长。请慎重考虑

找人带:

相对社会转业人士,往往迫切的需要投入程序员行业开始赚钱。那么怎么办呢。这时候就体现你的人脉了。

首先寻找自己人脉中的程序员,看看有没有更好的推荐以及实习机会。找到人带,往往是最好的途径,可由于目前互联网经济快速发展,程序员并没有空带实习。大公司都喜欢培养985 211的迎接毕业生。

最快的方法是快速入门一门语言,然后找一个实习工作,看看人脉当中有没有这个机会。

如果没有,而且又想转行的,只能考虑下面这个了。

培训:

个人看法: 很多人都觉培训机构坑,是因为有些人对计算机一窍不通就一时热血报了培训班,听说高工资,报名了以后交了钱也学不会,这就是培训机构被骂的原因。

如果你觉得自己的确适合程序员这个行业,而且还有着刻苦学习,克服困难的毅力,那我还是可以同意你来培训机构进行学习。

如果没有,你还是选择别的行业吧,程序员真的不是随便培训一下,你就很厉害了。

在培训机构,还有一个重点就是,你不能被老师灌输思维,一定一定一定要有自己的理解和体会,不然出来也是废物。

培训机构的学习氛围还是不错的,大家都是交钱过来学习的,而不会在那里玩游戏。玩游戏注定被淘汰。

培训机构也有好坏,这里为了避免不必要的讨论,就不做多做描述了。

如何构建适合自己的学习体系

好吧好吧,不管怎么样,你都已经选择程序员这条路了,那么我就告诉你,我是怎么学习的吧。

学习方向

首先,程序员这个行业分为很多子行业,每个子行业都是一门程序语言。大致列一下主流语言和行业,大家可以评论补充下:

前端:HTML5

后端:Java、PHP

移动开发: 安卓(Java) iOS(Objective-C)

游戏开发:Unity3D

云计算:Spark

服务器运维&人工智能:Python

网络安全:C/C++

语言有很多,这里只列举了我所知道的。

选择一门自己喜欢的工作语言进行学习,当你学习一门语言,熟悉之后,建议学习第二门语言,成为复合型人才。

当然,刚开始只是开发工程师,在你技术成熟以后,你可以考虑架构师、技术经理、产品经理进行转型。

学习环境&设备

那么确定了学习方向,我们就准备一下学习环境吧。

首先一定要有一台趁手的电脑,工欲善其事必先利其器。

如果经济允许的话,个人推荐使用Mac电脑进行开发,但是这样成本可能会有点高哦,所以经济不允许就使用一台高配置的PC笔记本电脑。

配置只会影响到你的学习速度,以及学习体验,越好的笔记本在你不打游戏的前提下,只会提高你的工作效率以及学习效率。

系统的话,推荐装一个Linux系统,优雅的开发都是在基于Linux系统下的。别问我为什么,我只挺Shell.

设备有了,就准备一个适合学习的环境吧,如果你是大学生,那么请你不要受同宿舍打游戏的干扰,适当的远离他们,你的人生就越完整。

不要等到25岁了和人家20岁程序员交谈时:我20岁的时候还和寝室的人一起打游戏呢。

如果你在家自学的话,那么你需要提前和家里人说清楚,你需要什么样的环境,多久时间,不然一直被嫌弃,你反而会失去学习的动力,因为你在家里算闲人。

如果你在培训机构,那么请你勇夺第一,你在培训机构都当不了第一的话,那么你注定会被淘汰。做不做到是一回事,想都不敢想,你就输了。

自己去寻找高质量的交流群。

重点:在确定了自己的路线后,不要被他人的风言风语所影响,努力学习,让那些不以为然的吹水货们刮目相看,实力是证明自己的最好方法

学习方法

那么,学习环境有了,本文的重点来了,学习方法,是一个很重要的事。

程序员这个行业,有很多前人巨人铺路,网上有很多的资源,可是大多数人却不以为然,觉得网上没东西,没干货,是因为学习方法不对。

首先我要把我在网上看到好的方法,分享给大家~在这里要感谢一下Keegan小钢的文章,教会了我如何学习,下列方法结合了本人体会总结。

学习方法:

1.学习力

学习力不同于学习能力,而是将知识资源转换为知识储备的能力,你看了多少书、文章,这是你的知识总量(阅读量),但不是你拥有的。你能够讲出来的知识,就是你所拥有的。

2.目标学习法

学习一定要找到难度适中,需要一定时间学习才能理解的知识。而且以后能用的上。

从遇到的问题出发,从能实践的领域出发去找适合的认知材料。

不要一上来就阅读数据结构、算法导论这种圣经类的书籍,而是一步一步来。

3.快速学习法

当我遇到一个自己不会的知识点时,我会进行百度,进行泛读,充分结合各个大神的文章,进行理解,重点是自己个人的理解。做笔记。辩证的看待每个人的文章,然后提炼到自己的笔记里。

遇到难点时,我会询问列表里的大神,是否在工作中也是这个做法。得到答案。

整理以后,可以用自己的话描述出这些知识点。

在讲的过程中,就会发现自己的话有瑕疵,就会去寻找正确的说法,不断修正自己。

4.输出倒逼输入

如何提高巩固自己的实力,也是本人最喜欢的一个学习方法,在整理自己的笔记之后,尝试把自己的笔记转成文章输出出来,放在博客,简书或者CSDN等技术william hill官网 上。

在输出的同时,在追求完美的同时,就会发现自己的不足,搜罗各种知识点,结合自己的理解。

最后变成自己的输出文章。这就是输出倒逼输入。完美的文章逼着自己学习更多的知识。

5.快捷键&笔记

那么高效的开发,为什么推荐Mac呢,因为快捷键太方便了,我会将常用的终端,文本编辑器设置快捷键,快速调用。

关于笔记,我本人会开启三个笔记窗口,使用的是Omni outliner.

1.自学笔记,该笔记针对并记录在书中的问题,以及书中重点。

2.视频笔记+学习日志,该笔记针对每天的学习中遇到的问题,以及在各个视频当中汲取的知识点的笔记。

3.输出笔记,例如:全栈工程师开发入门笔记,该笔记按照文章输出规范整理,每一个知识点,都可以成为一篇文章输出,不整理好不写入笔记,这就是我的财富。一定要漂漂亮亮的。

Github & 个人博客

这个东西一定要有吧,不仅是个人经验的体现,也是一个提高自己的途径。

学习工具

学习工具呢,因为本人是Mac系统,所以就先在这里说一下概念,以后有好的软件会更新。

学习工具的概念呢,就是电脑中所有利于提高你开发效率和学习效率的都是学习工具,不利的都可以卸载掉。做一个成熟的程序员~

学习工具每个人都是不同的,都需要自己去寻找合适自己的,例如学习前端时,大家都推荐sublime text3,但是我自己会去寻找例如Atom、VSCode、PHPStorm的工具,每个都配置一遍,在配置的过程中又会涉及到brew、curl、wget等知识点,根据百度这些关键词,我又会学到不少东西。

总之就是学习成本、时间成本的相互调配,请选择适合自己的工具和学习方法很重要。

开始学习

在这里,并不是抵制玩游戏,我也玩游戏,但是我劝你在有稳定的工作实力之前,卸载掉你电脑上的游戏,手机上的游戏,QQ别上了,微信别上了,没什么用,好好学习,你的人生就更加完整。

当你学会了学习方法后,你会觉得东西学不完。

如果你没有东西学不完的想法,说明你还没有找到合适学习方法哦。或者说,你不适合做程序员。

区块链理解吗,大数据是什么,人工智能怎么做,机器学习呢?不学习会被淘汰哦~

余生,请君不留余力的学习。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分