学习如何学习:CS版
我从未想过自己会成为一名软件工程师。小时候,我曾坚定地立志成为一名建筑师,但后来发生了一些事情……我意识到,随着年龄的增长,我对计算机的兴趣越来越浓厚。高中第三个学期结束后(我住在墨西哥,在我所在的州,公立高中通常为四个学期),我找到了答案:我决定攻读计算机科学学士学位。
时间快进到我上大学四个月后。那是我大学第一个学期的结束(2015年,三年前),我只有四个月的编程经验,我的第一门编程课是面向对象编程,而我计算机科学学位第一个期末项目的截止日期还有一周。
使用 MySql 数据库管理大学学生、教授、课程和时间表的 ERP 系统。
我当时真的想哭。真的想哭。这是我计算机科学生涯的第一个项目,但我完全被卡住了。什么是数据库?什么是 SQL?什么是非关系型数据库?什么是数据库管理系统?我怎么把我的 Java 代码连接到数据库?我以前也遇到过很多类似的问题,我没有经验,也不知道该怎么做。
当然,我也可以直接从 Stack Overflow 或类似的页面复制代码,但我需要知道代码是怎么运作的。对我来说,复制代码是不够的。我当时想完成这个项目,一切都从头开始,完全靠我自己。
我记得那些夜晚,我在网上搜索了大量视频、网页、书籍等等……只是为了找到新的问题。我完全迷失了方向。在网上搜索只会伤害我自己,计算机科学就像一片信息的海洋,而我却身处其中,不知道自己身在何处,不知道该做什么,也不知道该搜索什么信息。
我们团队在高年级其他同学的帮助下完成了这个项目。
我至今还记得那种感觉。那种感觉就是,你什么都不知道,即使你费尽心思去搜索信息,也什么都看不懂,所有的东西都像是用外语写的(实际上,所有的东西都是英文的,但你明白其中的意思)。
甚至六个月后,上完 C 语言编程课后,搜索如何进行 Web 编程时,我还是觉得……等等,框架到底是什么?为什么人们会推荐那么多框架?什么是 Django?后端?前端?框架和库之间有什么区别?也许我反应太慢了,但对我来说,这些信息量太大了。
所以我不知道是不是只有我一个人这样,还是每个人一开始都有这种感觉,但我很迷茫,我希望了解更多,但尝试这样做只会让我产生更多疑问。
我还有同样的感觉吗?
不,绝对不是。我觉得我在攻读学位期间学会了如何学习。这是一项非常重要的技能,因为作为一名软件工程师,你需要了解新技术,并且在整个职业生涯中,你需要具备学习新技术和工具的能力。
也许最终每个人都能达到这样的境界。你可以毫无障碍地阅读任何在线文档,并学习一门新的语言。你可以阅读新技术,而不会完全迷失方向。你只需稍加耐心,就能在网上学习任何你想学的东西。
但也许并非如此,也许有人会因为沮丧而决定放弃CS,也许有人会说服自己:“这不适合我”。如果你正处于这种沮丧的境地,让我告诉你,你并不孤单,开发者社区里的每个人都会帮助你。
不放弃。
接下来的技巧是给你的。我想分享一些我作为一名计算机科学学生的小经验,教你如何开始在这片美丽的知识海洋中遨游。请记住,这些技巧只是帮助我成为更好的学习者的点滴小事,它们可能并不适用于你的情况,因为我们每个人都是不同的。
求人
这听起来可能显而易见,但事实并非如此。有时,我们的自尊心会阻碍我们寻求帮助,即使这是一件正常且健康的事情。
不要指望有人能给你所有答案。问问他们有什么建议,问问他们的经历,试着了解他们是如何学习这些知识的,想想你需要从哪里开始学习才能达到他们的水平。问问他们,这样你才能知道如何开始处理所有现有的信息。
社交
参加墨西哥校园派对(一个充满会议的科技盛会)是我人生中最美好的经历之一。我和一群陌生人一起坐了8个小时的巴士,穿越了整个国家,只为结识新朋友,学习所有我能学到的科技知识。
与所有开发人员、黑客、创意人员甚至商人交谈,所有这些都帮助我以令人难以置信的方式成长。
与经验比你丰富的人交谈就像读一本好书,妙不可言。你会积累经验,这些经验会帮助你走过人生的旅程。了解即将发生的事以及他们如何应对这些情况,这是一个很好的机会,让你思考如何应对类似的情况。你会开始发现很多你以前没有意识到的事情。
数学很有趣
并不是每个人都这么想,但我却这么想。
拥有良好的数学背景对每个程序员来说都非常有帮助。在日常工作中,你可能不会用到导数和积分,但代数、微积分、概率和几何能赋予你极佳的逻辑思维。
我并不是说你必须擅长数学才能成为一名优秀的开发者。我的意思是,就我而言,我能够理解数学能力越强,就越能理解计算机的工作原理,也就越容易编写代码。
阅读,阅读,阅读
阅读对于你的发展至关重要。像这里或任何开发网站上的文章都非常有帮助。
做一个积极主动的学生,不要满足于在学校、训练营或在线课程中获得的信息。
你需要对信息如饥似渴。时间不是借口,虽然我兼职做 Web 开发,但我还是会在大学课间阅读 Robert C. Martin 的《代码整洁之道》。
如果我能做到,你一定也能做到。
让CS成为你生活中的重要组成部分
获得学位几个月后,我意识到让 CS 成为我生活中的一个不变的主题,而且我这里没有包括我的“学术生活”,这是一种以有趣和快速的方式学习短小主题的好方法。
当我说“让 CS 成为我生活中的重要组成部分”时,我指的是一些小事,例如关注有关 CS 的 YouTube 频道、关注 Twitter 上的开发人员、参加有关技术的会议、将 CS 作为与其他开发人员/同学交谈的主题而不是谈论昨晚的剧集(插入最喜欢的节目),甚至与我的大学教授谈论他们在科技行业的经验。
我并不是说你应该放弃所有爱好,过上 100% 软件工程师的生活。我是说你应该把 CS 视为你生活中的另一个爱好。
如果这对你来说太过计算机科学,没关系,有些人更喜欢只在工作时间思考这些事情。但是,如果你像我一样,热爱编程,并且每天都学习新的技术知识,那么你应该考虑一下这个建议。
不要有压力
这一点很重要。始终保持冷静。
没有人无所不知,所以保持冷静。如果你不懂某个主题,没关系;如果你不懂某些技术,没关系;如果你只是不想学,也没关系。
我曾经压力很大,因为我的 Web 开发技能(特别是前端)不是最好的,但经过一段时间思考我真正想要的生活后,我意识到 Web 开发并不适合我。
所以,如果最终我要追求低级编程和算法路径,那么因为我不知道最新的 JavaScript 框架或因为我不知道如何做好前端设计而感到压力是没有意义的。
这些都是我学生时代帮助我学得更多、更快的一些方面。也许这些观点并不适用于你,但我觉得有必要在讨论中提出一些新的想法,毕竟像这样的社区帮助我进入了这个行业。
有时你会感到沮丧,有时你会觉得自己的生产力水平真的很低,而且你没有学到任何东西,但让我告诉你:最终,一切都会变得更好,只要继续前进,继续学习,继续为你想要的东西付出努力。
“人生万物皆有定数,唯有死亡。”所以,享受生活,学习你所热爱的事物吧。
谢谢阅读~
文章来源:https://dev.to/jcharliegarciam/learning-how-to-learn-cs-edition-1acc