在Twitter上看了一篇文章,以为写得很好,一些事例跟本身当初学习编程时心情特别像,想着项目也没啥事,就试着翻译一下,贴出来,与君共勉!git
提到代码,我相信不少人会想到"挣扎",若是你是一名新手或初级开发者,这份“挣扎”可能会更加突出。学习编程就是:找正确的资源、理解并整合、找份实习或者开发的工做,而后开始上手正式的项目-每一步均可能充满着挣扎与迷茫。程序员
挣扎带来的好处在于,你能够学习,走出本身的温馨区来体验新事物、实践本身新颖的想法,不断地打磨本身,让本身变得愈来愈好。github
在教育界,不少成功人物的例子都有过挣扎。表面看起来一切都是那么的迷人和灿烂。 这种感觉对于初级开发者尤甚,由于他们的同事:中级的、经验丰富的人是总能用本身了不得的逻辑思惟、精彩的编码手段惊讶到他们。编程
可是当咱们走进他们并弄清事实,才意识到每一个人都有必须面对的困难或挑战,每一个人都会被bug、错误所困扰。相比咱们,他们面对的是高难度的、复杂的bug而已。设计模式
我分享一下让我学到不少的,也是最喜欢的两篇推文。这些推文总能让我开心并推进着我前行。让我感到也许咱们在同一艘船上,有着一样视角,奔向同一个目标。安全
当我艰难挣扎在学习JavaScript的路上时,生命我看到这篇推文,这对几个月前的我来讲是一个震惊的观点。 10个月的时间学习、探索、实践以后,我终于获得了一个远程的、带薪的实习机会。并发
在学习过程当中,我老是寻求一些欣赏或认可,让我认为本身会成为一名好的程序员。我想知道本身是否适合编程。以及本身可否像其余程序员同样写 出好的逻辑和代码。less
在小的问题上折腾、不能很快地修复问题经常让我变的沮丧。 看到一些顶尖的编程界名人向本身的关注者坦承他们也非完美,我又找回了自信。函数
哈哈,感受好点了吧。 我不知道你感受如何,反正好几回都让我倍感轻松。工具
我最近开始了在某公司的远程实习,我意识到随着学习和体会,个人担心和不安全感会慢慢改善。这篇文章记录了初期的几周内我面对的担心和挑战
我但愿帮助那些努力并适应工做的新手和初级开发者,让他们明白每一个人都会有挣扎,这对于学习是必要的。
在Mozilla开始工做的前天晚上我作好了准备,很开心也很紧张。一件意想不到的事发生了:个人工位持续了8个小时的断电。
我没法跟有经验的人交流也无法开展工做。
庆幸的是,下午5点终于来电了,公司举行了欢迎仪式,见了其余同事和来自Mozilla的技术人员。
颇有趣也很新颖,就像会见来自世界各地的人们同样,交谈了几乎一个小时,见了个人技术领导Armen 和Dustin,感受很好。
感受跟他们经过邮箱、短信沟通留给个人印象不太同样。
个人导师在github上列了一些issues,它们有着不一样的复杂性。次日我就开始认领这些issuses并着手修复工做。
从这时候起,我发现正式的号角才刚刚开始,上一次挣扎仅仅是一个小前奏。
我在开始工做时的感觉与当初申请实习时的感觉截然不同,工做中的担忧是本身作的不够好或失去这份工做。
当我卡在第一个Issue:根据须要实现graphJS工具提示的自定义化,这也太难了。
最初我觉得本身很很快就搞定它,事实证实确实花费了很多的时间和精力。 我想了2天也没找到合适的方案。 我问了导师好几个问题,并试着给出本身的看法,有一段时间,我以为本身可能没法搞定由于过程太使人沮丧了。
当时,导师并无给我施压,相反他们帮我树立信心,告诉我面对一个新项目的代码时困惑是很正常的事。 有时,理解事物和别人写的代码真的须要时间,咱们没必要过于苛求本身。咱们须要作的在时间消耗中get到新的东西。
从那以后,我挣扎于代码中——上百个函数和文件。个人导师跟我介绍了橡皮鸭技术。而后让我把代码解释给“橡皮鸭”。 这种方式帮助我更好地理解代码以及内部运行机制。
“It is okay to get stuck, we all get stuck with issues and errors. With the years of experience we get stuck less, but we still get stuck.”—Armen Zambrano
大多数时候,你知道答案,也许是逻辑,而后如何应用它。可是你不知道从哪里开始? 有不少的代码文件和函数,你困惑于吧这个方案放到哪里才能正常工做? 个人导师建议我根据注释来理解代码和函数,还有我本身的方法(console.log,永远有效)
在第一个issuses之后,事情变得顺利点了,但依然充满挑战。 我又被一个相对复杂的issuses绊倒了,花了几天才解决。 可是幸运的是,个人导师和开源人展现了足够的善意,让咱们这些初学者面对困扰的心情至于太糟糕。 咱们须要相似的乐于帮助或指导的人,他们给初学者提供了最好的资源,而不是让人精疲力尽。
哈,若是你不熟悉开源或是个新手,那么关于代码合并我得提醒你几点。 若是你很差好对待这件事,结果多是:你花费了几个小时查找并解决了问题,结果你在合并代码中丢失了这段代码。
个人代码有几回冲突,我直接 经过 git commits 清理掉了。 这很烦人也很恐怖。可是若是没有这些事情发生,我也不会学到关于git合并 、提交、解决冲突的新概念 感谢导师帮助我突破了代码冲突的陷阱。
这适用于几乎全部人,几天后咱们被这些本身亲手写的代码所困惑是件有趣的事情。解决一个bug后,我试着解决了一个相似的bug , 一个接一个。 我就像是... 我怎么会写这样的代码 ? 这他妈的居然也能正常运行?
能工做的代码跟不能工做的代码同样使人费解。根据经验,能工做的代码会给咱们制造更多的麻烦。在翻看老代码是,你从新思考并发现了一个更好的解决方案。 因此你就没必要去担忧或者郁闷 这些代码是以前本身或别人写的了,由于你可能已经学到了新东西。
当一个中级开发者或导师对咱们的工做作出改正或提出意见,很难不去在乎这个事或感到沮丧, 这种情绪在开源项目或公共平台上可能会更加难以平衡。
可是我建议专一于特定的层面,拥抱一个学习的态度。 只有怀着虚心学习的态度,你才能学到新的概念和好的编码实践。 抛开自我,专一于经验的学习或其余人的知识的学习。
尽量大量地吸取信息,面对新事物要多问 对于信息保持一种开放、吸取的姿态,对待学习如饥似渴。 不要惧怕尝试温馨区以外的新的或陌生的东西。 有时候咱们习惯了本身的代码书写方式,而不去关注那些好的实践或设计模式。 尽量试着去学习。这也是第一条推文所倡导的建议。
问问题是个好的注意,尤为是当你被困住时。 先作好功课和一些努力的尝试绝对是个好的作法,有助于提出有效的问题或可能的答案。
而后你就能获得一个来自导师或中级工程师的回馈。 有助于找到本身的作事模式,你的导师也会以为你有本身的思考。 开源项目的人或有经验的人一把都乐意、愿意帮助你,前提是你提出了一个有效的问题。
不要一直跟别人比,这会影响本身的表现,也会失去自信。 记住,任何一个管理者都是重新手开始的。 他们了解这种痛苦和挑战。罗马不是一天建成的--这是每一个人都必须跨越的过程。 在那个属于本身时代到来以前,保持努力的姿式。
记住,每一个新手都处于你的位置,你不是例外。 学校所学跟真实生活中的有着很大的差别,咱们必须不断学习才能胜任一个领域的开发任务。 每一个新手都曾处在你的位置,对你的痛苦感同身受。你只须要专一拥有一个学习的态度保持不断学习不断成长。
本文完,尽可能贴近原文,本着文章流畅的必要性,有所删减,结构也作了些调整,更适合读者阅读。