原文链接,以下是译文内容:
我从事编码工作已有10 多年了,过去 6 年我一直担任软件工程师。
在本文中,我将分享 9 件我希望在开始编程时就知道的事情,这些事情可以让我的编码之旅变得更加轻松。
1. 你不需要知道一切
要了解的东西实在是太多了。
在我加入的每家公司中,我直到真正开始工作后才知道我将要使用的大部分工具。
在摩根士丹利担任全栈开发人员的第一份工作之前,我并不了解React、Redux 或 Flask 。
在亚马逊印度担任后端和机器学习工程师的第二份工作之前,我并不了解AWS、Transformers 和 Typescript 。
在加入Adobe担任 Java 数据工程师之前,我从未使用过Hive、Presto 和 Kubernetes 。
目前我在美国亚马逊担任后端工程师,在这里我第一次使用多个内部工具。****
软件工程并不在于了解特定的工具,而在于在适当的时候愿意学习新的东西。
2. 学习一门编程语言
当我刚开始编程时,我想学习所有流行的编程语言和工具。
我想“我掌握的语言越多,我就能成为越优秀的程序员!”
因此,我经常在各种语言之间切换。我今天看一些Java教程, 第二天看Python教程, 几周后看一些JavaScript教程。
(图片来源:medium.com/the-andela-… )
我感觉我学到了很多东西,但我的知识充其量只是肤浅的。我并没有真正取得任何进展。
例如,我能够使用 if/else 和 for 循环在 Java 中编写简单的代码,但并不真正了解 JVM 如何工作、如何管理内存或 Java 中的多线程如何工作。
回想起来,我希望自己从一开始就只专注于一种主要语言并深入研究它,而不是每门语言都学一点。
相信我,一旦你打好了基础,学习其他语言就会变得容易得多。
当谈到编程语言时,深度比广度更重要!
3.不要与他人比较
作为人类,我们倾向于将自己与他人进行比较,这在编程中经常发生。
当我开始上大学时,我对编码一无所知,但我的一些同学已经编程两年了。
我从大二就开始学习数据结构和算法,但是我们班上的一些人已经是竞技编程的专家了。
这使得我不断地将自己与他人比较,并感觉我永远不会像他们那么优秀。
我花了太多时间担心自己与别人相比做得如何,而不是专注于提高自己的技能。
但是,我学到的是:无论你有多优秀,总会有比你更有才华、更聪明的人。
事实上,每个人的旅程都是独一无二的。
没有人比别人更好。
你唯一需要超越的人就是昨天的你。
所以不要比较,不要竞争,只管创造、学习、建设,享受你的旅程!
4. 你不会记住所有的事情
当我第一次开始编码时,我痴迷于记住每一个小细节。
但事实是:你的大脑能容纳的信息是有限的。
除非你反复练习或复习所学的内容,否则你会在几周后忘记它。
我们的大脑就是这样运作的。
在过去的 10 年里,我学习了 8 种编程语言,包括PHP, 但如果您现在让我用 PHP 编写 for 循环,我将无法做到,因为我已经忘记了大部分内容。
你不需要记住所有的事情。
只需关注基础知识,然后让经验和实践填补空白。
即使你忘记了某些内容,你也可以随时通过 Google 搜索、阅读文档、访问 Stack Overflow,或者直接询问 ChatGPT 等 AI 工具。
5.边做边学
提高编码水平的最好方法是编写大量代码。
您可以观看教程。
您可以阅读文章。
您可以购买教科书。
不过,当你自己编写代码的时候,真正的学习才开始。
这并不总是那么容易,有时会令人沮丧。
最重要的是,这需要时间。
但就像其他所有事情一样,做得越多就会越好。
因此,一旦您掌握了基础知识,就尝试编写尽可能多的代码。
这可以通过在 leetcode 等平台上构建项目或解决编码挑战来实现。
您还应该尝试阅读大量经验丰富的程序员编写的代码。
阅读代码可以让你接触到不同的编码风格、技术和最佳实践,而这些你可能无法通过其他方式学到。
6. 不要只做一名程序员
最初几年,我一直认为程序员就是一直在写代码的人。
但几年后我意识到编程不仅仅是编写代码,更是解决问题。
我们编写的每一行代码都有特定的用途,编程只是一种解决现实世界问题的工具。
这就是为什么将自己视为问题解决者而不是程序员非常重要。
拥有解决问题的思维方式可以让我们关注更大的图景,并帮助我们花更多的时间思考解决方案而不是编写代码。
一旦知道要解决什么问题以及如何解决,编码就会变得容易得多。### 6. 不要只做一名程序员
最初几年,我一直认为程序员就是一直在写代码的人。
但几年后我意识到编程不仅仅是编写代码,更是解决问题。
我们编写的每一行代码都有特定的用途,编程只是一种解决现实世界问题的工具。
这就是为什么将自己视为问题解决者而不是程序员非常重要。
拥有解决问题的思维方式可以让我们关注更大的图景,并帮助我们花更多的时间思考解决方案而不是编写代码。
一旦知道要解决什么问题以及如何解决,编码就会变得容易得多。
因此,不要只做一名程序员,而要成为一名问题解决者。
不要只是为了写代码而写代码。写代码是为了解决问题,这才是有意义的。
7.沟通技巧很重要
仅仅擅长技术是不够的,能够有效地传达你的想法和解决方案才是成功的程序员与其他程序员的区别。
这是我在职业生涯后期才学到的东西,但从那时起,我有意识地努力提高我的沟通技巧,积极寻找机会练习表达我的想法,参加团队讨论,并提高说话和写作的能力。
善于沟通可以让你清楚地表达你的想法,与团队成员有效地合作,并向非技术人员解释复杂的技术东西。
8.提出问题
没人指望你能知道所有答案。
当我刚开始编程时,我太害羞了,不敢寻求帮助。
我认为寻求帮助是软弱的表现,意味着我还不够聪明或不够优秀,无法独自解决问题。
我会花几个小时,有时甚至几天的时间,绞尽脑汁思考一个问题,决心自己解决它。
但每个人有时都需要帮助。
通过提问,我们可以学习、成长,并提高自己的能力。
最好的部分是大多数人都很友善并且随时乐于提供帮助。
从来没有人拒绝帮助我。人们实际上都乐于提供帮助。
请记住,唯一愚蠢的问题是那些没有被问到的问题。
因此,不要犹豫向你的同事、导师甚至互联网上的陌生人寻求帮助。
很有可能,他们曾经经历过和你一样的境遇,并且很乐意分享他们所知道的知识。
9.挑战自己
学习编码就像锻炼肌肉一样。
在健身房,如果你只举起轻重量的哑铃,你不会变得更强壮。
想要快速锻炼肌肉,你需要随着时间的推移慢慢增加重量。
同样的原则也适用于编码。
为了提高编码水平,你需要完成更艰巨的任务并解决更大的问题。
但不要试图立即承担最艰巨的任务。
相反,尝试做一些比你习惯的更难的任务,并慢慢增加难度级别。
当你强迫自己解决难题时,你不仅仅是在解决问题,你还在提升自己的技能,扩展自己的知识,建立自己的信心。
说说我比较有感触的几个点:
- “你不需要知道一切。要了解的东西实在是太多了。软件工程并不在于了解特定的工具,而在于在适当的时候愿意学习新的东西。” 在前端的学习开发中,对这点真的深有体会,东西永远学不完,刚开始时看到什么学什么,毫无重点和学习思路,时常因为有太多未学的内容感到焦虑。现在开始慢慢学会构建自己的技能树,分清重点次要,抓住基本去学习。而且像Vue、React这些框架,如果从解决问题的目的来看,都是大同小异,只是实现手段和API有所差异。学习了一个框架,另一个就容易触类旁通了。
- (深入)“学习一门编程语言。”“回想起来,我希望自己从一开始就只专注于一种主要语言并深入研究它,而不是每门语言都学一点。”“相信我,一旦你打好了基础,学习其他语言就会变得容易得多。” 对我而言,我希望深入学习JavaScript以及
一门后端服务语言(目前是 Node.js,但这称不上另一门语言)一门静态语言。- “你不需要记住所有的事情。”没关系,“我们的大脑就是这样运作的。”“除非你反复练习或复习所学的内容,否则你会在几周后忘记它。”
- 边学边做。“不过,当你自己编写代码的时候,真正的学习才开始。”“一旦您掌握了基础知识,就尝试编写尽可能多的代码。”“您还应该尝试阅读大量经验丰富的程序员编写的代码。阅读代码可以让你接触到不同的编码风格、技术和最佳实践,而这些你可能无法通过其他方式学到。” 在实习时,我就发现自己会刻意模仿同事的代码风格,毕竟这是自己阅读得最多的代码了。为了更好提高编码水平,多阅读优秀代码还是很有必要的,无论是学习代码风格还是学习实现思路。
- “不要只做一名程序员,而要成为一名问题解决者。” 确实,技术是为了更好地服务业务。不用对技术钻牛角尖,有时候这条路走不通,去看看还有没有别的路。要以始为终。