这篇文章我将以我自学编程的经历、自己遇到的坑、如何解决问题等方面,给初学者朋友们分享自己的经验,希望对正在自学编程的你有帮助。如果哪里说的不对,也望得到您的批评指正!
1.为什么要学习编程?
(1)因为爱好:
如果你对信息技术充满激情与爱好,日常喜欢研究电脑、智能手机等,想要掌握计算机更多的知识,想让自己学会开发出自己的桌面软件、网站、APP。
(2)想要获得高薪资的工作:
IT行业的工资相对于传统行业来说工资是比较高的,IT行业适用领域很广阔,餐饮、交通、物流、医疗、金融、教育等各大行业都离不开IT行业的支持,如果掌握这个行业的一门技术,那吃饭是不成问题的,能不能吃好饭就看自己了。
当然,你最好自己喜欢这个行业,喜欢信息技术,然后坚持往这个方向发展。如果仅仅是想要赚钱,也许编程不适合你。如果能把自己的对信息技术的热爱投身到自己的工作职业中,这是最好的。接下来的文章中,我假设以求职为目标,来给大家分享自学编程的经验。
2.怎么通俗易懂地理解软件开发
(1)什么是编程?
简单的理解就是通过某种编程语言,编写特定代码指令、执行代码,让计算机帮助我们做一些计算、执行一些任务,等等。
(2)编程的最终目的是什么?
更通俗的说编写代码的大多数终目的是开发一套完整的软件系统,我们知道软件可以帮我们做很多事,比如说我们使用QQ软件和朋友聊天、使用百度网站搜索资料、在论坛网站上问问题、使用WPS软件编写文档、使用PS软件处理图片,等等。这些都是软件,通过开发者编写代码、打包、上线等多个步骤,最后形成一套完整的程序,供用户使用。
(3)B/S架构和C/S架构
现在市面上的软件如果按照某种特定分类方法可分为两种: B(Browser)/S(Server)架构(浏览器/服务器)和C(Client)/S(Server)架构(客户端/服务器)。当然,还有单机软件,现在还有部分软件是不需要联网就可以为人们提供服务的,比如说很多人手机上计算器APP。简单的说,使用浏览器打开的网站是B/S架构的软件,而直接打开客户端使用的是C/S架构的软件。
(4)那什么编程语言?
编程语言是用来定义计算机程序的形式语言。人与人交流使用的是汉语、英语、阿拉伯语等等,而人与计算机交流使用的就是计算机编程语言,通过编写特定的代码片段让计算机理解我们的意图。于是后来有了很多种计算机编程语言,如C++、C#、Java、JavaScript、PHP、Kotlin,汇编语言等等。
3.认识程序员(软件开发者)这个工作职务
(1)软件开发者应至少应该具备什么能力?
就现在的社会需求来说,作为软件开发者,我们应该至少懂得一门编程语言,并且能利用软件开发使用这种编程语言在实际工作中完成相应的工作,至少这样才是一个合格软件开发者。
现在很多软件开发项目中都是由多个人来完成的,那么必定由一个开发者负责开发环节中特定的任务,如java后端工程师编写与数据交互的代码逻辑,Android工程师负责编写Android APP,IOS工程师负责编写iPhone APP,等等。
(2)软件开发者应该长期具备什么能力?
首先:不断学习。在软件开发这个领域中,开发技术不断的更新与变化,如果想要具备竞争能力,那就必须不断的学习,而不是长期以原有的技术混饭吃,如果真是这样,最终是要被淘汰的。这个行业不适合想要一劳永逸的人。在这个行业必须不断学习、创新,你必须具备不怕苦不怕累的创业精神。
其次:做一个有计划的人:你应该时时有危机感,那么就给自己制定计划,不管是短期计划还是长期计划,朝着那个目标努力,你会越来越优秀。你是一个初级程序员,你应该朝着高级程序员的目标努力;你一个高级程序员,你应该朝着架构师的目标努力;而当你成为了架构师,你应该朝着管理者的目标努力。只有做好计划,并随着时间的改变而改变,朝着目标努力,你才能不断实现自己的价值。
4.没有编程基础,我该怎么入门?
我相信这是大多初学者困惑的问题,也是阻碍很多初学者学习进度的问题。你不知道从哪里开始学习,或者不知道从何开始,接下来我以自己的学习经历,给大家提供一些建议,希望对你有帮助。
(1)你应该具备什么基础:
自学你至少得有一台自己电脑,这台电脑不需要配置有多高,除非你学习的是开发大型3D游戏。传统的开发学习,普通笔记本、台式机都可以的,但是必须得有网络,因为你需要从网络上获取这种学习资料,况且我们是在学习信息技术,没有网络怎么可能,想一想多可怕,最重要的是,你要喜欢它再去学它,如果不喜欢它,学了又有什么意义。
(2)数学、英语不好,能学好编程吗?
就这么说吧,如果你感觉自己数学不好,但是你喜欢信息技术方面,你就好好学吧,你是能学好编程的。我的数学和英语真的是超级不好,原因是我不喜欢它们。编程的逻辑性挺强的,但是不代表你的数学不好你的编程就学的差,它们本就不是一个回事,虽然编程很多时候用于科学计算方面,但是如果我们学习编程是为了开发应用软件,为的是找工作,编程本就没有那么别人说的那么难。
英语不好呢?那也可以学好的。计算机发展技术源自西方,西方人在这方面做的比我们多,当然这些计算机语言几乎全是英语字母组合的。我想,如果我们能赶在西方之前发展信息技术,现在外国人估计就使用中文来编程了。但是我英语不好,句子都读不通顺,怎么办?没关系的,读代码与读英语文章完全不一样,虽然大多数代码使用的是英文字母来编写,而理解代码更多的是理解它的逻辑。但是,如果你的英语不好,你最好提高一下的英语水平,因为很多开发文档、教程,是使用英文来写的。不是说你英语不好你就不能写代码,但是你不能连“hello”、“how are you”这些简单的英文单词都不认识,也就是说,你具有初中毕业生的英语水平就可以学习编程了。
(3)选择自己喜欢的方面入门:
软件开发过程中根据不同的需要,包含了多个工作任务和多种工作流程,因此也产生了不同的工作岗位,前端工程师:Android工程师、IOS工程师、Web前端工程师,后端工程师:Java后端工程师、Python后端工程师、PHP工程师,Linux运维工程师,现在还流行着大数据工程师、AI(人工智能)工程师,等等。当然,在人员缺少的情况下有的人却担任了好几种身份,但是在大公司里面,分工一般是明确的。
那怎么开始入门学习呢?首先,选择自己喜欢的语言,选择自己方向,朝着那么目标学习。可是我都没了解过,我怎么知道什么编程语言适合我?这就需要你事先了解一下了,既然打算自学编程,那你应该查阅一些资料了解一下,什么语言适合来做什么,自己又应该学习什么语言。当然,我们的长远的目标是精通一个技术方向,但是其他方向最好是什么都要会。
所以,我建议你选择自己喜欢的方向,容易的入门的方向进行入门学习。可是有的人说现在很火的不是大数据、人工智能吗?月薪两三万、四五万的。但是你要知道,对于一个任何基础都没有的普通初学者,需要花多少功夫才能达到大数据工程师、AI工程师的水平,所以学习基础是十分重要的,至少得保证你有一样技能了,能保证自己能胜任某项工作之后,再朝着更高得层次努力,也许那样会更好。
我当年选择Android作为入门学习的方向,原因是我挺喜欢Android。我开学习Android的时候是在2015年,那时候很多人说Android现在饱和了,学习Android会找不到工作。但是我并没有放弃学习Android,我想,如果有时间去担心以后找不到工作,为什么不静下心来好好学,只要学好了为什么还要怕找不到工作,为什么自己不可以作为那些学习Android中的佼佼者,你可以比别人笨,但是你也可以比别人努力,况且,又有多少人真正的承认自己比别人笨呢?现在再回想自己当年学习Android的时候,每天晚上坚持观看视频,记笔记,先学Java基础,后是Android基础,就这样坚持好几个月。挺辛苦,可是后来收获的是开心的。
当然,你有很多选择。如果你喜欢APP开发,那么就是Android和IOS了,而Android学习成本比IOS学习成本低,原因就是如果你要做IOS开发你需要mac电脑,Android开发使用普通的Windows就可以,进一步学习的话你可以安装一个Linux操作系统,再加上一个几百元的Android手机就可以学习了,等你掌握Android开发后再学习IOS也不迟。如果你喜欢后端开发,我建议你选择Java、Python、PHP这些语言。假如你之前没有接触过编程,只要认真学,这些语言挺容易入门的,如果有一点C语言基础那更好。而如果你喜欢Web 前端,那你就好好学习H5+CSS3+JavaScript,一个合格web前端工程师除了能把网站做出漂亮的特效,还要懂得后端的知识,这时可以学一学Node.js。虽然开发技术分类很多,但是这些技术都是相通的,有了一门技术的基础之后,再学习其它技术就轻而易举了。而在初学者阶段,你需要选择一门技术进行系统的学习,同时不要忘记多了解一些其他的技术。
以下是编程语言在某个时间段的排行榜:
(4)怎么获取学习资源?
你可以买一本书。书有好有坏,有的书适合初学者,而有的书不适合初学者;有的书通俗易懂,也有一些书全是废话,甚至错误一堆,这就需要你好好辨认了。有的书适合你,但是有的书虽好,却不适合你,你应该到书店里面,到图书馆里面好好翻一翻,选择合适自己的一本系统教学书籍。对于技术类型的书,尽量选择比较新的,对于同一种技术,尽量避免好几年的书籍,因为技术书籍不像文学书籍那样,技术每天都在改变。
你还可以看一套系统的视频教程。互联网上免费的教程资源很多,如果好好利用,相信你一定能学好的。有的视频里老师讲课方式不适合你,而有的老师讲课方式很适合你,我相信后者对你的进步更有帮助。现在教学网站也很多,也提供了大量的免费资源,如极客学院、慕课网,百度传课、腾讯课堂等等都有大量的免费资源,建议你花一些时间去尝试听一下多套视频的第一节课,最后选择最适合自己的一套。
(5)要回利用互联网解决问题:
你在学习编程过程中必定遇到很多问题,甚至有时出现的bug让自己感到崩溃、无助,这时不要慌,这是很多初学者都是必定经历的过程,只要一个一个问题的解决了,积累经验,以后你才能解决实际开发中遇到的问题。在你遇到错误时,把你出现的错误百度一下,必定别人也遇到过,并有一堆的解决办法。你还可以到各大论坛寻求帮助,如国内的CSDN论坛,如果你英语阅读能力比较好,还可以到stackoverflow.com网站上寻求全球开发者的帮助。
(6)多读别人的代码,借鉴别人的长处:
阅读别人的代码是自己提高编码能力的一个方法,你可以看到自己与大神的距离,然后努力朝着目标努力,一个合格的开发者,不仅能自己写代码,还要有阅读别人代码的能力。
(7)多练习,孰能生巧:
学习中编程的过程中,看懂和会做完全是两回事,不要觉得自己看视频看懂了,或者看书看懂了就从来不去编码练习了。往往很多人看懂了,但是自己却敲出一堆的错误,这阶段你需要不断的练习。网上说的“7天掌握PHP”、“5节课掌握java”,等等这些,以一个普通初学者的角度来说绝对是不可能的,作为初学者,应该脚踏实地,每天坚持,积累上几万行代码,甚至几十万行代码,也许那样才是真正的入门。这世上没有不劳而获的,所有的收获,必定经历付出,知识也一样,加油!
5.总结:
上一个世纪的前辈们在学习的时候,他们没有网络,没有那么多学习资料,而他们却能给后人创造了很多有价值的东西,他们都那么坚持,我们就没有理由不努力了。
不管怎么说,学习编程不容易,一定要真正的喜欢它再去学,脚踏实地,坚持不懈,往既定的目标努力。入门学习的付出是辛苦的,甚至是乏味的,但是拼一拼,努力奋斗,相比最后得到的,是值得的。加油!