如何自学编程?这些问题你搞清楚啦吗?

最近有很多编程小白咨询我一些关于学习编程的问题,因为我也是自学编程,一路也是磕磕绊绊的,知道这里面的辛酸苦辣,对于他们的问题,我之前也迷茫过,姑且今天写写这方面的话题,希望对那些编程小白有所帮助!

编程小白们注意啦!本篇文章,是专门为你们写的!觉得不错记得文末点赞哦,如果你能把你身边的朋友也忽悠过来关注我,好吧,承认你:

是个人才

学编程以后能干啥啊

你还别说,我当初选择了计算机科学与技术这个专业之后,很长一段时间都是蒙蔽的,这啥玩意儿,计算机科学与技术,反正听着不赖,就是不知道干啥的?以后能干啥嘞

再然后,知道得学习一些编程语言,那时候学校开始学习C语言了,这玩意?难道以后就靠这个工作,后来又发现,不对,这玩意不能当饭吃,得学习面向对象语言,后来就知道了Java,PHP和C++这些,知道学这些以后能找工作。

可是这个时候,我还是不太清楚,学这个以后能干啥啊,我能干啥活,从事啥行业啊,能赚钱不

我是选择学习Java编程语言,然后我就知道了,以后我可以做Java开发工程师,我去,这听着牛杯啊,工程师啊,你说牛不牛,不过Java开发工程师是干啥的啊,以后要做啥啊,其实,我还是蒙蔽的

唉,你说,我学个编程,以后能干啥啊?我想赚钱呐

给你解疑答惑

来来,不着急,我好好给你解疑答惑,我还记得之前经常有朋友问我,我是干啥工作的,我就说“程序员”,然后我看他们还是一脸懵逼,我就说“修电脑的”,完了,结果以后他们电脑有个蓝屏啊,卡顿啊,风扇呼呼响啊,等等各种电脑问题,都找我来给他们修,我这个心里苦啊,我这里郑重告诉大家:

一般程序员,真的不咋会修电脑

再说啦,我们也不是修电脑的啊,我们叫做程序员,或者码农(自嘲),我们平常的工作就是写代码,比如给你用Java写个hello world:

public class HelloWorld{
	public static void main(String[] args){
		System.out.println("这就是代码!");
	}
}

看吧,我们程序员就是写这个的,所以想成为程序员,你得会写代码,那么学会了写代码之后我们能干啥,可以从事啥工作嘞?

当我们学会了写代码之后,我们就可以成为一名开发工程师了,对的,我们就是工程师的,牛杯吧,用我们写的代码去开发一些产品。

比如,你用的淘宝,手机用的QQ音乐,也就是网上各种网站和手机上各种app,都是我们程序员的杰作,对的,你没有听错,这都是我们整出来的,膜拜我们吧

我们想要成为程序员,得会写代码,但是这个代码是个统称,代码有很多嘞,像上面我写的那段代码,就是Java代码写的,想写Java代码,就得会Java这门编程语言,我们程序员只有学会了编程语言,才能写出代码,而编程语言有很多,比较流行的有Java,go,Python,node.js,php等等。

那啥是编程语言啊,编程语言对我们来说就是一种工具,一项技能,学会它就能干一些特定的事情,比如你学会了做饭,可以当厨师,然后做出各种各样的好吃的,我们程序员学会了编程语言这个工具,就可以开发各种各样的产品了。

接下来的有个问题就是,你得知道,编程语言很多,每一种是不相同的,都有他们擅长的领域,不同的编程语言会影响你成为什么样的工程师,决定了你比较适合开发什么样的产品。

学会写代码,刚开始我们会干这个

当我们学会了写代码,当然,这里不说你具体学了哪一门编程语言,就说你会写代码了,那么你就可以从事以下专门为我们程序员准备的岗位:

  1. 前端开发工程师
  2. 后端开发工程师
  3. 移动开发工程师
  4. 算法工程师
  5. 嵌入式开发工程师

等等吧,还有一些小众的,这都是最常见的,无论哪种工程师,都是程序员,只不过因为你学了不同的语言,从而成了不同的开发工程师,那这些有啥区别嘞?

不同滴工程师?

我在刚开始学习的时候,听别人这样说:

前端入门容易,后面难,后端入门困难,后面容易

这个……有点道理吧,那前端工程师是干啥的啊,前端现在概念越来越宽泛了,很多都可以划分到前端领域了,来点简单的例子吧,比如你看到的网页啊,手机app里面的各种界面啊,说的直白点,就是前端工程师给你整出来的都是我们可以直接看到的,换个角度来说,我们用户能看到的都是前端干的活。

所以啊,前端工程师做的事情比较直观,比如前端工程师用代码写一个按钮出来,那么你在页面上就能看到个按钮,很直观,那么关于前端工程师,也是写代码的啊,那要学会啥嘞,一般的前端的话就是学习html,css,js这些啦,当然还有框架,比如vue之类的,反正啊,前端要学习的东西还是非常多的。

不过前端做出来的东西一般都是所见即所得的,非常直观,我也是比较建议转行或者非科班的去学习前端,以后做一名前端工程师。

那后端工程师嘞?

后端啊,名字上就觉得是和前端相对应的,前端比较直观,那后端就相对就不那么直观,做的一些东西可能就不那么直观,不是你可以直接看到的,比如后端经常会写一些接口,说白了就是一个url地址啊,往浏览器地址栏一放,一回车,然后就会在页面上看到一些乱糟糟的数据,还有什么符号之类的

所以啊,后端不像前端那样,用代码写一个按钮,你就能看到一个按钮,后端通常不是这样的,不过嘞,后端也可以写一些所见即所得的,但是一般不咋好看,在之前的开发中,前后端分离开发还不普遍的时候,一般前后端都是后端一个人来搞定的,所以啊,后端也得会前端技能,也得能写页面啥的。

不过现在一般都是前后端分离,简单来说,就是前端专注页面,后端专注数据,我这样说其实是为了让你更加容易理解,这是不严谨的,你要知道。

我们拿淘宝来说,你上淘宝网,看到的基本上都是前端干的活,看不到的就是后端在做的了,啥看不到嘞,比如一个商品,都是谁买了,什么时候买的,以及这个商品目前真实库存等一些其他信息,一般你是看不到的,这些都是后端写代码做了统计之类的。

简单来说就是这个样子,那么你如果想成为一名后端工程师,那么你就得学会Java啊,python啊,PHP啊这些后端编程语言。

其实嘞,这里面涉及的概念很多,你就记着,一般前端干的活比较直观,后端则不那么直观,两者需要学习的东西其实都挺多的。

移动开发工程师就比较好理解啦!

这个移动开发工程师啊,主要就是说那些针对移动设备做开发的程序员,一般就是手机啦,两大阵营,安卓和苹果,系统也就是Android和ios,说白了就是开发各种手机app的,想要搞这个,你就得学会Android开发,这个是针对安卓的,ios的话一般就是Swift和objective-c了。

这个都叫做原生开发,就是最正宗的开发手机应用的方式,上面我们说过前端开发,说到很多我们看到的都是前端干的,所以啊,现在可以用前端技术去开发手机应用,可以生成Android和ios两个不同平台的应用,这个就不是原生开发,一般来说啊,原生开发的应用更加流畅,性能更加好,但是开发成本更高。

不过啊,现在这块市场不怎么滴了,一般不建议再去从事移动开发工程师了,相对来说,前端开发和后端开发都是不错的选择。

算法工程师就比较厉害了
搞算法的都是大牛啊,一般人搞不来,这个的门槛就相对较高了,需要你有良好的数学基础,英语基础等等,学习难度大了很多。

而且对于那些转行的,非科班的,我觉得吧,就不要考虑这个了,不怕告诉你,一般小公司都没有这个岗位

这个咱就不多聊了,感兴趣的百度一下,也可以涨不少姿势的!

嵌入式开发工程师

我的读者中也有不少学习嵌入式的,我们当时一个系有5个计算机科学与技术专业班,但是最后一个班被称为“计算机科学与技术(嵌入式)”,这总归是有区别的,我们不是嵌入式的一般专注于软件的开发与学习,嵌入式的话就牵涉到硬件了,也就是大家听到的开发板,什么烧程序的,就是把程序弄到开发板上,然后做一些操作什么滴。

像这类的话,他们编程语言这块估计就是得学好C/C++了,由于我不是嵌入式方向的,了解的也不太多,更多的信息,大家可以百度以下,或者咨询自己的学长都是不错的选择。

其实吧,除此之外,还有什么大数据工程师啊,反正其实岗位分类有不少嘞,不过万变不离其中,就是你得掌握相关的编程语言,比如你学习了Java和python,你就可以搞大数据,python也可以搞人工智能这些。

关键是啥,你得学会编程语言,你得会写代码

学编程就是一直写代码吗?

可能有的朋友看了就会问:

是不是学会写代码,以后就一直干这些了啊

这个当然不是啦,一般啊,我们刚开始入这个行,都是从写代码开始的,就是初级开发,中级开发,然后高级开发的,反正就是在一直写代码,刚开始都是这样。

那要一直写代码?

一般来说,写了几年代码之后,就会有两个方向供你继续发展:

  1. 喜欢技术,继续写代码
  2. 不喜欢写代码了,转管理岗

啥意思嘞,就是在你写了几年代码之后,你发现,我去,我原来那么喜欢技术啊,写代码的感觉真爽,那么你这时候就可以继续研究技术,深入的去研究,甚至可以造属于自己的轮子,这时候你就成技术大牛了,一直在技术这条路上不断耕耘,然后你可能到最后就成了架构师了或者CTO,技术达到一定的巅峰了,专门解决别人解决不了的技术问题,指导整个技术使用等等。

反正技术这块,你是最亮的崽!

但是还有可能就是你写代码写个三五年发现,我去,不想写了,没啥兴趣了,这时候你就可以考虑转开发岗位了,比如可以做主管啊,然后升职经理,然后总监啥的,反正就是不再写代码了,开始做管理了,带团队什么的,一般给你配的有技术大牛,你们一个团队,这其实也是个不错的选择。

据我观察,那些比较活泼的,调皮捣蛋的后来都做了管理,不写什么代码了,哈哈

所以说啊,我们程序员也不是一直写代码,后期可以有不同的岗位可以转型的,相应的待遇啥的也会猛涨,钱呐,哈哈,当然,这个只是大致的介绍,像后期,也会有一些程序员去选择做专一的方向,比如专门搞数据库,就是做DBA,这个一般都是大公司配备这个岗位,小公司一般没有,然后还有去做运维的啊,测试的啊,关于这块,大家可以自行百度一下!

我英语和数学不好,可以学编程吗?

想入行程序员,可能大家都听到了关于数学和英语的那些事情,所以,经常有人问我:

我英语和数学不好,还可以学习编程吗?

我这里郑重的告诉你,必须可以啊,像我,英语和数学也不好,但是不同样做程序员做的好好的嘛。

首先咱们说说英语,这个有啥用,一般来说,我们会英语就是可以更加方便的阅读英文资料,我觉得这个也是最主要的原因,因为一般好的资料,一手的资料都是英文的,还有一些技术文档,一般都是英文的,如果你英语好,你就可以更加方便的阅读这些资料,你就能学到更多更权威的知识,所以啊,这就是你英语好给你带来的优势啊。

不过我英语不好咋弄?实话说,影响不是很大,看不懂英文,用有道词典啊,再不济,你需要的资料,绝大多数都已经有了中文资料,中文的资料已经足够你看的了,对于你的学习,完全足够啊。

另外还有就是,我们一般用的编辑器啥的,都是英文的,这个其实吧,用的多了,你就记住了,另外我们平常写代码,命名啥的,这块可要记住了,千万不要用拼音,不然你就太low了,一定要用英文,而且最好有意义,你可能说,我英文不好啊,哪有啥,有道词典开起来,啥不会查啥,另外像现在我们大都数使用的idea,有个插件,看看这,英语不好,真的不影响你啊:

在这里插入图片描述
所以啊,通常,我们英语不好也没啥,实际用到的真不多,需要啥真不会了,查查也就能搞定,再说,一般我们学习需要用到的资料一般都有中文资料了,让你用来学习,完全足够啊。

那数学嘞?

数学这玩意,说实在,还没有英语用的多嘞,这玩意更玄乎,什么你数学好,你的思维能力就强,写的代码也就更加流畅,其实吧,这玩意,一次写不好,那就多写几遍,多下功夫,多花时间也就ok了。

总的来说吧,英语和数学,在实际中用到的不是很多,真的不应该成为你学习编程的障碍啊,完全不用担心。

不过话又说回来,会总比不会好啊,而且以后你想走的更远,变得更加牛杯,那英语好和数学好绝对对你百利而无一害啊,这是显而易见的啊,另外,如果你是搞算法的,人工智能啥的,那数学和英语可能就是必须的啊,因为这些是实实在在要经常用到英语和数学的,要不咋说人家门槛高啊。

可是对于你,一般也不会上来就搞算法,人工智能这些吧!

关于这点,希望大家明白,我不是说数学和英文不重要,只是它们真的不应该成为你的障碍,完全不耽误你学习编程!

我转行的,非科班的,学习编程可以嘛?

毫无疑问,可以的,可能你会担心,自己的基础比较差,学不好,有些人可能也会担心自己的英语和数学不行咋弄,这个上面也说过了,影响不大。

那转行,非科班,ok嘛?

必须ok啊,其实据统计,在程序员这个行业中,转行和非科班的占大多数,因此来说嘞,如果你要转行或者是非科班的,学习编程也是没有问题的,但是这里面有几个问题是需要你打心底就要清楚认识到的。

第一就是,你需要知道自己要从事哪个岗位,就是以后你想干啥,我上面也介绍了,我们学会了写代码,以后可以从事什么岗位,你可以对照对照,看看自己想从事什么,一般来说就是前端和后端,如果是非科班或者转行,像算法什么的就不要考虑了,真的不适合。

另外,如果你想轻松点,其实也可以从事测试开发的。

反正无论怎样,你得想好,你要干嘛,想做哪一块,这是第一步,没有这个,后面的也就啥都别想了,该干嘛干嘛去了。

当你知道自己想干啥之后,那就开干呗,这时候你就得知道你想干的这个岗位,需要你掌握哪些知识点,然后就去学,然后给自己三到五个月的时间去把基础知识给学了,这个时候你可能不知道该学啥,也不知道该怎么学习,简单的就是找套视频教程,跟着学习就对了,如果没有学习视频,可以找我,我给你提供,也可以给你更多指导。

把基础学完之后,接下来就是两大块,多做项目(跟着视频来),然后开始多多进行面试刷题,也就是刻意的去强化这两块。

之后,做过两三个项目,面试题也刷的不少了,那就可以出去找工作啦,刚开始要求别那么高,先入行,慢慢来,这不就转行了嘛。

我该学啥编程语言嘞?

很多人之前也问过我这个问题,我之前听到过比较牛的两句话:

1.不要因为某个语言火就去学,也不要因为某个语言不好就不学
2.铁打的思想,流水的语言

你们仔细品品,其实这块吧,刚开始,确实你们是比较蒙蔽的,不过看了今天的这篇文章,你们应该多多少少了解了吧,那么我这里再给大家点建议。

想必看了上面的介绍,大家也了解了不少,那么,如果你想学习前端,那就学习js和node.js这些,当然,html和css这些必不可少,如果你想学习后端,那Java和python都不错,php吧,不建议再学了,因为实际情况,这玩意整体是在缩水的,另外c/c++也不怎么建议,门槛高点,也不好找工作,不如Java和python友好,如果你想搞人工智能和机器学习这些,那就python吧,毫无疑问,当然,如果你是搞嵌入式的话,那好像也就是c/c++了。

就我个人而言,我倾向于Java和python,另外,大家需要资料的话可以找我,我给大家提供。

好啦,今天就聊到这,希望对编程小白的你有所帮助!有什么问题,大家可以留言交流哦!

《Java学习、面试;文档、视频资源免费获取》

 

你可能感兴趣的:(编程语言,程序员)