【译提升编码的关键技巧

2023年 7月 22日 50.7k 0

Tips:编程有几年的时间了,最近看到了一篇英文文章感觉不错,就想着把它翻译出来给一些刚入行的同学看。期望可以帮助新人同学在入行时少走一些弯路(如果当时自己读过这篇文章,应该会少一段迷茫期)。

当你学习编程时,一切都将开始改变。在这里,我们喜欢称之为编程的拐点。在越过拐点后后,作为开发人员,你的工作方式将发生显著变化。在前往拐点的过程中,编程能力逐渐可以自给自足,不再需要他人的帮助。这一过程可能非常令人沮丧,但一旦越过拐点,它就会给你带来难以置信的力量。我们的主要目标是帮助学生快速地度过拐点,以便他们获得在工作中解决任何问题的能力。我们相信,能够独立解决问题是一项非常宝贵的技能,这种能力将会比简单地学习如何构建一组应用程序走得更远。

1 教程阶段(3-8 周的认真编码)

刚开始编程时,有很多特定领域的知识还不知道。例如:如何使用Java语言编写循环或如何使用JdbcTemplate 从数据库中提取内容。

想要成为一个自给自足的开发人员,第一步是学习如何解决特定的任务。一旦你掌握了某些特定的任务,各个任务如何组合在一起的大致轮廓就会开始变得显而易见。随着时间的推移,你将开始学会识别设计模式,最终,当时看起来令人困惑和陌生的事情将逐渐变得越来越熟悉起来。

2 对于刚开始学习的学生来说,最重要的技能是关注细节

在浏览文档或教程等材料时,密切关注细节非常重要。即使是最轻微的拼写错误也会导致错误消息或bug。一开始看到错误消息是一种令人沮丧的经历,但这是学习过程中至关重要的一步。在此阶段处理错误消息和问题会教会你在安全环境中编程的最重要技能之一:注重细节。

调试错误消息非常重要。 事实上,错误消息只是编程的一部分:缺乏经验和经验丰富的开发人员都会看到它们。唯一的区别是,处理错误消息的经验越多,尝试修复它们所需的时间就越少。

原因如下:

  • 随着时间的推移,您将学习如何阅读错误信息并快速提取相关问题的细节。当第一次看到错误消息时,需要一段时间才能理解它的实际含义。但是,在看到数百条错误消息后(我们也将会看到数百条!),便能够查明问题的位置以及修复问题所需的详细信息。
  • 我们应该从解决的每条错误消息中吸取教训。不要只是修复错误并解决而是要了解正在修复的代码到底有什么问题。通过从每个错误中吸取教训,下次再犯同样的错误时,便能够更快地纠正它。
  • 最初,我们可能会针对看到的每条错误寻求帮助。随着时间的推移,我们将学会通过仔细检查代码并进行Google来减少寻求帮助的频率。

在教程阶段,您将跟随指导。刚开始,你会发现遵循指导也很很困难,并且经常会出现错误消息。随着时间的推移,你将逐渐发展出调试错误的技能并能更好地关注错误细节,并取得快速进步。当完成教程阶段,你会发现自己能够以更快的速度编写代码了。

此时,有些人会感到自信——就像他们已经准备好放弃辅导并开始在没有结构化指导的情况下构建东西——并且会很高兴地投入进去。也有些人将寻求更多的指导,试图获得更多特定领域的知识,以寻求“深入理解”。不幸的是,指导阶段只能止步于此,而且在教程也难以获得自信。真正的自信来自于努力解决你不知道如何解决的问题,并自己找到解决方案。

编程的肮脏小秘密是...

你永远不会知道解决所有问题所需的一切知识。踏上编程旅程,你可能会想象自己最终会学到所有需要学习的东西,然后就可以了,但这一时刻永远不会发生。

编程需要终身学习。经验丰富的软件工程师会致力于寻求他们尚未解决的问题并为其找到解决方案,因为这一过程会让他们有机会学习更多知识。如果你一直期盼自己可以掌握编码所有知识的那天的到来,你必须知道,这一天永远不会到来。知道这件事,也是一件美妙的事情。

learn-to-code-1.jpg

通过以下情况后,你将进入旅程的下一阶段:

  • 你已经看到了足够多的错误信息,并且它们不再让你感到惊讶。知道如何解读它们的含义以及在哪里查找代码中的问题。
  • 你成为了一个通过Google搜索解决方案的“专家”。当你正在添加功能或看到令人困惑的错误信息时,你知道需要搜索什么来查找所需的信息。
  • 你可以借鉴参考工程其他部分的代码来完成自己的功能,而不是总是寻找手把手的指导。

3 拐点(心态正确的 2-4 周)

拐点阶段是学习编码最令人沮丧的阶段之一,但从很多方面来说,这也是唯一重要的阶段。随着你逐步脱离指导,并开始解决没有人为你提供解决方案的问题时,拐点也就到来了。

在某些时候,你会觉得自己还没有准备好应对这个阶段,并且想要回去构建一些更为具体的事情。不要陷入这种心态,你之所以会感到沮丧是因为:在拐点阶段,你的编码速度将比前一阶段慢10-20倍。

你可能会开始质疑自己并怀疑自己是否真的有能力成为一名程序员。在这个阶段,不安全感和怀疑感很常见。

虽然你会觉得你学习和完成事情的速度要慢得多,事实上,你正在实现最重要的事情,随着你掌握的知识越来越熟练,你将开始形成一种所谓的“程式化”能力。

“程式化”能力是一种自学未知知识的能力。当需要实现一项新功能时,应该怎样进行Google搜索?此时,当涉及很多需要完成的事情时,会感觉自己是在黑暗中前行。学习如何自己找到光明至关重要,因为你永远不可能知道所有需要知道的事情,所以你需要能够教会自己如何解决手头的问题。

大多数人没有意识到,学习编程,不仅需要学习特定的编码语言知识还需要培养“程式化”的能力。

4 在余生中,每一天都去超越极限

一些软件工程师一旦找到立足点就会留在自己的舒适区。这些类型的程序员被称为维护程序员——你需要避免成为这样的人。

相反,你应该努力每天超越自己的极限。程序员辞职的最常见原因是“它不再具有挑战性,因为我已经解决了所有有趣的问题。”

你不应该试图将编码拉入自己的舒适区,而应该寻找超出自己当前能力范围的问题。这是巩固和扩展自己技能的唯一方法。引用度过拐点阶段的同学话说:“我还是感觉自己陷入了深渊!我只是越来越舒服地知道那是我必须去的地方!”

5 在Web开发中,实际上有两个拐点会同时到来

Web开发拐点是指你能够构建任何数据库驱动的应用程序。这意味着能够构建一个包含多个页面的Web应用程序,并应用数据库进行简单的存储和检索信息。Web开发人员称之为:“CRUD”。在该阶段,你应该还能够通过GitHub或博客文章上提供的文档来与任何第3库集成。

算法和数据结构拐点是一个不那么明显的拐点,但实际上更重要。克服这一点的人除了掌握编程基础知识并拥有解决复杂编码挑战的深度知识之外,还将掌握他们正在使用的编程语言。克服算法和数据结构拐点的人将能够:

  • 编写排序算法
  • 编写链表操作
  • 理解并编写利用堆栈、队列和树的程序
  • 使用递归或迭代编写计算机程序

简而言之,一旦通过了这个拐点,您将掌握数据操作,并将了解代码决策对性能的影响。传统的计算机科学学位只专注于让学生度过算法和数据结构的拐点。

在大多数技术面试中,面试官会假设你已经通过了Web开发拐点,因为这更容易做到,并将他们的问题集中在评估你在算法和数据结构方面的技能。这些问题通常会集中在我们上面提到的主题:排序算法、反转链表以及使用堆栈、队列和树。

一旦开发人员度过了Web开发拐点以及算法和数据结构拐点,他们就掌握了王国的钥匙!

越过这两个拐点的开发人员将能够解决两者交叉的挑战:在高级Web应用程序环境中编写的复杂算法。这是专业Web开发人员每天所做工作的核心。

6 拐点之后

当第一次听到拐点的最大后果时,听起来有点违反直觉。深呼吸:毕竟在学习编码时,特定的编程知识在整个编程生涯中并不重要。是的!不是在开玩笑——这真的没有那么重要。一旦你度过了拐点,这些特定的编程知识将通过一两周甚至几天的教程中便可顺利完成!

最终真正重要的是:

  • 扎实的掌握Web开发框架
  • 扎实的掌握应用任何编程语言编写算法复杂的代码能力

7 招聘经理希望开发人员具有扎实的网络开发和算法技能

当我在PayPal工作时,我的团队聘请了一位没有Rails经验的高级Rails开发人员,他一直在使用Python、LISP和Perl进行大量编码。几天之内,他就产生了巨大的影响。几周之内:产生巨大影响。他很快就晋升为技术团队负责人,这也是我参与过的最佳招聘决策之一。

很多人会说,“AngularJS 最近很热门”,“JavaScript正在兴起”,或者“最新的时尚是……”我对此的回答是:“所以呢?”当你学习如何编程时,你的唯一目标应该是找到拐点并消灭它。一旦你这样做了,学习这种新的、性感的时尚就不再是一件困难的任务了。

变得自力更生。能够在没有结构化指导的情况下学习新的编码技能,意味着您不再需要等待任何人来帮助你,也意味着对于需要学习的大部分内容,只需在互联网上搜索并阅读有关内容的各种材料即可。
这并不意味着你立即“知道”一切,而是意味着一切现在都“可以弄清楚”,所以本质上,你是不可阻挡的。

8 拐点期间将发展的技能

作为软件开发人员,最好的参考资料是已经编写过的类似代码。当完全理解自己编写的代码时,便无需将所有细节都牢记在心。这意味着在构建新功能时你应该问自己的第一个问题是:“我以前写过类似的东西吗?”如果答案是肯定的,请重新访问代码并在头脑中逐行浏览代码。向自己重新解释它在做什么,并问自己:“我现在可以使用同样的方法吗?”

视频在解释特定领域的细节方面很糟糕,因为它们需要很长时间才能看完。假设想与Google Maps API集成。一旦你这样做过一次,在GitHub中打开代码、复制并将其粘贴到新项目中可能需要不到一分钟的时间。另一方面,视频通常需要10-30分钟才能重新观看完。

9 如何有效的度过拐点

因为通过拐点是学习编码最重要的部分,所以你应该让自己的过程尽可能顺利。这意味着你应该在教程阶段就开始准备,并在这段时间保持正确的心态。

在教程阶段,从复习结构化材料中休息一下,并在此过程中给自己提出挑战:

  • 对于每一节课程,尝试做一些超出您正在学习的教程范围的事情。如果您正在学习的教程提供了“挑战”或“自我指导”部分,请全部完成。解决无指导的挑战将为您提供在没有结构化指导的情况下做事的重要经验。
  • 尝试尽可能少地使用教程。尽量多使用文档。请注意,文档会将您视为已经过了拐点的开发人员。当您独自一人时,舒适地阅读和关注 GitHub 上的文档将为您提供帮助。
  • 专注于要点并重复练习。了解如何执行常见操作,例如从头开始启动应用程序、将新应用程序推送到GitHub,以及尽早构建数据库迁移。

突破拐点可能具有挑战性。以下是一些帮助您度过难关的提示:

  • 明白这是一个困难的过程,对自己放松一点。另外,设定切合实际的期望。你无法将“超人”级的学习教程速度与“蜗牛”级的自学速度进行比较。请记住,你正在学习很多东西,但在这个阶段,你正在学习一项全新的技能,即可以自己解决新问题的能力。
  • 如果你在自信方面遇到困难,请知道你的感受是完全正常的。继续工作。如果依然受到困扰,请尝试与最近度过拐点的人交谈。他们将能够理解你所处的位置,并向你保证你所经历的只是暂时的。继续工作,但不要过度劳累。你每天最多只能高效工作6小时左右。在疲惫的状态下工作只会延长你到达拐点的时间。

在这个阶段获得信心的最好方法就是克服任何疑虑。你的情绪可能开始像坐过山车一样。有时,您会感觉自己如坐针毡,但在同一问题上苦苦挣扎15个小时后,通常会产生相反的感觉。

如果一件事情花费您5分钟或5小时还没有解决方案,可能会令人沮丧,但每次您完成并成功实施一项新功能时,你将会充满信心。在没有任何帮助的情况下解决了一些难题后,你便会沉迷于在舒适区之外构建东西的感觉。

10 如何知道你何时已经过了拐点

拐点过程的最后阶段是接受。接受软件开发是一个持续学习的过程,接受持续学习意味着逐渐开始考虑解决更复杂的问题。

你经历过拐点了吗?分享这篇文章并与你的朋友开始对话,你会惊讶地发现有如此多的人已经达到并超越了这拐点。

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论