各位亲爱的开发者们,下面有任意一个声音是不是都听着有点儿熟悉?
你担心自己做得不够好。
看着周围的程序员同事,他们似乎拥有一切:他们的代码比你写的干净,他们的调试速度比你快,他们知道啥时候阅读文档,他们有信心解决任何问题,他们热爱编程写代码。
你却很担心。你担心对框架和使用的语言不够熟悉,你担心引入错误,你担心赶不上热门的技术,你担心提了问题会招人笑话,你担心没有足够的才能,领导不把事情交托给你。
你甚至有时候在想:“我特么是不是不合适做一个程序员”。
如此这些自我怀疑的想法,听起来都是那么熟悉。放松一些,你并不孤单,我们Google一下“自我怀疑的开发者”,在一秒钟内你会得到超过200万的结果。
我也曾是你
有一段时间,我也经历了强烈的自我怀疑,我想知道我到底能不能“做到”。这个情绪是在我大学时准备面试时发生的。我在练习算法时,感觉到沮丧,甚至感觉完全失败。那时候的我与你一样把心吊起来,担心。
后来,我的实践有了回报,我收到很多知名科技公司的职位邀请。一路走了,我学到了两门重要的课程,它改变了我对编程的看法,消除我的自我怀疑的念头。
现在我想和你分享,希望对你有帮助。
第一课:学习编程与健身完全相同
为了学习踢球,我们需要上场踢球。为了要锻炼更强健的肌肉,我们需要去健身房练习举重。要学习编程,你就要坐下来编写代码。
举重课后的第二天,你会感觉到酸痛和疲倦。当遇到编程的困难问题,你的大脑也会直接受到挫败感的伤害,并且会感到沮丧。
你不会因为感觉疼痛而辞职放弃工作。我们知道这是过程的一部分,这一系列的事情连高级开发者的身上也跑不掉。 编程的很大部分是要弄清楚,为什么我们的预期没有发生。想想,如果孩子第一次站起来能够走路是荒谬的,那么为什么你奢望你的代码第一次运行而没有任何错误?
1.卡住是过程的一部分
我记得当时我卡了好长时间,真想一头撞到墙上。在刚开始时,在安装调试开发环境,都那么困难和令人受伤。但事情不能停止不前,我静下心来,尝试深入解决这个问题。我查询Google,咨询社区里的朋友,散步。我最终解决了它,然后继续前行。
随着编程的深入,你的经验在加强,但是开发就是就是一个问题接着一个问题,持续地陷入困境。
下一次,你再次卡住时不要给自己一个难过的时间。请提醒自己,这特么不是你的错。这一切都是正常的,只是过程的一部分。
搭建开发环境其实可能编程中最困难的部分。
花精力鼓捣好几天来建立开发环境是个普遍现象。那些看着装环境很流甚至奚落你的家伙在背后,他们的心在之前也不知道被蹂躏了多少遍呢。
所以根本不必担心,尝试按照说一步步的走下去。但是随机的错误不断冒出来。说明书写得很简单,但事实并不是这样的。不要担心,这不是你的错。阅读本文的人有99.9%都被卡住过,只有0.01%的人是幸运的,他的操作系统环境,软件版本怡好与说明中的一模一样而已。
不太幸运的是,学习编程的第一步也是最令人沮丧,心碎的部分。如果看到无法理解的错误时,可以尝试将错误信息复制到Google的搜索框,加上引号或适当对错误信息进行些裁剪,可能会更精确。根据返回的结果,仔细阅读接着细心尝试,直到可用的解决方案。然后我们继续。
我再向大家重复一下,这个阶段的卡不是你的错,大家这个阶段都经历过。我可以保证,你过了这个阶段,编程就会变得有趣多啦。
2 “基因聪明”不等于“显得聪明”,最终取决于一人个在某个领域花了多长时间
在大学的最后一周。我的同学们对我在“数据结构与算法”一课上表现的游刃有余感到惊讶。在他们在题海里挣扎的时候,而我看起来却毫不费力。
他们其实不知道,我在课前几个月,为了准备考试,我每天花数小时练习算法挑战,几乎涵盖了与课程完全相同的课题:动态编程,深度优先搜索,广度优先搜索等等。正因为我经历了这些课程,才会显得毫不费力。
回想我第一次自学这些概念之时,我会花上好几个小时的时间来死磕一个问题,还没办法弄明白。当我放弃从网上查找解决方案时,我试着努力自己去理解这些困难。当我终于做到的时候,我感到很受伤,我怀疑自己智商咋这么低,想出这样一个解决方案。
有时,当我再次遇到同样的问题时,我可能仍然搞不定它。只所以这么强调,我不得不采取长时候的冷水沐浴让自己冷静下来。
所以说,我说我知道自己怀疑自己,担心自己整不好做不到是什么样子。我以前的经历比你更窘迫,现在的你并不孤单。还有许许多多的开发者,在刚一开始就被人数落为不适合编程,这种经历更让人刻骨铭心。
当再次发现身边的人出类拔萃时,不必挣扎,更不必以为自己没有足够的才华。这些人,只是比你更早更多的接触这个主题或类似的内容,或者在言语方面做了功能而已。他们的大脑已经建立相关的“肌肉”来处理这类的主题。在经历过这些后,你一样会显得聪明和轻松。
正如在健身中心来锻炼肌肉,你投入的努力越多,训练的时间越长,你的能力就越强。学习编程和它有完全相同的过程。
一万小时定律,如同卖油翁一勺勺的倒入壶中而不沾洒,问之云:无它,手熟尔。是啊,你花的时间越多,你就会越熟练。种瓜得瓜,种豆得豆。
第二课:关注你的手艺,而不是自己
不要总想自己是一个程序员,是个好程序员,还是个坏程序员。 如果你处在团队的后半段的5%,你要想办法变得更好。如果你进入前5%,你仍然要想变得更好。无论是有多好还是有多坏,总会有人在你前面,总有要在你后面。 那为啥还要浪费时间思考这些事?
做为编程匠人,我们只关注自己的手艺。不要再问自己,自己的代码有多好,想方设法让它更快,更好,更可读? 让其他工程师用钦佩的目光和行动围住自己。阅读其它优秀的源代码,问自己,和自己写的有什么不同?他们在做什么样的功课?
如果你已经是一名软件工程师,就会有人付钱请你来写程序。这时候,你该停下来反思一下,这个行为意味着很多内容:这位人士么要相信你的编码能力,要么看中你的潜力。
实现这一潜力的唯一途径就是专注自己的手艺,不懈地改进,精进。
项目推进:跟踪你的小胜利
还记得你最后一次最卡住吗?不太确定自己能解决问题是吗?最后你怎么解决?
我们把这些心得用文档记录下来,Google Docs,Word,WPS都可以。下一次,你再一次卡住怀疑人生时,再打开本文档来看,并请提醒自己:如果你能解决上一次的问题,你特么也能解决这个问题!
使用这个文档一直跟踪自己克服挑战,解决问题以及在其中学到的东西。我们总是在庆祝这些值得庆祝小胜利吧!
欢迎留下评论,分享上次你被什么卡住的时刻,你是怎么样解决的,提醒那些正在困难线挣扎的人们,他们并不孤单。
作者:Sihui Huang,Gusto的高级软件工程师
译者:21CTO社区 – 高明
原文:https://medium.freecodecamp.or … df53a
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/257264.html