微信号:bit_tiger

介绍:“有趣,有用,有效”.刷项目,做实战,捅破技术的那层纸.

转专业学Coding怎么会这么难?

2018-08-07 03:06 翻译作品

本文摘选自freeCodeCamp的一篇博文,原文作者Alexander Petkov,原文链接你可以在文章底部找到。


我们先做一个小小的测试。以下哪个情况比较你觉得能比较贴切地表达你上一次敲代码的时候的感觉?

丝般顺滑

陷入舒服的懒人沙发,打开深色背景的代码编辑器,以迅雷不及掩耳之势开始畅游编程的世界。哦yeah,真是时间飞逝!

- 如坐针毡

好不容易强迫自己坐下来敲代码,但Error处处有,Bug满天飞,而且所做的努力好像都没有什么意义。哦no,真是度日如年!


我猜不少人都会选择第二个!因为它十分普遍,就算是我这个有8年编程经历的“老司机”也曾经有过这样的感觉。而且我觉得选择第一个人的必是骨骼惊奇,因为我从来没有听过有人选择第一个。


在过去的几年里,我接触了很多初级开发人员,我归纳了一些特点:

- 他们刚刚入行或者正在学习,有点迷失了方向

习惯了在别人的指导下进行编程,一旦没有人指导了,就会手足无措

- 在我看来,很多人其实是“天赋异禀”的,但是总是在面试的时候被刷掉,甚至有些根本没有机会参加面试


怎么破?


我现在的工作主要是帮助没有任何经验的开发人员找工作,所以我花了大量时间研究他们面对的问题并对他们的需求有深入的了解。我会常常和同事们讨论这些问题,我也经常去逛一些微博、编程论坛以及问答类网站,甚至在社会上进行一些调查。


我发现了一些有意思的东西,很多人都有以下的一些想法,比如:


“我觉得自己就是把教学视频里面的内容复制下来而已。”


“我一遇到问题,不会自己解决,只能去搜索看看网上有没有其他人已经写好的现成例子。我觉得自己像个三岁的孩子,想要回答微积分的难题。挫败感太强了!”


“我也想像一个优秀的程序员那样思考问题,但是总是感觉‘臣妾做不到’。”


“在学习编程的过程中,我总是感觉很困惑,因为总觉得花的时间99%是没有意义的,但有时候那些浪费掉的时间好像又有点用,真是抓狂!


从上述的回答中,你有没有发现一些问题,他们学习编程的过程十分曲折,但并不是因为他们缺乏上进心,而是他们没有足够的学习经验。事倍功半的打击可能已经深深伤害了他们的自信,痛苦的学习已经让部分人想要放弃继续从事编程工作和学习。


经过长时间的分析,我把导致这种局面的原因归结为两点“魔咒”,希望通过我的讲解,帮助新手们避免“魔咒”给学习者带来的压力和额外的压力。


魔咒一:“如果你不热爱编程,那它就不适合你。”


这句话我经常听一些新手开发人员提起,但是我是举双手反对的。


因为我觉得成为一名程序员与你是否热爱编程没有直接关系。事实上,就我的观察超过一半的专家级开发人员有时候也会讨厌编程。


不知道你是否还记得你第一次写出能够输出“hello world”的程序,是否还记得第一次完美地解决了一个问题的欣喜?是否还记得当你看到自己的代码看起来优雅、清爽、具有优秀的鲁棒性而且可以完美的解决问题的那份喜悦?


当然了,现实中打击总是比较多,美好的感受不可能时时都有,有时候甚至让人觉得很遥远。就我所知,大多数程序员在工作的时候完全没有时间去思考:如何利用依赖注入的设计模式来优雅地把类解耦,以便于将来代码库更容易维护。


当新手们遇到挫折而感到沮丧的时候,时常会问自己,我是不是真的适合编程?相信我,编程适合你。因为当你从众多推文中选择阅读这篇文章的时候,说明你在意能否更好地学习编程。


只要你在意,你就能做好。


作为一个过来人,我知道即使是那些愿意在枯燥乏味的工作上投入大量时间的人,也能听到他们对于编程工作的抱怨。如果你有时觉得自己十分讨厌编程,那并没有什么大不了的。


魔咒二:“有那么多我不知道的东西。我永远也学不完!”


这句话同样是很多童鞋的抱怨,其背后的原因显而易见。以前有人说我们出生在最好的时代,也出生在最坏的时代。说它好是因为我们可以轻松通过互联网获得海量信息,说它坏是因为IT界的知识真的是“秒”新“分”异,呈几何级增长。当你越深入了解就越会发现自己的无知,这很容易让人觉得绝望。


但是请谨记:你不需要知道所有的事情。你需要知道的仅仅是知道如何找出你不知道的东西。对于新知识,你要做的就是确保自己了解你需要学习的东西的"高级基础知识"。


我们来看一个例子。我们在教程里面学习到HTML页面中的按钮有边框,颜色,阴影和动画等属性。那么你就可以尝试使用CSS来修改按钮的样式,当你点击按钮时,如果你想页面对你有一些特殊的响应,你就需要JavaScript。因此,如果你的需求是在单击按钮时让一个图像动起来:

- 首先,必须有图像和按钮两个元素(HTML);

- 然后,定义一个特定的类,并在这个类创建动画(CSS);

- 最后,当单击按钮时,将自定义的类添加到图像中(JavaScript)。


一周后,来了一个需求,要在表单提交时,在一个图像中添加阴影。这时候你应该知道后面该怎么做。因为你对HTML、CSS和JavaScript的基础知识已经有了全面的理解,你很清楚在这个功能中它们各自负责什么。剩下的即使你忘记了具体应该怎么做,只需要用关键字在搜索引擎里面搜索一下就好了,比如“CSS添加阴影”和“JavaScript表单提交回调”。


学习编程需要时间,很难在一两周的时间内速成。刚开始学习编程的时候,养成良好的习惯,学会有效地学习尤其重要。


有些人花了很多时间去学习。与此同时,另外一些人偷懒走捷径,以为自己有了巨大进步,但实际上他们只是“照本宣科”地复制和粘贴代码,做代码的搬运工。


说到底,学习编程这件事,还是要靠自己坚持,这比什么都重要。


广告时间:刷题迷茫需要人提点?点击阅读原文加入CS501算法面试冲刺课,由BitTiger明星教师冯沁原老师亲自领衔主讲,一年内免费无限次重听!一路陪伴你拿到offer!

原文链接:

https://medium.freecodecamp.org/why-so-many-developers-quit-before-ever-getting-a-job-please-dont-1c0fd6459e5e

 
BitTiger 更多文章 如何用最通俗易懂的方式解释API是什么? 假如LinkedIn只是一个像模拟人生一样的游戏…… Airbnb Head of Data Science:一文带你看懂数据科学 明日直播|沁原带你攻克系统设计面试 网红程序员DHH的吐槽:硅谷的开放式办公室太烂了
猜您喜欢 Java大数据人才缺口高达150万,现在入行恰逢其时 iOS 从0到1搭建高可用App框架(二) 重磅 | 亿万词汇构建神经网络,Facebook提出语言模型训练新算法 数据分析合作小组 技术小黑屋:为什么程序员应该写博客?