一年顶十年我的自学编程经历:一名新晋程序员的自述
一年顶十年我的自学编程经历:一名新晋程序员的自述当我明确这些需求之后,我明白了我要去往何处,以及接下来我该怎么做。我告诉自己要专心并开始编写代码,我需要:老实说,一开始我并不知道何谓编程,直到我用 Visual Studio 上的 VB.net 编写并运行了我的第一个程序 “Hello World”。在学习计算机科学的第二年,我用 C 编写并运行了另一个项目。第三年,我用 HTML 和 CSS 编写搭建了一个简单的个人博客。我什么都不懂,只知道自己想开发可以在手机或网页上使用查看的 APP。我最初的几个月耗费在了毫无头绪的杂乱学习上。从网络编程到 A 到 Java 再到 Scratch、Python 甚至图形编程、HTML、CSS 和数字营销,各种不同方向的信息向我涌来。几个月下来,我依旧毫无头绪,梦想之路似乎也毫无进展,对此,我感到十分沮丧。我听取他人建议,明白了心急吃不了热豆腐,决定一步一个脚印,慢慢来。真正的问题是,我没有
Photo by Jantine Doornbos on Unsplash.
我相信每个程序员都具备自学的能力,因为如果没有自身的努力,我们不会成为一名优秀的程序员。
大概交代一下故事背景2016年,我被计算机科学专业录取。计算机科学家需要研究如何使用计算机解决广泛问题及其应用数学,但我不太擅长数学,此外也不太了解计算机科学专业究竟是什么,一直以为这大概是关于如何操作计算机的方法——我甚至没有想过去 google 一下。
小时候,我一直梦想成为一名计算机科学家,做 APP 或者其他我认为很高大上的项目。终于我被梦想的专业录取了,就此开启了我成为计算机科学家、程序员的梦想之旅。但是作为一个初学者,我发现学习编程的过程并不简单轻松。我不知道如何去开始,在好不容易掌握基础之后又不知道如何去进阶。
老实说,一开始我并不知道何谓编程,直到我用 Visual Studio 上的 VB.net 编写并运行了我的第一个程序 “Hello World”。在学习计算机科学的第二年,我用 C 编写并运行了另一个项目。第三年,我用 HTML 和 CSS 编写搭建了一个简单的个人博客。
我什么都不懂,只知道自己想开发可以在手机或网页上使用查看的 APP。我最初的几个月耗费在了毫无头绪的杂乱学习上。从网络编程到 A 到 Java 再到 Scratch、Python 甚至图形编程、HTML、CSS 和数字营销,各种不同方向的信息向我涌来。几个月下来,我依旧毫无头绪,梦想之路似乎也毫无进展,对此,我感到十分沮丧。我听取他人建议,明白了心急吃不了热豆腐,决定一步一个脚印,慢慢来。
真正的问题是,我没有找到我愿意花时间和精力在上面,而不是将其标记为“工作”的东西。最后,我在 Java 上找到了我的成功之路。我决定将精力集中在研究我打算用一生去做的事情:编程。
我告诉自己要专心并开始编写代码,我需要:
- 从第一个步开始,直到我学到足够的知识后,才迈下一步。
- 想明白我想要怎样去学习编码。例如,我最终想获得什么样的技能?我为什么想学习编码?我可以为此花多少时间和金钱?
- 选择正确的、适合我的语言。
- 选取合适的资源以帮助我学习(例如线上的编程课程、教材、各种平台上的视频文档等)。
- 下载对应语言的编程软件。
- 练习编写程序。
- 加入一个线上的学习社区或社群。
- 不要停止学习。
当我明确这些需求之后,我明白了我要去往何处,以及接下来我该怎么做。
这是你可以从我的故事中学到的第一点:
始终关注你的实际梦想或目标,以及你真正想要的是什么——而不是你认为可能使你成为自己的目标的东西。你可能不知道如何实现自己的目标,但你可以使用互联网,并对你的目标进行思考,就可以做到。
我为什么选择 Java
我因为知道它可以帮我实现成为移动应用程序开发人员的梦想,而爱上 Java。我发现,当我熟练掌握 Java 之后,学习任何其他语言对我来说,也很轻松。Java 的课程不仅仅是教 Java,也教编程概念。Java 的应用很广泛,后端开发、大数据、Android 开发等。
就像 Code Institute 的这篇文章所说:
“Java 使开发人员能够:
- 在一个平台上编写出的软件,几乎可以在任意一个其他平台上运行。
- 创建可以在 Web 浏览器运行并访问可用 Web 服务的程序。
- 开发用于在线论坛,商店,民意调查,HTML 表单处理等的服务器端应用程序。
- 用 Java 语言组合应用程序或服务,以创建高度定制的应用程序或服务。
- 为移动电话,远程处理器,微控制器,无线模块,传感器,网关,消费产品以及几乎任何其他电子设备编写功能强大且高效的应用程序。
……
从笔记本电脑到数据中心,从游戏机到科学超级计算机,从手机到互联网,Java 无处不在。”
是的,Java 无处不在。它可以在台式机、企业台式机、电视设备、手机等多种设备上运行。
我还记得我实习时的第一堂计算机编程课,甚至大学的也还记得,那天老师给我们布置了几道关于 Java 的简单基础题。
问题1:什么是 println,printf 和 print?
问题2:如何存储变量?
问题3:什么是 Java?
我班有一半的人都有 IT 背景。因此,他们轻松编写出了答案,而另一半人(包括我在内)却大脑一片空白。我对班上发生的事情一无所知。
在此之前,我从未有过如此尴尬的经历。
或许你也会在编码生涯中遇到类似的情况:当有一天,你突然发现别人知道你不知道的事情,这可能会让你觉得伤自尊,可能会使你失去晋升机会,甚至是你的工作。但你在明白自己与别人的差距之后如何行动,远比你看到差距这件事本身重要得多。
后来我接触到了 Udemy 和 SoloLearn,我瞬间明白了自己要学的东西还有很多,且我有能力掌握它们。我并不明确自己未来的方向,但冥冥之中我有一种感觉:世界上最有意思的事情就是能够学习一些东西,充分掌握它,并用它来创建我想象创建的东西。过去我常常在碰到一些挫折和失误时,选择逃避它们,并让我的朋友们来帮忙解决,但现在我可以自信地自己解决这些问题。
我收集了许多资料,许多关于 Java 编程的 YouTube 视频,选修了 Udemy 的课程,并花了好些天的时间额外学习基础知识。好不夸张的说,这并不容易。以前的我从未了解过这些,这是我那个阶段必须做的。我的同学比我有优势,我还有很长的路要走,事实上,同学的优势也成为了我加倍努力学习的动力。
整个学习过程中,我不断遇到使我沮丧和烦恼的错误,我只能尽可能地保持镇定、专注、努力,始终如一。我建议每个人都尽早选择自己的道路和目标,并专注于它,因为你一定会以某种方式到达那里——即使不是马上。
我的痛苦来源于我犯的错误:怀疑自己、缺乏自信、拖延、易放弃、胆小。这些错误,可以让人反思和自省——无论是我们自己还是他人,这也是为什么我决定分享故事的原因。
“你必须从别人的错误中学习。你的有生之年不可能有足够长的时间使自己成为所有人。”——山姆·莱文森
编程如何改变了我的生活
编程使我相信我可以解决问题、处理错误,它给了我人生目标。有时,遗漏了一个简单的语法错误会让我感到沮丧,同时,每一次的进步都会让我欣喜。
所有语句都变为布尔值…… True or False。我的计数从零开始,而不是一。
现在的我才知道,训练计算机以执行特定任务比训练人类要难。
最后我再叨叨几句
我花了几个月的时间找到自己的道路,作为一名开发人员,我慢慢接受自己的错误和恐惧,开始享受这种自在,并开发了一个小型桌面 APP。
展望未来,我渴望学习更多,成为一名优秀程序员,并在不久后以程序员的身份拥有我的第一份有薪工作。
我想告诉大家,如果以为仅仅学习了计算机科学课程就可以成为程序员的话,就大错特错了。即便是你已经拥有了计算机科学的学位,你仍然必须做到以下这些:
- 对编程充满热情;
- 常练习;
- 多看书多学习;
- 尝试不同的语言;
- 读写代码;
- 以可以识别或表示变量和子例程的方式命名它们;
- 学会盲打(这将改善你的姿势和肌肉记忆,并且你会在打字时更明显注意到速度上的差异);
- 用可识别或强代表性的方式来命名变量和子程序;
- 学习并进行实操;
- 把编写代码作为日常;
- 编写你感兴趣的软件;
- 从下往上读取堆栈跟踪;
- 尽你所能的简化程序;
- 不会的地方就 google 一下;
- 保持专注,一次只写一个程序;
- 大括号始终保持配对;
- 正确设计代码;
- ……
每个故事都可以成为我们重新考虑优先事项或重新集中精力的灵感。
发现一个错误的尴尬仅持续几秒钟,但从错误中学习却是永远的。相信我,这是值得的。
我希望这篇文章能激励大家永不松懈。你可以做到,一定可以,只要对你想做的事始终充满激情并渴望学习,再找到一位出色的导师。
借此,我要向鼓励我分享故事的 Charles Best 致意。十分感谢您的教诲和指导。
请坚信,你的梦想必定会变为现实。
千里之行,始于足下。任何梦想的实现,都需要脚踏实地的去进行!
7月,实验楼开展了第四期的30天百楼挑战活动,详情点击下方了解更多,30天累计在实验楼学满50个小时,即算挑战成功!
给自己一个挑战自我的机会吧!