做者:Sihui Huang程序员
译者:承香墨影面试
我想每一个开发者在学习成长的过程当中,在面临技术难题的时候,都有经历过自我怀疑的过程,可是有时候这并非你的错,你们都经历过如此的过程。咱们做为一个开发者,在成长的过程当中,总有一些小的胜利和小的沮丧,学着为本身喝彩吧。算法
如下任何一个,是否是听起来都很熟悉?编程
你常常担忧本身不够好。c#
看看你周围的开发者们,他们彷佛拥有一切。他们的代码比你的更简洁,他们 Debug 的速度比你更快,他们只须要在编码以前阅读文档就能够很顺利的继续编码。他们看起来颇有信心,也对编码富有热情。设计模式
可是,你很担忧。你担忧你对框架和所使用的语言不够了解,你担忧会引入新的错误;你担忧赶不上最热门的技术;你担忧你没有足够的才能,来天然而言的获得这一切。你在想:“也许我不想成为一个开发者!”数据结构
若是任何这些自我怀疑的想法,你听起来都很熟悉。那么实际上,你并不孤单。Google 搜索 “self-doubt developers”(自我怀疑的开发者),你会在不到一秒钟内获得超过 200w 的结果。框架
有一段时间,我也经历了强烈的自我怀疑。这是在大学时期,我正在复习和准备面试的时候发生的。这些算法问题天天都让我感受到完全的被战胜了。我和如今的你同样担忧本身不够好。数据结构和算法
最终,我经过实践获得了回报,我收到了来自知名科技公司的多份 offer 。一路走来,我学到了两个重要的课程,改变了对我编程的见解,消除了我自我怀疑的想法。post
我如今和你分享,但愿它们也能帮助到你。
为了学习如何踢球,你须要去球场上踢球;为了锻炼出更强壮的肌肉,你须要去健身房举重;想要学习编程,你须要坐下来编写代码。
举重后,次日你会感到酸痛和疲惫。而当遇到编程难题的时候,这会是很是烧脑的,你将会感到沮丧。
你不会由于疼痛而放弃锻炼,你知道这是锻炼过程的一部分。可是当你在编程的时候卡住的时候,你可能会怀疑本身,想知道本身是否足够聪明。
由于:
也许没有人告诉过你,但在编程期间卡住是绝对正常的,它甚至发生在高级开发者身上。编程的很大一部分是要弄清楚为何你预期发生的事情没有发生。若是你以为,孩子第一次站起来的时候可以走路是荒谬的,为何你会但愿你的代码的第一稿可以完美运行而没有任何错误?
我记得当我被卡住了很长时间的时候,我想把个人头撞在墙上。我知道这很难过和使人沮丧(特别是在处理与开发环境有关的问题时)。可是就是挂在了这里。深刻研究这个问题、借助 Google、问一些朋友、散步。你最终会解决它,并继续前进。并且随着你得到更多的经验,你会慢慢地陷入困境。
假以下一次你又被卡住了,别再浪费时间自我怀疑了。你应该提醒本身,这不是你的错。这是正常的。这只是过程的一部分。
若是你是初学者,花费数天时间来创建开发环境是很是广泛的,这些时刻可能会粉碎你的灵魂。你尝试按照文档一步一步向下执行,但随机的错误不断出如今每个步骤中。文档看起来很简单,但事实并不是如此。这不是你的错。阅读该教程的人中有 99.99% 卡住了。其他的 0.01% 是幸运的,刚好与编写文档的人具备彻底相同的操做系统环境配置。
不幸的是,学习编程的第一步也是最使人沮丧和心灵破碎的部分。当你看到你没法理解的错误时,只需将确切的错误日志复制并 Google 搜索便可。(把错误日志加上引号或只搜索错误日志的前半部分可能会有帮助。)尝试不一样的解决方案,直到找到可用的解决方案,而后继续下一步。
请原谅我再次强调:在这个阶段卡住不是你的错。你们都这样作。我保证,一旦你经历了这个阶段,编程将会变得更加有趣。
在大学的最后一个学期,个人朋友们对我在《高级数据结构和算法》课上的表现感到惊讶。当他们很辛苦的学习时,我看起来绝不费力。
他们不知道的是,在课前几个月,为了准备面试,我花了数小时练习编码挑战,涵盖了与课程彻底相同的课题:动态编程,深度优先算法,广度优先算法等。它彷佛绝不费力,只是由于我已经经历过这些努力的过程。
当我第一次自学这些概念的时候,我会花上好几个小时的时间来盯着一个问题,并且没法弄清楚它。当我放弃并在网上查找解决方案时,我努力去理解它们。当我终于作到的时候,我感到更加沮丧,由于我怀疑本身是否足够聪明,为何本身想不出这样的解决方案。
有时甚至当我再次遇到一样的问题时,我可能仍然不知道如何解决它。我会这么强调,我不得不采起长时间的热水淋浴来让本身冷静下来。
因此,当我说我知道本身怀疑本身,担忧本身作不到的时候,相信我。我之前也是这样。我能够向你保证,你并不孤单,许多伟大的开发者也经历过一样的事情。
下一次当你身边的人表现出众的时候,而你正在辛苦挣扎,不要觉得是你没有足够的才能。极可能,他们只是比你更早地接触到这个主题或相似的主题。他们的大脑已经创建了“肌肉”来处理这种类型的问题。在经历了目前的挣扎以后,你也会显得聪明而轻松。
这和咱们的常识同样。
你经过锻炼来锻炼肌肉。你投入的努力越多,训练的时间越长,你的能力就越强。学习编程有彻底相同的过程。你花费的时间越多,你就会越熟练。种瓜得瓜,种豆得豆。
不要想着你是一个多么优秀或者多么差劲的程序员。若是你处于队伍的最后 5%,你想变得更好。若是你有幸进入前 5%,你仍然想变得更好。不管你有多好或多坏,总有人在你面前,同时在你背后也有人。那么为何浪费时间思考这个问题呢?
相反,专一于你的技术能力。别再问你有多好、问你的代码有多好。你应该思考,如何使它更好,更快,更可读?长期关注那些让你钦佩的工程师,阅读他们的代码,看看和你的有什么不一样?他们最近又正在研究什么新玩意儿?
若是您已是一名软件工程师,则有人会付钱给您编写代码。你应该停下来反思一下,由于这意味着不少:有人要么相信你的编码技巧,要么看到你的潜力。要作到这一点,惟一的办法就是把注意力集中在你的技术能力上,不断地改进。
你最后一次被卡住了,不肯定本身是否能解决问题。而最终,你是如何解决的?
打开一个新的 Google 文档并将它记录下来。
下一次你怀疑本身的时候,看看这个文档,并提醒你本身:若是你能解决上次的问题,你也将解决这个问题。
使用该文档来记录你克服的挑战性问题的过程以及你从中学到的东西,老是庆祝这些小胜利,用这些小胜利来激励本身!
若是你看完这篇文字,留下评论,分享上次被卡住的时刻,提醒那些正在挣扎的人,他们并不孤单。
原文地址:
https://medium.freecodecamp.o...
今天在 承香墨影公众号的后台,回复『 成长』。我会送你一些我整理的学习资料,包含:Android反编译、算法、设计模式、虚拟机、Linux、Kotlin、Python、爬虫、Web项目源码。
推荐阅读: