昨天收到一个网友的私信,说自己大学非计算机专业,已经毕业一年多,在一家公司做销售。一年来感觉自己并不喜欢销售的工作,考虑换个行业。看了我写的《 都说程序员赚钱,非计算机专业能否做程序员? 》一文,有心想尝试向程序员转型,只是无从下手,希望能得到帮助和指导。那么今天我们就来简单地讲一下,如何快速入门程序员,希望能对这位朋友有所启发和帮助。
在我十多年的从业经历中,见过很多非计算机专业的同学,其中不乏有做的非常优秀的人。还有很多计算机专业的同学,在校园里并没有积累下什么实战经验,进入职场后从头学起的大有人在。所以你完全不必担心自己是否能胜任程序员的工作,任何人只要努力都可以成为程序员。
程序员是有一定的门槛的,在大学里老师们总会从《计算机组成原理》、《操作系统原理》等基础课讲起。这些课程的确是学习编程的基础,但同时也是非常枯燥乏味的。因为这些“无聊”的课程对计算机失去兴趣放弃的大有人在。如果是零基础,又想要快速入门,那么我不会建议你从这几门课程学起,而是直接从某一门编程语言入手。这里我比较推荐 Java,原因是 Java 自成体系,在操作系统之上创建了虚拟机,封装了与操作系统的交互和信息,初学时基本上可以忽略操作系统的存在,从而降低了学习的成本和难度。另一方面,Java 语法比较简单,理解和上手相对比较容易。如果你更喜欢其它的语言,当然也没有问题,其学习思路是一致的。
虽然不同的编程语言有其自身特点和擅长的领域,但对于初学来说,语言本身并不重要,重要的是编程思维的建立,因此我们无须特别关注语言本身。
确定了学习某种编程语言后选择一本口碑比较好的入门书籍(比如《Java 编程思想》),一般编程相关的书都比较厚,看上去很恐怖。不过不要被它的外表所吓到,实际上在很多入门的书籍里图片和源码占据了大量的篇幅,并不需要我们死读。拿到书后按以下方式进行阅读:
- 过类似对象,抽象,多态之类讲思想的章节。对于初学者来说,一开始去尝试理解编程的思想和内部构造难度是非常大的。因为在我们生活的现实世界里看到的都是实实在在的东西,而程序的世界中往往都是抽象的内容,这是两种不同的视角。长期处于某种视角下,想要快速理解看不见摸不着抽象的世界是很痛苦且难以实现的。
- 找到书上介绍开发环境搭建的部分,按部就班地做,无须理解其原理。因为在零基础的状态下很难理解什么是开发环境,其原理就更不用说了。
- 一般书上都有 HelloWord(第一个程序)的源码,按照书上所写,照抄一份,然后按照书中所介绍的编译和运行方式操作。一般情况下都能顺利得到与书中一致的结果。若不一致,则仔细与书中的流程进行对比,看看有哪里做错的地方。也可以将错误的结果在 Google 里搜索一下,一般都会有解决方案。
这样你的第一个程序就顺利完成了,是不是很容易呢?此时你可能会疑问,这就是程序吗?为什么没有界面?为什么没有按钮?解决了什么问题?干了什么事?如何写一个书上没有的程序等等。。。的确,HelloWord 是所有程序员在学习一门新的语言或框架时所写的第一个程序,其目的是了解一下其实现过程,以及获得一定的成就感,从而继续深入。
接下来开始学习操作符、控制执行、关键字等部分。这里相对比较枯燥,学习时不要一味地看书,而是要结合书中的例子编写相应的代码并执行,也就是理论结合实际。相比学校在试卷上写代码来说,在编辑器里写代码要容易和有趣的多。就像打游戏一样,编辑器不仅会给你任务提示,还会给你即时的反馈,马上给你程序的运行结果。一个题外话,为什么孩子不愿意学习而迷恋打游戏?即时反馈是非常重要的一点。学习往往是长时间没有任何反馈的努力后才会在考试时拿到结果,而游戏是一刀砍下去马上就会有个数字展现在你的眼前。因此编辑器能够帮助初学者快速建立起兴趣,有了兴趣何愁学不成?
经过一段时间的学习,你对写代码、编辑运行有了一定的了解和理解,也建立起对编程的兴趣,此时回过头来学习对象,抽象,多态之类讲思想的章节就没有那么困难了。
零基础的同学在学习编程时,不要一开始就去理解思想、原理,相信我它会把你的斗志磨灭。去学习那些可以动手实践的东西,选择一个好的工具,会让你变得兴趣盎然。那些思想、原理留到你真正想去了解的时候再去学习。就像教小孩子一样,我们告诉他这是电脑他就记住了电脑,而其背后的工作原理他们是不会理解也理解不了的,但这并妨碍他们在电脑上打游戏,待有一天电脑出现故障或无法解决某个问题时,结合长久以来的电脑基础去理解背后原理相对就简单很多了。
初学者学习编程往往是被计算机的各种理论、原理、思想挡在了门外,一味地尝试理解枯燥且无法即时反馈的东西往往会打击掉一个人的积极性。所以选择一种能够快速获得成就感,逐步产生兴趣的学习方式是高效且重要的。入门部分就讲到这里,下一章我们将讨论入门后如何快速提高,达到能够独立开发应用的阶段。
下一节:在这个任何行业都离不开软件和互联网的时代,可供程序员选择的工作范围很广。选择不同对未来的职业发展有着直接的影响。同样一起走出校门进入职场,几年后有些人成为技术大神,在业内有着极高的知名度,有些人则成为企业高管一呼百应,而有些人却在一线默默地写着代码,焦虑着会不会因为自己的年龄问题被公司裁员。同样都是做程序员,差距咋这么大呢?这个问题我们通过对程序员的三种工作性质和类型进行阐述。